「インストール - Redmine」の版間の差分

ナビゲーションに移動 検索に移動
331行目: 331行目:
  </VirtualHost>
  </VirtualHost>
  </syntaxhighlight>
  </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>
オプションを付加して、Unicornを起動する。<br>
cd /<Redmineのインストールディレクトリ>
bundle exec unicorn_rails -c config/unicorn.rb -E production
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]]

案内メニュー