|
# -*- coding: utf-8 -*-
|
|
# Unicorn設定ファイル
|
|
|
|
# ワーカープロセスの数。1ワーカーで1つのリクエストを処理する。
|
|
# ワーカー数が上限に達すると、先行するリクエストが完了するまで待ちとなる。
|
|
worker_processes 2
|
|
|
|
# リクエスト待ち受け口、TCPとUNIXドメインとが指定可能。
|
|
listen "/tmp/unicorn_redmine.sock", :backlog => 32
|
|
listen 8282, :tcp_nopush => true
|
|
|
|
# タイムアウト秒数
|
|
timeout 30
|
|
|
|
# 稼働中のプロセスのPIDを書いておくファイル。
|
|
pid "tmp/pids/unicorn.pid"
|
|
|
|
# デーモンで起動すると標準出力/標準エラー出力が/dev/nullになるので、
|
|
# それぞれログファイルに出力する。
|
|
stderr_path 'log/unicorn.stderr.log'
|
|
stdout_path '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!
|
|
end
|
|
|
|
after_fork do |server, worker|
|
|
# Railsでpreload_appをtrueにしているときは必須
|
|
defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
|
|
|
|
begin
|
|
uid, gid = Process.euid, Process.egid
|
|
user, group = "redmine", "redmine"
|
|
ENV['HOME'] = "/home/redmine"
|
|
target_uid = Etc.getpwnam(user).uid
|
|
target_gid = Etc.getgrnam(group).gid
|
|
if uid != target_uid or gid != target.gid
|
|
Process.initgroups(user, target_gid)
|
|
Process::GID.change_privilege(target_gid)
|
|
Process::UID.change_privilege(target_uid)
|
|
end
|
|
rescue => e
|
|
if ENV['RAILS_ENV'] == 'development'
|
|
STDERR.puts "could not change user, oh well"
|
|
else
|
|
STDERR.puts "could not change user, oh well"
|
|
raise e
|
|
end
|
|
end
|
|
end
|
|
|