cd /www/itservice
rvm wrapper 1.9.3@itservice itservice unicorn
создает враппер совместимый с rc.d
Пришлось поправить ссылку на git:
sudo ln -nfs /usr/local/bin/git /usr/bin/git
как описано здесь:
http://ficial.wordpress.com/2011/07/13/phusion-passenger-fixing-no-such-file-or-directory-git-ls-files/
в итоге в rc.d
#
# Add the following lines to /etc/rc.conf to enable unicorn:
# unicorn_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable unicorn
# unicorn_profiles (str): Set to "" by default.
# Define your profiles here.
# unicorn_flags (str): Set to "" by default.
# Extra flags passed to start command.
. /etc/rc.subr
name="unicorn"
rcvar=`set_rcvar`
pidfile="/www/itservice/shared/pids/unicorn.pid"
unicorn_flags="-c /www/itservice/current/config/unicorn/colo.rb -E production -D"
start_cmd="unicorn_start"
command="/usr/local/rvm/bin/itservice_unicorn"
#pidprefix="/var/run/unicorn"
[ -z "$unicorn_enable" ] && unicorn_enable="NO"
load_rc_config $name
unicorn_start() {
echo "Starting ${name}"
${command} ${unicorn_flags}
}
extra_commands="reload"
sig_reload="USR2"
run_rc_command "$1"
и в config/unicorn/colo.rb
deploy_to = "/www/itservice"
app_path = "#{deploy_to}/current"
shared_path = "#{deploy_to}/shared"
pid_file = "#{shared_path}/pids/unicorn.pid"
socket_file= "#{shared_path}/pids/unicorn.sock"
rails_root = "#{deploy_to}/current"
# Set unicorn options
worker_processes 1
preload_app true
timeout 180
listen "127.0.0.1:9000"
# listen socket_file
# Spawn unicorn master worker for user apps (group: apps)
user 'nexus', 'nexus'
# Fill path to your app
working_directory app_path
# Should be 'production' by default, otherwise use other env
rails_env = ENV['RAILS_ENV'] || 'production'
# Log everything to one file
stderr_path "log/unicorn.log"
stdout_path "log/unicorn.log"
# Set master PID location
pid "#{shared_path}/pids/unicorn.pid"
before_fork do |server, worker|
ActiveRecord::Base.connection.disconnect!
old_pid = "#{server.config[:pid]}.oldbin"
if File.exists?(old_pid) && server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
# someone else did our job for us
end
end
end
after_fork do |server, worker|
ActiveRecord::Base.establish_connection
end
Комментариев нет:
Отправить комментарий