gem install unicorn
# -*- 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
upstream app_server { server unix:/tmp/unicorn_padrino.sock fail_timeout=0; } server { listen 80; charset utf-8; server_name dashboard.phodal.com; keepalive_timeout 5; root /home/www/iot-dashboard; access_log /home/www/iot-dashboard/log/nginx_access.log; error_log /home/www/iot-dashboard/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=unicorn CONFIG_FILE=/home/www/iot-dashboard/config/unicorn.rb APP_HOME=/home/www/iot-dashboard 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 :