码迷,mamicode.com
首页 > 系统相关 > 详细

rails+unicorn+nginx配置、shell启动脚本

时间:2015-11-13 13:20:45      阅读:402      评论:0      收藏:0      [点我收藏+]

标签:

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


rails+unicorn+nginx配置、shell启动脚本

标签:

原文地址:http://my.oschina.net/u/923974/blog/529813

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!