Skip to content

Instantly share code, notes, and snippets.

@kewinwang
Forked from mimosz/nginx.conf
Created April 16, 2013 09:07

Revisions

  1. Howl Wong created this gist Aug 31, 2012.
    40 changes: 40 additions & 0 deletions nginx.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    # 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;
    }
    }

    }
    23 changes: 23 additions & 0 deletions one.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    #!/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

    :
    38 changes: 38 additions & 0 deletions unicorn.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    # -*- 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