1、nginx 配置文件
1.1、项目目录放在系统/var/www/
upstream app { # Path to Unicorn SOCK file, as defined previously server unix:/var/www/app/shared/sockets/unicorn.sock fail_timeout=0; #server 127.0.0.1:4000 fail_timeout=0; } server { listen 80; server_name app.example.cn; access_log /var/log/nginx/app_access.log; error_log /var/log/nginx/app_error.log; proxy_redirect off; root /var/www/app/public; location / { try_files $uri/index.html $uri @app; } location @app { proxy_pass http://app; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }
2、unicorn配置文件,touch config/unicorn.rb
2.1创建文件 mkdir -p shared/pids shared/sockets shared/log
app_dir = File.expand_path("../..", __FILE__) shared_dir = "#{app_dir}/shared" working_directory app_dir worker_processes 2 preload_app true timeout 30 listen "#{shared_dir}/sockets/unicorn.sock", :backlog => 64 # Logging stderr_path "#{shared_dir}/log/unicorn.stderr.log" stdout_path "#{shared_dir}/log/unicorn.stdout.log" pid "#{shared_dir}/pids/unicorn.pid" #before_fork do |server, worker| # defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! # # old_pid = "#{ server.config[:pid] }.oldbin" # unless old_pid == server.pid # begin # Process.kill :QUIT, 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 #end
3、创建unicorn启动脚本
3.1 在项目目录下面创建sh mkdir ./sh touch server_crl.sh&& vi server_crl.sh
3.2、chomd +x ./server_crl.sh
#!/bin/sh ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the unicorn app server # Description: starts unicorn using start-stop-daemon ### END INIT INFO set -e USAGE="Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>" # app settings AS_USER="ubuntu" APP_NAME="app" APP_ROOT="/var/www/$APP_NAME" ENV="production" # environment settings PATH="$PATH" CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D" PID="$APP_ROOT/shared/pids/unicorn.pid" OLD_PID="$PID.oldbin" # make sure the app exists cd $APP_ROOT || exit 1 sig () { test -s "$PID" && kill -$1 `cat $PID` } oldsig () { test -s $OLD_PID && kill -$1 `cat $OLD_PID` } run () { if [ "$(id -un)" = "$AS_USER" ]; then eval $1 else su -c "$1" - $AS_USER fi } case $1 in start) sig 0 && echo >&2 "Already running" && exit 0 echo "Starting $APP_NAME" run "$CMD" ;; stop) echo "Stopping $APP_NAME" sig QUIT && exit 0 echo >&2 "Not running" ;; force-stop) echo "Force stopping $APP_NAME" sig TERM && exit 0 echo >&2 "Not running" ;; restart|reload|upgrade) sig USR2 && echo "reloaded $APP_NAME" && exit 0 echo >&2 "Couldn‘t reload, starting ‘$CMD‘ instead" run "$CMD" ;; rotate) sig USR1 && echo rotated logs OK && exit 0 echo >&2 "Couldn‘t rotate logs" && exit 1 ;; *) echo >&2 $USAGE exit 1 ;; esac
时间: 2024-10-12 18:46:52