Skip to content

Instantly share code, notes, and snippets.

@mimosz
Created August 31, 2012 01:59
Show Gist options
  • Star 37 You must be signed in to star a gist
  • Fork 25 You must be signed in to fork a gist
  • Save mimosz/3547765 to your computer and use it in GitHub Desktop.
Save mimosz/3547765 to your computer and use it in GitHub Desktop.
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