美文网首页
nginx + unicorn + capistrano 部署

nginx + unicorn + capistrano 部署

作者: 杜小龙 | 来源:发表于2014-06-14 10:45 被阅读429次

    原来部署的时候是用nginx + passenger,其实那个时候部署原理也不是很懂,就是照着那个教程来就给部署上去了。
    以至于最开始连nginx 与 unicorn 的区别是什么都不知道,心想尼玛部署不是只要用个nginx就好了吗?怎么又跑出个unicorn来。
    通过万能的google,nginx是一个http server而unicorn是一个app server,换句话说,就是我们的app是跑在unicorn上面的,而nginx是负责处理http请求的。
    如下图:


    好吧,知道了它的工作流程,下面说下配置文件的编写。好吧,我得承认原来nginx配置文件的时候也是照抄别人的,然后具体意思也不是很懂。。。。
    先说下nginx配置文件

    server {
      listen 80; 
      server_name wx.ejianfei.com;
      root /var/apps/wx/current/public;
      access_log logs/wx.access.log;
      error_log logs/wx.error.log;
      location /{
          proxy_pass http://127.0.0.1:3016;
      }
      error_page 500 502 503 504 /500.html;
    }
    

    这个基本上是一个最简单的虚拟主机的配置了,这里location / 是匹配任意的请求。
    如果你这么写的话

    location ~* \.(gif|jpg|png)
    

    就是只会处理uri中以.gif, .jpg, .png的请求了。
    请注意所有location匹配测试只使用请求的URI部分,而不使用参数部分。

    接着是unicorn的配置

    require 'unicorn'
    app_root = File.expand_path("../..", __FILE__)
    working_directory "#{app_root}"
    pid "#{app_root}" + "/tmp/pids/unicorn.pid"
    stderr_path "#{app_root}" + "/log/unicorn.log"
    stdout_path "#{app_root}" + "/log/unicorn.log"
    listen 3016, :tcp_nopush => false
    worker_processes 2
    timeout 30
    

    listen 3016代表在nginx上server中开启的端口号

    参考
    nginx如何处理一个请求
    在rails项目中集成nginx和unicorn

    相关文章

      网友评论

          本文标题:nginx + unicorn + capistrano 部署

          本文链接:https://www.haomeiwen.com/subject/lhqjtttx.html