玩 rails 也有段时间了,最近研究下怎么部署一个 rails 应用。在几年前的话要部署 rails 应用是件很麻烦的事,
但是近几年出现了一些比较好的工具可以方便的进行 rails 部署。如: Unicorn、thin、Passenger等。
Unicorn 是一个 Rack 应用的HTTP服务器。之前玩 Python 的时候也有一个 Gunicorn ,使用它来部署 Python 的 Web 应用
也很方便,可以参考我之前的那篇文件 《使用gunicorn部署Django》 。
接下来简单分享下使用 Nginx + Unicorn 来部署 rails 的配置。
安装
首先安装 unicorn 包: $ gem install unicorn
然后编译一下静态文件:
1 | $ RAILS_ENV=production rake assets:clean |
下载配置文件: $ curl -o config/unicorn.rb https://raw.github.com/defunkt/unicorn/master/examples/unicorn.conf.rb
接着根据情况修改相关配置,如: working_directory、listen 等。
例如我的是需要同时监听网络端口和 sock 文件,那么我的 listen 设置如下:
1 | listen "#{root_path}/tmp/sockets/unicorn.sock", :backlog => 64 |
配置 Nginx
然后配置 Nginx 的反向代理,以下是我的 Nginx 配置示例:
1 | upstream rails_server { |
启动服务
配置完成之后,最后启动服务。
1 | $ bundle exec unicorn_rails -c config/unicorn.rb -D -E production |
然后再在浏览器中访问试试。