rails with thin and nginx deploy
1.环境说明
-
nginx 静态资源处理(图片,css,js等资源)与反向代理(转发rails请求)
-
thin 处理rails请求,Why Thin?比较简单,性能还可以,中小型站问题不大;
-
默认项目目录/data/htdocs/xxx.dev.com
-
Git 版本控制工具
-
capistrano 自动化部署工具
2.Nginx安装及配置
2.1 Nginx安装
wget http://nginx.org/download/nginx-1.7.3.tar.gz #下载nginx 例/home/software目录
tar zxvf nginx-1.7.3.tar.gz #解压nginx
cd nginx-1.7.3
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module #配置nginx参数
make && make install #编译并安装
2.2 Nginx站点配置
#demo_app 与下面proxy_pass 名称保持一致
upstream demo_app {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server {
listen 80;
server_name xxx.dev.com ;
root /data/htdocs/xxx.dev.com;
#处理assets静态资源,nginx直接处理
location ~* /.*\.(png|jpg|ico|jpeg|css|js|eot|ttf|woff|svg|otf) {
root /data/htdocs/xxx.dev.com/public;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
#转发rails请求
if (!-f $request_filename) {
proxy_pass http://demo_app;
break;
}
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
#站点日志
access_log logs/xxx.dev.com.log access;
}
2.3 Nginx 相关命令
nginx -t #测试nginx配置文件正确性;
nginx -s reload #重新加载配置文件;
3.Rails 部署
* git clone https://xxx.git xxx.dev.com
* 如果使用rvm 设置.rvmrc文件;
* cd到项目目录 bundle install;
* rake db:create RAILS_ENV=production #创建数据库;
* rake db:migrate RAILS_ENV=production #迁移数据库文件;
* rake db:precompile RAILS_ENV=production #编译assets下静态资源文件到public目录下;
* thin start -p 8000 -C config/thin.yml #启动thin服务
* thin stop -p 8000 -C config/thin.yml #停止thin服务
3.1 Thin配置文件参考
- 将thin的配置文件放到项目config/thin.yml即可;
#thin config
#user: www #指定项目运行用户
#group: www #指定项目运行用户组
pid: tmp/pids/thin.pid
timeout: 30
wait: 30
log: log/thin.log
max_conns: 1024
require: []
environment: production
#environment: development 指定运行环境
max_persistent_conns: 512
servers: 3 #指定服务数,比如指定8000端口,那么会起8000-8002端口服务
threaded: false
daemonize: true #是否后台运行
#socket: tmp/sockets/thin.sock
chdir: /data/htdocs/xxx.dev.com
tag: thin-server #ps命令搜索标签名称