linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux入门与提高 > 使用与技巧 >
栏目导栏
资料搜索
热门文章
·VMware Tools的安装步骤
·应用Linux下两种中文输入法
·GRUB FOR DOS 引导安装LINUX和
·linux下BT软件介绍
·Linux中用ALSA驱动声卡流程详解
·Linux 170个常见问题的详细解答
·什么是ISO文件?
·虚拟机软件vmware使用教程--使
·BabyLinux制作过程详解
·Linux挂接(mount)命令的使用方
·Linux必学的网络操作命令
·ffmpeg命令使用详解
·Linux操作系统Ifconfig命令详细
·在Linux下制作工资表
·vmware下的fedora 6的vmware t
最新文章
·CentOS5安装apache和svk使用域
·Ubuntu Linux系统Sudo命令无效
·Uboot对非Linux kernel的引导
·Fedora和XP双系统中网卡Realte
·解决Linux操作系统下部分文件乱
·双系统安装Linux之后找不到Win
·Linux操作系统上安装Flash Med
·设置Tomcat在Linux操作系统中自
·Linux操作系统下创建DBCA报错的
·Redhat Enterprise Linux磁带机
·Linux系统下用一条命令批量修改
·实用技巧:Linux下命令排列、调
·关于Linux操作系统中VI编辑器字
·Linux VI编辑器中的复制与粘贴
·Linux系统下触摸屏的简单使用和
Google
 
Linux系统上配置Nginx+Mongrel cluster
[ 作者:  加入时间:2008-03-28 10:26:18  来自:Linux联盟收集整理 ]
 

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联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Linux下查看CPU类型三种方法的区别介绍  (2008-03-28 10:25:04)
 ·Linux2.4内核和2.6内核对Initrd处理流程  (2008-03-28 10:22:17)
 ·Linux和Windows双操作系统Grub丢失恢复  (2008-03-28 10:18:47)
 ·刀片服务器硬盘启动Linux独立安装(二)  (2008-03-28 10:17:59)
 ·在Linux系统下加载的SMB设备异常的修复  (2008-03-27 11:16:06)
 ·Vista、XP和Ubuntu Linux多系统安装方法  (2008-03-27 11:15:04)
 ·Linux操作系统网络安装总结  (2008-03-27 11:14:20)
 ·Windows下Linux fedora8双系统安装过程  (2008-03-27 11:13:44)
 ·刀片服务器硬盘启动Linux独立安装  (2008-03-27 10:03:31)
 ·Ubuntu Linux系统下Gnome桌面快捷键配置  (2008-03-26 11:54:01)