MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
インストール - Redmineのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
インストール - Redmine
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Redmineとは、課題管理や情報共有の機能を備えるプロジェクト運営を支援するためのオープンソースソフトウェアである。<br> 誰でも自由にRedmineをダウンロードし、インストールして利用することができる。<br> <br> Webアプリケーションとして動作するシステムであるため、Redmineが稼働している環境があり、Webブラウザがあれば、他にソフトウェアをインストールすることなく使用できる。<br> また、情報が1ヶ所に集約されていますので、どこからでもアクセスでき、複数のメンバでも使用することもできる。<br> <br> Redmineは、ソフトウェア開発プロジェクトとの親和性が高く、SubversionやGit等のバージョン管理システムと連携できる。<br> Redmine自体の開発プロジェクトもRedmineで管理されており、他のソフトウェアでも利用されている。<br> <br> Redmineが役立つ場面はソフトウェア開発だけではなく、様々な種類の事業プロジェクト、イベント開催、組織の日常的なタスク管理、顧客の問い合わせ対応の管理、社内業務フローの運用等、広範囲に活用できる。<br> <br> 現代の業務環境では、タスクの管理やチーム内のコミュニケーションを効率的に行うことが求められるため、<br> 特にリモートワークの普及や複数のチームとの協業が当たり前となる中において、適切なツールの導入は業務の質を大きく向上させる要因となる。<br> <br> Redmineはそのような状況に最適なツールである。<br> <br><br> == Redmineの主な機能 == * チケット *: Redmineの中核機能は、チケットを使用した課題や問題の追跡管理機能である。 *: やるべき作業をチケットとして登録する。 *: 課題、タスク、バグ等のしなければならない物事をチケットに登録して、作業を進めたらチケットを更新する。 *: チケットには担当者や期日を設定できるため、誰がどのタスクをいつまでにしなければならないのか、ひと目でわかるようになる。 <br> * ガントチャート *: プロジェクトを管理するために、課題を細かい作業単位に分け、全体の作業の流れと進捗を視覚的につかめるように並べた図をガントチャートと呼ぶ。 *: Redmineはガントチャート機能を備えている。 *: チケットを登録する時に開始日と期日を入力すると、チケットが自動的にガントチャートに反映され、作業の順番、予定、進捗がひと目で確認できるようになる。 <br> * Wiki *: プロジェクトや組織に関する文書やメモ等、用途を問わず作成できる。 *: 複数のページを作成して、ページを相互にリンクすることも簡単にできる。 *: また、編集履歴が残るため、比較や復元も容易にできる。 <br> * バージョン管理システムの連携 *: SubversionやGit等のバージョン管理システムと連携できる。 *: コミットの履歴やリポジトリ内のファイルに内容等がRedmineの画面で参照できる。 *: ソフトウェア開発やシステム開発のプロジェクトを運営するときに便利な機能である。 <br><br> == Rubyのインストール == Rubyのインストールについては、[[インストール - Ruby]]のページを参照すること。<br> <br><br> == Redmineのインストール == 一般的に、最新のRedmineをインストールする。<br> Redmineは、6ヶ月ごとに新しいバージョンがリリースされており、実用的でかつ安定している。<br> リポジトリのtrunkからチェックアウトした開発版は、Ruby on Railsに精通し、かつ最新の開発に追従する必要がない限りは非推奨である。<br> <br> また、trunkは正常に動作しないこともあるため、注意が必要である。<br> <br> ==== Redmineのインストール ==== [http://redmine.jp/download/ Redmineの公式Webサイト]にアクセスして、Redmineをダウンロードする。<br> ダウンロードしたファイルを展開して、任意のディレクトリに配置する。<br> <br> ==== 空のデータベースとユーザの作成 ==== * MySQLの場合 CREATE DATABASE redmine CHARACTER SET utf8mb4; CREATE USER 'redmine'@'localhost' IDENTIFIED BY '<パスワード>'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; ※ MySQL 5.5.2以前の場合、utf8mb4ではなくutf8を指定すること。 <br> * PostgreSQLの場合 CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD '<パスワード>' NOINHERIT VALID UNTIL 'infinity'; CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine; <br> ==== データベースの接続の設定 ==== Redmineのインストールディレクトリにあるconfig/database.example.ymlファイルをコピーして、config/database.ymlファイルを作成する。<br> 次に、config/database.ymlファイルを編集して、"production"環境用のデータベースの設定を行う。<br> <br> * MySQLの場合 production: adapter: mysql2 database: <上記で作成したデータベース名 例. redmine> host: <上記で指定したホスト名 例. localhost> port: <ポート番号 例. 3306> username: <上記で作成したユーザ名 例. redmine> password: "<MySQLにおけるredmineユーザのパスワード>" encoding: utf8mb4 pool: 5 schema_search_path: public socket: <MySQLのソケットファイルのフルパス> <br> * PostgreSQLの場合 production: adapter: postgresql database: <上記で作成したデータベース名 例. redmine> host: <上記で指定したホスト名 例. localhost> username: <上記で作成したユーザ名 例. redmine> password: "<PostgreSQLにおけるredmineユーザのパスワード>" encoding: utf8 schema_search_path: <データベーススキーマ (デフォルト: public)> socket: <PostgreSQLのソケットファイルのフルパス> <br> ==== Redmineに依存するソフトウェアのインストール ==== <u>MySQL等を使用する場合、mysql2をインストールするために、~/.profileファイル等へMySQLへの環境変数<code>PATH</code>を追記する必要がある。</u><br> vi ~/.profile <br> # ~/.profileファイル export PATH="/<MySQLのインストールディレクトリ>/bin" <br> Redmineは、RubyGemの依存関係を管理するために、Bundlerを使用している。<br> そのため、まず、Bundlerをインストールする。<br> gem install bundler または sudo gem install bundler <br> Redmineのインストールディレクトリに移動して、Redmineの実行に必要な全てのgemをインストールする。<br> bundle config set --local without 'development test' bundle install または sudo bundle config set --local without 'development test' sudo bundle install <br> ==== データベースアダプタ ==== Redmineは、データベースの設定ファイルであるconfig/database.ymlファイルを読み取り、必要なデータベースアダプタを自動的にインストールする。<br> (例. mysql2のみを使用するように設定した場合は、mysql2 gemのみがインストールされる)<br> もし、config/database.ymlファイルを編集してデータベースアダプタの追加や削除を行った後は、必ず、<code>bundle install --without development test ...略</code>を実行する。<br> <br> ==== 独自の依存関係の設定 (Gemfile.local) ==== もし、Redmine本体が使用しないgem(例. puma、fcgi)もロードする場合は、Gemfile.localファイルをRedmineのインストールディレクトリに作成する。<br> これは、<code>bundle install</code>コマンド実行時にインストールされる。<br> # Gemfile.localファイル gem 'puma' <br> ==== セッションストア秘密鍵の生成 ==== Railsはセッションハイジャックを防ぐため、セッション情報を格納するcookieをエンコードしている。<br> この処理で使用されるランダムなキーを生成する。<br> bundle exec rake generate_secret_token <br> また、秘密鍵は、config/secrets.ymlファイルに格納することもできる。<br> <br> ==== データベースのテーブル等の作成 ==== データベースに、Redmineに必要なテーブルを作成する。<br> <br> <u>Redmineのインストールディレクトリに移動して</u>、以下に示すコマンドを実行する。<br> これにより、マイグレーションが1つずつ実行およびテーブルが作成されて、更に権限のデータ一式と管理者アカウント(admin)が作成される。<br> RAILS_ENV=production bundle exec rake db:migrate <br> ==== デフォルトデータ ==== デフォルトデータをデータベースに追加する。<br> RAILS_ENV=production bundle exec rake redmine:load_default_data <br> 各言語のデフォルトデータにおいて、言語の選択が求められる。<br> なお、上記のコマンドにおいて、<code>REDMINE_LANG</code>オプションを指定する場合、言語の選択を求められることなく自動的に処理が進められる。<br> RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data <br> ==== ディレクトリおよびファイルのパーミッション ==== Redmineを実行するOSのユーザーは、以下に示すディレクトリの書き込み権限が必要である。<br> * files (添付ファイルの保存ディレクトリ) * log (Redmineのログファイル @production.log@) * tmp (これらのディレクトリが無ければ作成すること) * tmp/pdf (これらのディレクトリが無ければ作成すること) * public/plugin_assets (プラグインが使用する画像やCSS) <br> 例. redmineユーザとしてソフトウェアを実行する場合 mkdir -p tmp tmp/pdf public/plugin_assets chown -R redmine:redmine files log tmp public/plugin_assets chmod -R 755 files log tmp public/plugin_assets ※注意 これらのディレクトリが既に存在する場合(バックアップからリストアした場合等)、ファイルに実行権限が不可されていないことを確認する。 find files log tmp public/plugin_assets -type f -exec chmod -x {} + <br> ==== Redmineの起動 ==== WEBrickを使用してRedmineを起動する。<br> bundle exec rails server -e production <br> WEBrickが正常に起動した後、Webブラウザから http://localhost:3000/ にアクセスする。<br> <br> デフォルトのシステム管理者アカウントは、以下の通りである。<br> * ログインID *: admin * パスワード *: admin <br> <u>※注意</u><br> <u>WEBrickは開発時に使用すものであり、通常の運用には適していないため、動作確認以外には使用しないこと。</u><br> <u>本番運用においては、Passenger(mod_rails)、FCGI、Rackサーバ(Unicorn, Thin, Puma,hellip等)の使用を推奨する。</u><br> <br><br> == NginXとの連携 == ==== NginXのインストール ==== NginXのビルドに必要なライブラリをインストールする。<br> sudo zypper install libxslt-devel pcre2-devel gd-devel libcurl-devel # Passengerを使用する場合 kernel-source kernel-devel # AIOを使用する場合 <br> 必要ならば、[https://www.openssl.org/source/ OpenSSLの公式Webサイト]にアクセスして、OpenSSL(1.X.Y)のソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf openssl-<バージョン> <br> * Digest認証モジュールを使用する場合 *: NginXのソースコードと一緒に配布されていないため、別途インストールする必要がある。<br> *: [https://github.com/atomx/nginx-http-auth-digest Digest認証モジュールのGithub]にアクセスして、ソースコードをダウンロードする。<br> *: ダウンロードしたファイルを解凍する。<br> *: <code>tar xf nginx-http-auth-digest-<バージョン>.tar.gz</code> *: <br> *: または、<code>git clone</code>コマンドを実行して、ソースコードをダウンロードする。<br> *: <code>git clone https://github.com/atomx/nginx-http-auth-digest.git</code> <br> [https://nginx.org/en/download.html NginXの公式Webサイト]にアクセスして、NginXのソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf nginx-<バージョン>.tar.xz <br> NginXおよびNginX向けPassangerをビルドおよびインストールする。<br> passenger-install-nginx-module <br> 手順が表示されるので、[Enter]キーを押下して次へ進む。<br> ビルド環境の選択では、[Ruby]を選択して、[Enter]キーを押下する。<br> <br> NginXのソースコードがあるディレクトリを入力して、[Enter]キーを押下する。<br> 次に、NginXのインストールディレクトリを入力して、[Enter]キーを押下する。<br> <br> 最後に、<code>configure</code>スクリプトのオプションを、以下に示すように指定する。<br> 改行文字(<code>\</code>)が使用できないことに注意する。<br> --sbin-path=/<NginXのインストールディレクトリ>/sbin/nginx --conf-path=/<NginXのインストールディレクトリ>/etc/nginx.conf --pid-path=/<NginXのインストールディレクトリ>/nginx.pid --modules-path=/<NginXのインストールディレクトリ>/modules/ --error-log-path=/<NginXのインストールディレクトリ>/log/error.log --http-log-path=/<NginXのインストールディレクトリ>/log/access.log --lock-path=/<NginXのインストールディレクトリ>/nginx.lock --http-client-body-temp-path=/<NginXのインストールディレクトリ>/tmp --http-proxy-temp-path=/<NginXのインストールディレクトリ>/proxy --http-fastcgi-temp-path=/<NginXのインストールディレクトリ>/fastcgi --http-uwsgi-temp-path=/<NginXのインストールディレクトリ>/uwsgi --http-scgi-temp-path=/<NginXのインストールディレクトリ>/scgi --with-perl_modules_path=/<NginXのインストールディレクトリ>/Perl --with-threads --with-file-aio --with-pcre --with-pcre-jit --with-http_v2_module --with-http_ssl_module --with-http_addition_module --with-http_realip_module --with-http_flv_module --with-http_random_index_module --with-http_degradation_module --with-http_slice_module --with-http_dav_module --with-http_mp4_module --with-http_xslt_module --with-http_xslt_module=dynamic --with-http_image_filter_module --with-http_image_filter_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_secure_link_module --with-http_stub_status_module --with-http_sub_module --with-http_perl_module --with-http_perl_module=dynamic --with-mail --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-compat --user=<任意のユーザ名 例. nginx> --group=<任意のグループ名 例. nginx> --add-module=<Digest認証モジュールのソースコードがあるディレクトリ> <br> Passengerのビルドが開始する。<br> ビルドに成功した時、<u>Passengerを組み込まれた</u>nginx.confの設定が表示される。<br> <syntaxhighlight lang="nginx"> http { # ...略 passenger_root /<NginX向けPassangerのインストールディレクトリ>/passenger-6.0.17; passenger_ruby /<Rubyのインストールディレクトリ>/bin/ruby-3_0; # ...略 } </syntaxhighlight> <br> ==== NginXの設定 ==== NginXの設定ファイル(nginx.conf)において、<code>http</code>ディレクティブに、上記の設定が記述されているか確認する。<br> vi nginx.conf <br> <syntaxhighlight lang="nginx"> # nginx.confファイル http { # ...略 passenger_root /<NginX向けPassangerのインストールディレクトリ>/passenger-6.0.17; passenger_ruby /<Rubyのインストールディレクトリ>/bin/ruby-3_0; # ...略 } </syntaxhighlight> <br> ==== 仮想ホストの構築 ==== NginXの設定ファイル(nginx.conf)において、<code>http</code>ディレクティブに、以下に示す設定を記述する。<br> vi nginx.conf <br> <syntaxhighlight lang="nginx"> # nginx.confファイル http { # ...略 include /<NginXのインストールディレクトリ>/etc/conf.d/*.conf; include /<NginXのインストールディレクトリ>/etc/vhosts.d/*.conf; # ...略 } </syntaxhighlight> <br> 次に、NginXの仮想ホストファイルを作成する。<br> vi /<NginXのインストールディレクトリ>/etc/vhosts.d/redmine.conf <br> <syntaxhighlight lang="nginx"> # /<NginXのインストールディレクトリ>/etc/vhosts.d/redmine.confファイル # Ruby Application server Unicorn upstream redmine { server unix:/<Redmineのインストールディレクトリ>/tmp/sockets/unicorn.sock; } server { listen 80; server_name redmine; root /<Redmineのインストールディレクトリ>/public; passenger_enabled on; client_max_body_size 10m; # Max attachemnt size # for redmine + unicorn location / { alias /<Redmineのインストールディレクトリ>/public; try_files $uri/index.html $uri.html $uri @redmine; } location @redmine { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 600; proxy_pass http://redmine; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } </syntaxhighlight> <br> ==== httpsの使用 ==== 自己証明書を作成する。<br> * 秘密鍵の作成(パスフレーズなし) *: ファイル名: server.key *: <code>openssl genrsa -out server.key 2048</code> *: <br> * 証明書署名要求(CSR: Certificate Signing Request)の作成 *: ファイル名: server.csr *: <code>openssl req -utf8 -new -key server.key -out server.csr</code> *: 以下に示す項目を入力する。 *: <br> *: Country Name (2 letter code) [XX]: <--- 国(ジャップならばJP) *: State or Province Name (full name) []: <--- 県 *: Locality Name (eg, city) [Default City]: <--- 市 *: Organization Name (eg, company) [Default Company Ltd]: <--- 会社・組織 *: Organizational Unit Name (eg, section) []: <--- 部門(未入力可) *: Common Name (eg, your name or your server's hostname) []:alfa.torutk.com <--- サーバドメイン名(未入力可) *: Email Address []: <--- 管理者メール(未入力可) *: *: Please enter the following 'extra' attributes to be sent with your certificate request *: A challenge password []: <-- (未入力可) *: An optional company name []: <-- (未入力可) *: <br> * ubject Alternative Name(SAN)情報の作成 *: ファイル名: san.txt *: まず、最近のWebブラウザでは、Subject Alternative Name(SAN)を含めないとアクセスができないため、SAN情報をテキストファイルに記述する。 *: また、ワイルドカードを使用して、複数のホスト名に対応させることもできる。 *: <code>vi san.txt</code> *: <br> *: <code># san.txtファイル</code> *: <code>subjectAltName = DNS:*.torutk.com</code> *: <br> * 自己署名証明書の作成 *: ファイル名: server.crt *: <code>openssl x509 -in server.csr -out server.crt -extfile san.txt -req -signkey server.key -days 3650</code> <br> 上記で作成した秘密鍵と自己署名証明書を、任意の場所に配置する。<br> * server.key * server.crt <br> Nginx設定ファイルの作成または編集する。<br> vi nginx.conf <br> <syntaxhighlight lang="nginx"> # nginx.confファイル upstream unicorn { server unix:/<Redmineのインストールディレクトリ>/tmp/unicorn.sock; } server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; } server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name _; root /<Redmineのインストールディレクトリ>/public; ssl_certificate "<自己署名証明書ファイルのパス 例. /etc/pki/nginx/server.crt">; ssl_certificate_key "<秘密鍵ファイルのパス 例. /etc/pki/nginx/private/server.key">; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on; include <Nginxの設定ファイル群があるディレクトリ 例. /etc/nginx/conf.d/*.conf>; client_max_body_size 10m; location / { try_files $uri/index.html $uri.html $uri @redmine; } location @redmine { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_connect_timeout 60; proxy_read_timeout 60; proxy_send_timeout 600; proxy_pass http://redmine; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } </syntaxhighlight> <br><br> == Apache2との連携 == ==== Phusion Passengerとは ==== Railsシステムを実行するためのApacheモジュールである。<br> <br> ==== メリット ==== Redmine等のRuby on RailsシステムをPhusion Passenger([http://www.modrails.com/ mod_rails for Apache])を使用して、Apache上で稼働させる。<br> これにより、運用の簡素化、複数インスタンスを並列稼働させることによるレスポンスの改善が期待できる。<br> <br> 特徴<br> * Apache2を起動するだけでRailsシステムが使用できる。<br>Apache2のモジュールとして実装されており、別途デーモンを起動する必要が無い。<br>Railsシステム用の起動スクリプトは不要である。 * TCPポートを消費しない。 * Railsシステムのデプロイが簡素化される。(PHPのように、ファイルのアップロードのみで出来る) * サーバのメモリが節約できる。<br>Railsインスタンスは必要なタイミングで生成する。<br>また、一定時間アクセスがなければ、インスタンスを終了させる。 <br> ==== 手順 ==== インストール手順は、次の通りである。<br> * ビルドに必要なライブラリをインストールする。 * Ruby向けにPassengerをインストールする。 * Apache2向けのPassangerモジュールをビルドする。 * httpd.confを変更する。 * 仮想ホストとして構築する場合は、仮想ホストファイルを作成する。 <br> ==== ビルドに必要なライブラリのインストール ==== sudo zypper install libcurl-devel <br> ==== Ruby向けPassengerのインストール ==== gem install passenger <br> ==== Apache2向けPassangerモジュールのビルド ==== Apache2をソースコードからビルドおよびインストールしている場合、環境変数APXS2および環境変数PATHを手動で設定する必要がある。<br> これにより、Apache2のヘッダファイル、APRを探索してインストールすることができる。<br> <br> # ~/.profileファイル export APXS2=/<Apache2のインストールディレクトリ>/bin/apxs export PATH=/<Apache2のインストールディレクトリ>/bin:$PATH <br> Apache2向けのPassangerモジュールをビルドする。<br> passenger-install-apache2-module <br> 手順が表示されるので、[Enter]キーを押下して次へ進む。<br> ビルド環境の選択では、[Ruby]を選択して、[Enter]キーを押下する。<br> Passengerのビルドが開始する。<br> <br> ビルドに成功した時、Passengerを組み込むためのhttpd.confの設定が表示される。<br> # 出力例 LoadModule passenger_module /<Rubyのインストールディレクトリ>/lib64/ruby/gems/<Rubyのバージョン>/gems/passenger-<Passengerのバージョン>/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /<Rubyのインストールディレクトリ>/lib64/ruby/gems/<Rubyのバージョン>/gems/passenger-<Passengerのバージョン> PassengerDefaultRuby /<Rubyのインストールディレクトリ>/bin/ruby </IfModule> <br> ==== Apache2の設定 (httpd.confファイルの変更) ==== Apache2の設定ファイル(httpd.conf)において、上記セクションに記述したPassengerを組み込むための設定を追記する。<br> <syntaxhighlight lang="apache"> # httpd.confファイル (設定例) # ...略 LoadModule passenger_module /<Rubyのインストールディレクトリ>/lib64/ruby/gems/<Rubyのバージョン>/gems/passenger-<Passengerのバージョン>/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /<Rubyのインストールディレクトリ>/lib64/ruby/gems/<Rubyのバージョン>/gems/passenger-<Passengerのバージョン> PassengerDefaultRuby /<Rubyのインストールディレクトリ>/bin/ruby </IfModule> </syntaxhighlight> <br> ==== 仮想ホストとして構築する場合 ==== <syntaxhighlight lang="apache"> # vhost-redmine.confファイル (設定例) <VirtualHost *:80> ServerName redmine # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. DocumentRoot /<Redmineのインストールディレクトリ>/public # if not specified, the global error log is used ErrorLog /<Redmineのインストールディレクトリ>/log/redmine-error_log CustomLog /<Redmineのインストールディレクトリ>/log/redmine-access_log combined # don't loose time with IP address lookups HostnameLookups Off # needed for named virtual hosts UseCanonicalName Off # configures the footer on server-generated documents ServerSignature On # Redmineの画像ファイルおよびCSSファイル等へのアクセスを許可する設定 # Apache 2.4のデフォルトではサーバ上の全ファイルへのアクセスが禁止されている <Directory "/<Redmineのインストールディレクトリ>/public"> # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. Options Indexes FollowSymLinks # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit AllowOverride None # Controls who can get stuff from this server. Require all granted </Directory> </VirtualHost> </syntaxhighlight> <br><br> == Unicornの設定 == ==== Unicornとは ==== Unicornは、Ruby on RailsアプリケーションのためのUnicorn Webサーバ(Rackサーバ)である。<br> HTTPサーバであり、高速かつスケーラブルなWebアプリケーションを提供することを目的としており、Redmineを効率的かつスムーズに実行するために使用される。<br> <br> Unicornは、Unicorn WebサーバとRedmineを統合することにより、Redmineをよりスムーズかつ安定した方法で実行することができる。<br> これにより、Redmineを使用するユーザは、より優れたパフォーマンスと高い可用性を得ることができる。<br> <br> ==== Unicornのインストール ==== UnicornはRubyモジュール(gem)として提供されているため、bundlerでインストールする。<br> Redmineをインストールしたディレクトリに移動して、Gemfile.localファイルを作成する。<br> cd <Redmineのインストールディレクトリ> vi Gemfile.local <br> # /<Redmineのインストールディレクトリ>/Gemfile.local gem "unicorn" <br> Unicornをインストールする。<br> bundle update <br> ==== 単独起動 ==== Unicornは、マスタープロセス1つにワーカープロセスが複数という構成で実行する。<br> <br> Unicornを起動して、Redmineの動作を確認する。<br> bundle exec unicorn_rails -l 3000 -E production <br> Webブラウザから http://localhost:3000 にアクセスして、動作を確認する。<br> <br> 各オプションを、以下に示す。<br> * --listen -l <[アドレス:]ポート> *: ソケットのエンドポイントを指定 * --config-file -c <ファイル> *: 設定ファイルを指定 * -D *: デーモンプロセス起動指定 * -E <RAILS_ENV> *: production等を指定 <br> Unicornの終了手順を、以下に示す。<br> * フォアグラウンドプロセスとして起動した場合 *: [Ctrl] + [C]キーを同時押下して停止する。 * デーモンプロセスとして起動した場合 *: シグナルINT(強制終了)またはQUIT(グレースフル停止)をマスタープロセスに送信する。 *: シグナルINTは、ワーカープロセスを終了させて自らも終了する。 <br> ==== 設定ファイル(unicorn.rb)の作成 ==== Redmineのインストールディレクトリに移動して、configディレクトリにunicorn.rbファイルを作成する。<br> cd /<Redmineのインストールディレクトリ>/config vi unicorn.rb <br> <syntaxhighlight lang="ruby"> # /<Redmineのインストールディレクトリ>/config/unicorn.rb # -*- coding: utf-8 -*- # 応答性を良好に保つには、コア数以上のワーカーを指定する # ただし、仮想環境では、CPU使用率とメモリ使用量を見ながらワーカー数を許容範囲まで増やす worker_processes 2 # リクエスト待ち受け口 # TCPとUNIXドメインとが指定可能 # 複数のプロトコルを列挙することで複数のプロトコルおよびポートを扱うことができる ## UNIXドメインソケットを使用する場合 listen "/<Redmineのインストールディレクトリ>/tmp/sockets/unicorn.sock", :backlog => 32 ## TCPソケットを使用する場合 #listen 8080, :tcp_nopush => true timeout 30 pid "/<Redmineのインストールディレクトリ>/tmp/pids/unicorn.pid" stderr_path '/<Redmineのインストールディレクトリ>/log/unicorn.stderr.log' stdout_path '/<Redmineのインストールディレクトリ>/log/unicorn.stdout.log' # マスタープロセス起動時にアプリケーションをロードする(true時) # ワーカープロセス側でロードをしないのでメモリ消費、応答性良好になる # ただし、ソケットはfork後に開きなおす必要あり # HUPシグナルでアプリケーションはロードされない preload_app true # unicornと同一ホスト上のクライアントとのコネクション限定で、維持されているかをアプリケーションを呼ぶ前にチェックする check_client_connection false before_fork do |server, worker| # Railsでpreload_appをtrueにしているときは強く推奨 defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! # new master phase out the old master old_pid = "#{server.config[:pid]}.oldbin" if old_pid != server.pid begin sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU Process.kill(sig, File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker| # Railsでpreload_appをtrueにしているときは必須 defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end </syntaxhighlight> <br> * listen ** backlog **: ワーカーが作業中であっても、コネクションのリクエストを受理して待機しておくことができる個数である。 **: デフォルトは、1024である。 **: 例えば、1件平均30[mS]で捌く処理に対して1000個バックログによる待ちがある時、新たにリクエストした処理は結果が返るまで30[S]待たされることになる。 **: その場合、コネクションを受け付けずにエラーにした方がよいということがある。 **: <br> ** tcp_nopush **: TCP_CORK(Linux)を制御する。 **: デフォルトは、<code>false</code>である。 **: <code>true</code>にする場合、TCPフレームの断片が小出しに送られることを抑止するため、リモートにあるNginXのタスクを早めに起こさずに済ませる。 *: <br> * timeout *: ワーカーがこの時間[秒]以上処理に費やす時はプロセスを落とす。 *: デフォルトは、60秒である。 *: 大抵の処理は60秒以内に完了するが、それ以上に時間の掛かる処理がある場合は処理時間に応じて値を増やす。 *: <br> *: 例えば、サイズの大きい添付ファイルのアップロードおよびダウンロードが該当する。 *: 添付ファイルのサイズ上限のファイルを実際にアップロードおよびダウンロードすることにより、それに掛かる時間を計測して、許容できる処理時間を設定する。 *: <br> *: ここで、Unicornのタイムアウト値とNginXのタイムアウト値が不整合だと動作が不安定となるため、両者のタイムアウト値を整合させるようにする。 *: (例. Unicornのタイムアウト値 + αをNginXのタイムアウト値にする。この時、αは1〜2秒程度等) *: <br> * pid *: Unicornを起動した時、そのプロセスIDを記録しておくファイルを指定する。 *: <br> * stderr_path および stdout_path *: Redmineのインストールディレクトリ下のlogディレクトリにログファイルを生成する。 *: <br> * preload_app *: <code>true</code>に設定する場合、マスタープロセス起動時にアプリケーションをロードして、ワーカープロセスをフォークするとアプリケーションが実行可能となる。 *: 複数のワーカープロセスでコードを共有するため、メモリ使用効率が良くなる。 *: <u>デメリットは、ワーカープロセスを再起動してもアプリケーションはロードされないことである。</u> *: <br> * before_fork *: ワーカープロセスをフォークする前に、マスタープロセスによって呼ばれる。 *: USR2シグナルで新旧マスタープロセスが共存する場合、旧マスタープロセスにQUITシグナルを送信して終了させる。 *: <br> * after_fork *: ワーカープロセスがフォークされた後に呼び出される。 <br> Unicornの設定ファイルを使用して、Unicornを起動する。<br> cd /<Redmineのインストールディレクトリ> bundle exec unicorn_rails -c config/unicorn.rb -E production <br> ==== Unicornのサービスユニットファイルの作成 ==== * [Unit]セクション ** Afterキー **: Redmine(Unicorn)は、起動時にデータベースに接続できない場合は、エラーとなる。 **: そのため、mysql.serviceまたはmariadb.serviceを実行した後に、redmine-unicorn.serviceが起動するように順序を指定する。 *: <br> * [Service]セクション ** Userキー および Groupキー **: 起動プロセスの実行ユーザおよびグループを指定する。 **: Systemdサービスで<code>ExecStart</code>により実行したプロセスの実行ユーザおよびグループをroot以外にする場合は指定する。 **: <br> ** WorkingDirectory **: Redmineのインストールディレクトリを、実体パス(SELinuxを使用している場合は、シンボリックリンクは不可)で指定する。 **: <br> ** PIDFile **: UnicornのプロセスIDファイルを、実体パス(SELinuxを使用している場合は、シンボリックリンクは不可)で指定する。 **: <br> ** PermissionsStartOnly **: <code>true</code>を指定する場合、<code>User</code>キーおよび<code>Gourp</code>を指定していたとしても、<code>ExecStartPre</code>キーの値は、root権限で実行される。 <br> sudo vi /etc/systemd/system/redmine-unicorn.service <br> <syntaxhighlight lang="ini"> # /etc/systemd/system/redmine-unicorn.serviceファイル [Unit] Description=Redmine Unicorn Server # MySQLおよびMariaDBを通常インストールした場合 After=mysqld.service [Service] User=<ユーザ名> Group=<グループ名> WorkingDirectory=<Redmineのインストールディレクトリ> Environment=RAILS_ENV=production SyslogIdentifier=redmine-unicorn PIDFile=/<Redmineのインストールディレクトリ>/tmp/pids/unicorn.pid # MySQLおよびMariaDBを任意のインストールディレクトリにインストールした場合 ExecStartPre=/<MySQLまたはMariaDBのインストールディレクトリ>/support-files/mysql.server start # Rubyを通常インストールした場合 ExecStart=/<Rubyのインストールディレクトリ>/bin//bundle exec "/<Rubyのインストールディレクトリ>/unicorn_rails -c config/unicorn.rb -E production -D" # Rubyを任意のインストールディレクトリにインストールした場合 ExecStart=/bin/bash -c "PATH=/<Rubyのインストールディレクトリ>/bin:$PATH /<Rubyのインストールディレクトリ>/bin/bundle exec /<Rubyのインストールディレクトリ>/bin/unicorn_rails -c config/unicorn.rb -E production -D" ExecStop=/usr/bin/kill -QUIT $MAINPID # MySQLおよびMariaDBを任意のインストールディレクトリにインストールした場合 ExecStopPost=/<MySQLまたはMariaDBのインストールディレクトリ>/support-files/mysql.server stop ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:Web]]
インストール - Redmine
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse