転載・引用について

ユーザ用ツール

サイト用ツール


tweet:2016:0307_01

Unicorn

Redmineを建てる際に、unicornで少しハマったので、記録として。

世に流通しているUnicornの設定において、起動後ProcessのUID/GIDを変える設定で正しく動くものが見つからなかった。

これは、どうやら、Unicornが5.0に上がった際に、Codeが変更されたためらしい。

したがって、Unicorn 5.0以降(試したのは5.0.1)のものを利用する場合には、以下のCodeを参照し、適切に修正すること。

unicorn.rb
# -*- coding: utf-8 -*-
# Unicorn Configuration File for Redmine
#       http://unicorn.bogomips.org/examples/unicorn.conf.rb
 
$unicorn_user = "redmine"
$unicorn_group = "redmine"
 
@dir = "/some/where/redmine"
working_directory @dir
worker_processes 2
 
listen "/var/run/unicorn.sock", :backlog => 32
 
timeout 30
 
pid "/var/run/unicorn.pid"
stdout_path File.expand_path("log/unicorn.stdout.log", @dir)
stderr_path File.expand_path("log/unicorn.stderr.log", @dir)
 
preload_app true
 
check_client_connection false
 
GC.respond_to?(:copy_on_write_friendly=) && GC.copy_on_write_friendly = true
 
before_fork do |server, worker|
  defined?(ActiveRecord::Base) and
      ActiveRecord::Base.connection.disconnect!
 
  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|
  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
  begin
    worker.user($unicorn_user,$unicorn_group)
  rescue => ex
    STDERR.puts "could not change user, oh well"
    STDERR.puts ex.to_s
    raise ex
  end
end

とても助かりました。ありがとう → ran

このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
tweet/2016/0307_01.txt · 最終更新: 2016/03/07 20:13 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki