原来部署的时候是用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中开启的端口号
网友评论