Nginx + Unicorn 部署 Rails 完整配置

原创 2013年12月02日 18:09:10

nginx+unicorn 完整配置,主要的是,nginx.conf 和 unicorn.rb 这两个配置文件


nginx 的源码安装 指定passenger目录

源码下载地址  http://nginx.org/en/download.html


编译源码  

./configure --prefix=/srv/nginx/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --add-module=/usr/local/rvm/gems/ruby-2.0.0-p598/gems/passenger-5.0.4/ext/nginx/


make  && make install





1.配置nginx文件          sudo vim /opt/nginx/conf/nginx.conf

#=== CPU ====
user menxu menxu;
worker_processes 4;
worker_cpu_affinity 00000001 00000010 00000100 00001000;
worker_rlimit_nofile 204800;


events {
  use epoll;
  worker_connections 204800;
}


# === HTTP ===


http{
  include      mime.types;
  default_type application/octet-stream;


  charset utf-8;


  server_names_hash_bucket_size 128;
  client_header_buffer_size     2k;
  large_client_header_buffers   4 4k;
  client_max_body_size          6m; # 单次请求数据最大允许上传尺寸


  sendfile          on;
  tcp_nopush        on;
  tcp_nodelay       on;
  keepalive_timeout 120;
  send_timeout      120;


  gzip              on;
  gzip_buffers      4 32k;
  gzip_min_length   1k;
  gzip_comp_level   2;
  gzip_http_version 1.1;
  gzip_types        text/plain application/x-javascript text/css application/xml;


  # ===== App Server
  upstream app_server{
      server unix:/tmp/unicorn_padrino.sock fail_timeout=0;
  }


  # /web/ruby/blogs
  server{
  listen          80;
  charset         utf-8;
  server_name     menxu.com;
  keepalive_timeout 5;
  
  root            /home/menxu/web/ruby/blogs/public;
  access_log      /home/menxu/web/ruby/blogs/log/nginx_access.log;
  error_log       /home/menxu/web/ruby/blogs/log/nginx_error.log;
  rewrite_log     on;
  
  try_files       $uri/index.html $uri.html $uri @app_server;
  
  location ~* ^/(images|javascripts|stylesheets|img)/{
  access_log      off;
  log_not_found   off;
  expires         max;
  break;
  }
  
  location @app_server {
  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-Forwarded-For  $proxy_add_x_forwarded_for;
  proxy_buffering  on;
  proxy_redirect  off;
  
      proxy_pass http://app_server;
  }
  }


}


2.创建 config/unicorn.rb 并 配置unicorn 文件    sudo vim /home/menxu/web/ruby/blogs/config/unicorn.rb 


# -*- encoding: utf-8 -*-
user("menxu","menxu")


root_path = File.expand_path '../', File.dirname(__FILE__)
#log
log_file = root_path + '/log/unicorn.log'
err_log  = root_path + '/log/unicorn_error.log'


# process
pid_file = '/tmp/unicorn_padrino.pid'
old_pid = pid_file + '.oldbin'


#thron
socket_file = '/tmp/unicorn_padrino.sock'


worker_processes 2
working_directory root_path
timeout 30


#listen
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


3.编写启动脚本文件  sudo vim ./blog_server.sh


1>安装wrapper 创建带环境的unicorn运行命令

rvm wrapper ruby-2.0.0-p195@blog2 bootup unicorn


2> 编辑启动脚本

#! /bin/sh
# rvm wrapper ruby-2.0.0-p195@blog2 bootup unicorn
UNICORN=/home/menxu/.rvm/bin/bootup_unicorn
CONFIG_FILE=/home/menxu/web/ruby/blogs/config/unicorn.rb
APP_HOME=/home/menxu/web/ruby/blogs


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|top|restart|force-reload" >&2
  exit 3
  ;;
esac

4.启动命令

sudo ln -s ~/nginx.conf /etc/nginx/conf.d/unicorn.conf # 关联配置
chmod +x ./one.sh # 执行权限
./blog_server.sh # 启动unicorn
sudo service nginx start



5.网站优化搜集

关于Nginx的一些优化(突破十万并发)

http://www.howtocn.org/nginx:%E9%85%8D%E7%BD%AE%E4%B8%80%E4%B8%AA%E9%AB%98%E6%80%A7%E8%83%BD%E7%9A%84nginx_fastcgi%E6%9C%8D%E5%8A%A1%E5%99%A8


6.其他的配置

Nginx一个IP配置多个主机    http://blog.csdn.net/ygrx/article/details/9295673


7. 书籍  深入理解Nginx (模块开发与架构设计)

http://www.ppurl.com/pdfpreview/?skey=UFUHNgUrUyZXMQdsA19TPAUnAGQNYAdjVTUCNgQ8AGc%3D&page=0






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

nginx+unicorn部署ruby web环境

最近接手了一个ruby的web项目,由于之前没有接触过ruby以及相关的web开发,而且项目当中文档缺失,所以在部署该项目的时候很是走了一些弯路。最后参照多篇ruby on rails的开发环境部署,...

nginx + unicorn 配置

1.Nginx介绍 Nginx是一个非常轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP...
  • Richar1
  • Richar1
  • 2015年08月10日 16:05
  • 525

Unicorn使用简介

原文:点击打开链接 Unicorn 是什么? 为 Rack 应用程序设计的 HTTP server 是一个利用Unix的高级特性开发的 为具备低延迟,高带宽的连接的客户服务 ...

nginx各版本变化说明

from: http://nginx.org/en/CHANGES 使用nginx cache,想要配置cache数据自动清理时间,发现一个参数 clean_time ,但发现很早这个参数就从稳定版...

我所遇到的GitLab 502问题的解决

今天在阿里云上配置GitLab,不过一直出现错误502错误。 502  GitLab is not responding.  Please contact your GitLab adm...

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

要将dashboard部署到服务器上,我们还需要一个服务器用于运行ruby程序,这里用到的是unicorn。 Unicorn 配置 这个世界让人联想起部署python时用到的gunicorn,下面这...
  • gmszone
  • gmszone
  • 2014年02月17日 18:21
  • 2199

nginx + rails完整版配置文件

nginx+rails 发布配置文件

部署/配置 Rails+Nginx+Passenger

Install ruby on rails on CentOS 不用apache,让我们换nginx玩玩;由于passenger的nginx模块安装的时候需要重新编译nginx,所以 pac...

Rails Production Server @ Nginx + Postgresql + Ubuntu 使用git远程部署 配置

貌似Heroku的herokuapp.com在国内访问既慢又不稳定,所以不得已需要自己搭建一台production服务器。我们的目标是和Heroku类似,直接能够从开发环境部署并运行。虽然貌似文档很多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Nginx + Unicorn 部署 Rails 完整配置
举报原因:
原因补充:

(最多只允许输入30个字)