专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 人工智能

rails 三 thin nginx 部署

发布时间:2011-07-03 09:14:24 文章来源:www.iduyao.cn 采编人员:星星草
rails 3 thin nginx 部署

本着日行一善的原则,今天把直接thin 跑的rails 3 站点部署到nginx上了。

最初的想法使用passenger和ree+nginx,结果可耻的失败了,原因和gems的load路径有关系,把load_path解决了,结果说正常的程序有问题。本着拿得起放的下的原则,放弃使用passenger,决定采用thin。

我的系统是rhel 5

先装nginx,

通过 cat /etc/*release 查看到rhel的版本,

然后通过新建/etc/yum.repos.d/nginx.repo文件添加nginx的rpm source

写道
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

 其中$releasever和rhel的版本对应,我这里填5

 

 

然后将thin安装成服务

$thin install

这会将在/etc/rc.d下添加thin的服务

如果直接service start thin 会报错

因为在rhel下实际上是使用的/etc/rc.d/init.d 所以要

$mv /etc/rc.d/thin /etc/rc.d/init.d

然后

$ thin config -C /etc/thin/<appname>.yml -c /var/rails/<appdir> --servers 3 --socket /tmp/thin.appname.sock


配置app的config文件

 

如果使用了rvm务必需产生 rvm wrapper

命令如下

$ rvm wrapper 1.9.2 bootup thin

同时更改 /etc/rc.d/init.d下的thin 文件,将DAEMON文件指向wrapper

DAEMON=/usr/local/rvm/wrappers/ruby-1.9.2/thin

service thin start

thin 就OK了。

 

配置nginx.conf

user nginx;
# user 很重要,要和你的app的用户和用户组一致,否则出现403错误
worker_processes 5;

error_log /var/log/nginx.error.log;
pid /var/run/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include mime.types;
  default_type application/octet-stream;

  log_format main '$remote_addr - $remote_user [$time_local] $request '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

  access_log /var/log/nginx.access.log main;

  sendfile on;

  keepalive_timeout 65;

  upstream thin_cluster {
    server unix:/tmp/thin.0.sock;
    server unix:/tmp/thin.1.sock;
    server unix:/tmp/thin.2.sock;
    server unix:/tmp/thin.3.sock;
    server unix:/tmp/thin.4.sock;
  }

  server {
    listen 80;
    server_name www.myserver.com;

    root /var/rails/mysapp/public;#对应app path,务必要指向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 false;

      if (-f $request_filename/index.html) {
        rewrite (.*) $1/index.html break;
      }
      if (-f $request_filename.html) {
        rewrite (.*) $1.html break;
      }
      if (!-f $request_filename) {
        proxy_pass http://thin_cluster;
        break;
      }
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
      root html;
    }
  }
}
 

然后

nginx -s reload,

大功告成。

 

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: