nginx + unicorn + padrino on ubuntu
# sudo ln -s ~/nginx.conf unicorn.conf | |
upstream app_server { | |
server unix:/tmp/unicorn_padrino.sock fail_timeout=0; | |
} | |
server { | |
listen 80; | |
charset utf-8; | |
server_name db.innshine.com; | |
keepalive_timeout 5; | |
root /home/innshine/one/public; | |
access_log /home/innshine/one/log/nginx_access.log; | |
error_log /home/innshine/one/log/nginx_error.log; | |
rewrite_log on; | |
location ~* ^/(images|javascripts|stylesheets|img)/ { | |
access_log off; | |
log_not_found off; | |
expires max; | |
break; | |
} | |
location / { | |
proxy_set_header Host $host; | |
proxy_set_header X-Forwarded-Host $host; | |
proxy_set_header X-Forwarded-Server $host; | |
proxy_set_header X-Real-IP $remote_addr; | |
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; | |
proxy_buffering on; | |
proxy_redirect off; | |
if (!-f $request_filename) { | |
proxy_pass http://app_server; | |
break; | |
} | |
} | |
} |
#!/bin/sh | |
# rvm wrapper ruby-1.9.3-p194 bootup | |
UNICORN=/home/innshine/.rvm/bin/bootup_unicorn | |
CONFIG_FILE=/home/innshine/one/config/unicorn.rb | |
APP_HOME=/home/innshine/one | |
case "$1" in | |
start) | |
$UNICORN -c $CONFIG_FILE -E production -D | |
;; | |
stop) | |
kill -QUIT `cat /tmp/unicorn_padrino.pid` | |
;; | |
restart|force-reload) | |
kill -USR2 `cat /tmp/unicorn_padrino.pid` | |
;; | |
*) | |
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 | |
exit 3 | |
;; | |
esac | |
: |
# -*- encoding: utf-8 -*- | |
root_path = File.expand_path '../', File.dirname(__FILE__) | |
# 日志 | |
log_file = root_path + '/log/unicorn.log' | |
err_log = root_path + '/log/unicorn_error.log' | |
# 进程标识 | |
pid_file = '/tmp/unicorn_padrino.pid' | |
old_pid = pid_file + '.oldbin' | |
# 通道 | |
socket_file = '/tmp/unicorn_padrino.sock' | |
worker_processes 6 | |
working_directory root_path | |
timeout 30 | |
# 侦听 | |
listen 8080, tcp_nopush: false | |
listen socket_file, backlog: 1024 | |
pid pid_file | |
stderr_path err_log | |
stdout_path log_file | |
preload_app true | |
before_exec do |server| | |
ENV['BUNDLE_GEMFILE'] = root_path + '/Gemfile' | |
end | |
before_fork do |server, worker| | |
if File.exists?(old_pid) && server.pid != old_pid | |
begin | |
Process.kill('QUIT', File.read(old_pid).to_i) | |
rescue Errno::ENOENT, Errno::ESRCH | |
puts "Send 'QUIT' signal to unicorn error!" | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment