使用nginx+mongerl来搭建了rails的生产环境

使用nginx+mongerl来搭建了rails的生产环境

出处:http://www.javaeye.com/topic/105869

最近网上有很多人在推荐使用nginx+mongerl来搭建了php?name=rails" onclick="tagshow(event)" class="t_tag">rails的生产环境,今天研究了一下。
在ubuntu上安装nginx比较简单 sudo apt-get install nginx 就可以了,如果要安装最新的版本可以去nginx的官方网站上去下载。
ubuntu上搭建rails的已经存在ubuntu的源库中,只要使用apt-get install rails 但是安装的不是最新的的版本。在gem install 分别安装 mongel 和Mongrel_cluster。
假如你的rails工程放在/var/www/myapp/下

代码

 1. adduser mongrel 
 2. cd /var/www/myapp 
 3. rails test 
 4. cd test 
 5. mongrel_rails start 
 6. chown -R mongrel:mongrel /var/www/myapp/test 


以上命令多是root用户
访问一下http://localhost:3000 看一下你的mongrel是否能启动 能启动,则继续搭建mongerl的集群,

代码

 1. sudo mongrel_rails cluster::configure -e production 
 2. \-p 8000 -N 3 -c /var/www/myapp/test -a 127.0.0.1 
 3. \ --user mongrel --group mongrel 


这样会在test工程下生成一个config/mongrel_cluster.yml 这样一个配置文件。记录了相关的配置信息。
代码

 1. mongrel_rails cluster::start 

就可以把起来了三个mongrel进程。
你也可以把mongrel_rails 作为系统服务
代码

 1. $ sudo mkdir /etc/mongrel_cluster 
 2. $ sudo cp /var/www/myapp/test/config/mongrel_cluster.yml \ 
 3. /etc/mongrel_cluster/testapp.yml 
 4. $ sudo cp \ 
 5. /path/to/mongrel_cluster_gem/resources/mongrel_cluster/mongrel_rails \ 
 6. /etc/init.d/ 
 7. $ sudo chmod +x /etc/init.d/mongrel_cluster 


你就可以在/etc/init.d/mongrel_cluster start 来启动这个mongrel的集群
接下来配置nginx 他的配置文件比较简单/etc/nginx/nginx.conf
下面可以帖一个简单的配置文件
代码

 1. user mongrel; 
 2. worker_processes 1; 
 3. 
 4. error_log /var/log/nginx/error.log; 
 5. pid   /var/run/nginx.pid; 
 6. 
 7. events { 
 8.  worker_connections 1024; 
 9. } 
 10. 
 11. http { 
 12.  include   /etc/nginx/mime.types; 
 13.  default_type application/octet-stream; 
 14. 
 15.  access_log /var/log/nginx/access.log; 
 16. 
 17.  sendfile   on; 
 18.  #tcp_nopush  on; 
 19. 
 20.  #keepalive_timeout 0; 
 21.  keepalive_timeout 65; 
 22.  tcp_nodelay   on; 
 23.  
 24.  upstream mongrel { 
 25.     server 127.0.0.1:8000; 
 26.     server 127.0.0.1:8001; 
 27.     server 127.0.0.1:8002; 
 28.  } 
 29. 
 30.  gzip on; 
 31. 
 32.  server { 
 33.   listen   80; 
 34.   server_name localhost; 
 35. 
 36.   access_log /var/log/nginx/localhost.access.log; 
 37. 
 38.   location / { 
 39.     root /var/www/myapp/test/public; 
 40.     index index.html index.htm; 
 41.   } 
 42.   location / { 
 43.     proxy_pass http://mongrel; 
 44.     proxy_redirect  off; 
 45.     proxy_set_header Host     $host; 
 46.     proxy_set_header X-Real-IP   $remote_addr; 
 47.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 48.   } 
 49.  location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ { 
 50.    root /var/www/myapp/test/public; 
 51.   } 
 52. 
 53.  } 
 54. 
 55. } 

在nginx重启一下 访问一下http://localhost 一个简单的rails的生产环境就搭建完成了
用这个的好处呢?
据说效率比Apache+FastCGI高三到四倍。
稳定性怎么样?
多多益善呢...

还要配置呀...晕呢...
我已经在用nginx了,配置简洁,效率高。但是目前Ubuntu7.04附带的nginx版本太低,不支持ssl,所以最好还是从源码开始编译安装,加入openssl支持。我试用过Ubuntu7.10测试版,里面附带的nginx版本提高,支持也基本到位。且7.10附带的ruby版本也升级到了1.8.6。
可惜我们的服务器是win32的。:D
你也可以把mongrel_rails 作为系统服务
代码

 1. $ sudo mkdir /etc/mongrel_cluster 
 2. $ sudo cp /var/www/myapp/test/config/mongrel_cluster.yml \ 
 3. /etc/mongrel_cluster/testapp.yml 
 4. $ sudo cp \ 
 5. /path/to/mongrel_cluster_gem/resources/mongrel_cluster/mongrel_rails \ 
 6. /etc/init.d/ 
 7. $ sudo chmod +x /etc/init.d/mongrel_cluster 

搞不明白第 5 行命令所指的目录!
请哪位给解释一下?谢谢!
第五行跟第六行是一条语句分两条写呀!
你在linux的console下试试看就直到了,shell命令后面增加"\"表示换行继续写命令而不是马上执行
"\"忽略"\"后面紧跟的回车操作
引用:
原帖由 lgn21st 于 2007-10-17 22:53 发表
第五行跟第六行是一条语句分两条写呀!
你在linux的console下试试看就直到了,shell命令后面增加"\"表示换行继续写命令而不是马上执行
"\"忽略"\"后面紧跟的回车操作