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






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

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

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

nginx+unicorn部署ruby web环境

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

使用Nginx+Unicorn+Capistrano+Sinatra搭建Ruby Web应用

记录一下使用如下工具搭建一个简单的Ruby Web应用的过程:工具集: Nginx — 前端服务器 Unicorn — 应用容器 Capistrano — 自动部署工具 Sinatra — 极轻量级W...
  • tong_zh_
  • tong_zh_
  • 2016年04月01日 17:27
  • 722

阿里云ECS+Gunicorn+Supervisor+Nginx部署Flask

部分内容同帖子:http://www.tuicool.com/articles/zUvqMr就讲几点不同的地方: 因为uwsgi怎么弄都会出bug,所以折腾半天后还是选择了Gunicorn,相应的S...
  • mikelkl
  • mikelkl
  • 2016年03月12日 19:28
  • 972

Gitlab 架构---unicorn

unicorn
  • kapuliyuehan
  • kapuliyuehan
  • 2015年04月18日 11:36
  • 1727

什么是Unicorn

The link什么是UnicornUnicorn是为Ruby应用程序提供的一个HTTP服务器,类似于Mongrel or Thin。它采用Mongrel的Ragel HTTP解析器,但是采用一种截然...
  • bill_yang88
  • bill_yang88
  • 2015年06月23日 21:42
  • 1001

阿里云部署Docker(5)----管理和发布您的镜像

出到这节,我在百度搜索了一下“阿里云部署Docker”,突然发现怎么会有人跟我写的一样呢?哦,原来是其他博客系统的爬虫来抓取,然后也不会写转载自什么什么的。所以,我终于明白为什么那些大咖的文章总会在文...
  • MiniMicall
  • MiniMicall
  • 2014年10月16日 15:40
  • 4407

配置Ruby环境和Sinatra框架

解决ruby环境部署和sinatra安装
  • chaz1942
  • chaz1942
  • 2015年11月03日 15:24
  • 416

nginx + unicorn 配置

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

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

今天在阿里云上配置GitLab,不过一直出现错误502错误。 502  GitLab is not responding.  Please contact your GitLab adm...
  • RodJohnsonDoctor
  • RodJohnsonDoctor
  • 2015年05月09日 22:22
  • 31559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Nginx + Unicorn 部署 Rails 完整配置
举报原因:
原因补充:

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