歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> unicorn+nginx+centos部署及服務器配置

unicorn+nginx+centos部署及服務器配置

日期:2017/3/1 13:35:58   编辑:關於Linux
要將dashboard部署到服務器上,我們還需要一個服務器用於運行ruby程序,這裡用到的是unicorn。

Unicorn 配置

這個世界讓人聯想起部署python時用到的gunicorn,下面這些來自於網上。

Unicorn

為 Rack 應用程序設計的 HTTP server是一個利用Unix的高級特性開發的為具備低延遲,高帶寬的連接的客戶服務原文http://www.phodal.com/blog/unicorn-nginx-ruby-centos-deploy-configure/

安裝Unicorn

gem install unicorn

配置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

配置nginx

用到的也就是在前面學用的代理
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

:
Copyright © Linux教程網 All Rights Reserved