Blog

Blog

PHODAL

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

要将dashboard部署到服务器上,我们还需要一个服务器用于运行ruby程序,这里用到的是unicorn。

Unicorn 配置

这个世界让人联想起部署python时用到的gunicorn,下面这些来自于网上。

Unicorn

  1. 为 Rack 应用程序设计的 HTTP server
  2. 是一个利用Unix的高级特性开发的
  3. 为具备低延迟,高带宽的连接的客户服务

安装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

:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签