赛迪网 > IT技术 Linux > 系统管理
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Linux系统上配置Nginx+Mongrel cluster

发布时间:2008.03.28 06:33     来源:赛迪网    作者:korn

Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。下面介绍一下如何在一台服务器上配置Nginx + Mongrel cluster。

获得Nginx,这里我们假设大家是通过自己编译,并配置了默认的编译的参数,此处使用的是Nginx 0.5.x版。

配置Mongrel cluster

我们还需要获得Mongrel和其Cluster插件(用来方便得启动多个Mongrel进程),如下通过gem进行安装:

gem i -y mongrel mongrel_cluster

然后建立mongrel_cluster的配置文件。进入Rails应用即你的程序的根部目录(以下假设/usr/rails),运行:

mongrel_rails cluster::configure

然后mongrel_cluster便会在config目录下生成一个mongrel_cluster.yml,内容如下:

---

log_file: log/mongrel.log

port: 3000

pid_file: tmp/pids/mongrel.pid

servers: 2

我们可以通过修改其中的设置来更改mongrel_cluster的运行,这个范例配置省略了一些其他参数,具体的参数的含义如下:

address: 指定绑定的地址

port: 指定mongrel_cluster所运行的mongrel进程从哪个端口开始绑定

servers: 指定同时运行多少个mongrel进程,结合port参数,就是表示port到port+servers-1(含)的端口将被使用

environment: 指定Rails运行的配置环境

user: 指定mongrel进程以什么用户的身份运行

group: 指定mongrel进程以什么组的身份运行

cwd: 指定mongrel运行的根目录

log_file: 各个mongrel进程的输出日志的位置,相对于cwd的目录,会在文件的扩展名之前加上各进程对应的端口号

pid_file: 各个mongrel进程的pid文件的位置,相对于cwd的目录,会在文件的扩展名之前加上各进程对应的端口号

大家可以根据自己的具体情况进行修改。以下是一个完整的mongrel_cluster.yml配置文件:

---

user: apache

cwd: /usr/rails/

log_file: log/mongrel.log

port: 3000

environment: production

group: apache

address: 127.0.0.1

pid_file: tmp/pids/mongrel.pid

servers: 5

接下来便可以启动mongrel_cluster了,以下是控制mongrel_cluster的命令:

mongrel_rails cluster::start #启动

mongrel_rails cluster::restart #重启

mongrel_rails cluster::stop #停止

配置Nginx负载均衡反向代理

利用nginx的upstream指令配置哪些服务器需要进行负载均衡。在这里也可以说直接说告诉nginx mongrel_cluster在哪些地址和端口上,按照上面的mongrel_cluster的配置,在nginx中应该这样写:

...

http{

...

#upstream段要放在http段中

upstream mongrel {

server 127.0.0.1:3000;

server 127.0.0.1:3001;

server 127.0.0.1:3002;

server 127.0.0.1:3003;

server 127.0.0.1:3004;

}

...

}

upstream指令后面的mongrel指定了这批上游服务器的的名称,大家可以使用别的名字。每个server指令指定了一个服务器,server指令还支持别的参数可以设置重试次数和超时时间以及不同服务器的权重。

接下来配置nginx在接受哪些http请求时转发到mongrel cluster,因为nginx处理静态文件的速度远远高于mongrel,所以一般当请求的路径不存在的时候才将请求转发到mongrel cluster:

server {

listen 80;

server_name example.com;

#设置服务器根目录为rails应用的public目录,这个目录下放了对外的静态文件

root /usr/rails/public;

index index.html index.htm;

location / {

#转发时保留原有请求的IP信息和HOST信息

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;

}

#当请求的文件不存在,转发到mongrel cluster

if (!-f $request_filename) {

proxy_pass http://mongrel;

break;

}

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

然后重启Nginx,配置便成功了。

(责任编辑:云子)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Linux下Tomcat 80端口被占用的解决办法 (03-27) · Linux操作系统下安装声卡驱动的方法总结 (03-27)
· Linux操作系统如何将应用程序添加到菜单 (03-27) · Ubuntu公司宣布提供6.10支持的截止日期 (03-27)
· Ubuntu Linux下如何用源码文件安装软件 (03-26) · SUSE crontab工具无法正常运行原因分析 (03-26)
· 嵌入式技巧:ARM的三种中断调试方法介绍 (03-26) · Linux操作系统下/etc/hosts文件配置方法 (03-26)
· 在RHEL5服务器系统下双网卡使用bonding (03-26) · Windows下Linux fedora8双系统安装过程 (03-26)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 专家:从第三方法律服务看我国信息化法制建设
· 民营企业不上ERP会怎样? 必须贯彻一把手工程
· 排队时代电子银行如何补短板 银行信息化现状
· 信息化灾难降临时如何应对与善后 与灾难竞速
· IT部门应否实施预算制 CIO如何让信息中心站稳
· 公交一卡通不推行实名制 一卡多用可购物买药
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统