小女巫 发表于 2015-1-16 16:43:53

linux教程之Linux体系上设置Nginx+Mongrel cluster

只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。
Nginx不但是一个玲珑且高效的HTTP服务器,也能够做一个高效的负载平衡反向代办署理,经由过程它承受用户的哀求并分发到多个Mongrel历程能够极年夜进步Rails使用的并发才能。上面先容一下怎样在一台服务器上设置Nginx+Mongrelcluster。
取得Nginx,这里我们假定人人是经由过程本人编译,并设置了默许的编译的参数,此处利用的是Nginx0.5.x版。
设置Mongrelcluster
我们还必要取得Mongrel和其Cluster插件(用来便利得启动多个Mongrel历程),以下经由过程gem举行安装:
gemi-ymongrelmongrel_cluster
然后创建mongrel_cluster的设置文件。进进Rails使用即你的程序的根部目次(以下假定/usr/rails),运转:
mongrel_railscluster::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_railscluster::start#启动
mongrel_railscluster::restart#重启
mongrel_railscluster::stop#中断
设置Nginx负载平衡反向代办署理
使用nginx的upstream指令设置哪些服务器必要举行负载平衡。在这里也能够说间接说告知nginxmongrel_cluster在哪些地点和端口上,依照下面的mongrel_cluster的设置,在nginx中应当如许写:
...
http{
...
#upstream段要放在http段中
upstreammongrel{
server127.0.0.1:3000;
server127.0.0.1:3001;
server127.0.0.1:3002;
server127.0.0.1:3003;
server127.0.0.1:3004;
}
...
}
upstream指令前面的mongrel指定了这批下游服务器的的称号,人人可使用其余名字。每一个server指令指定了一个服务器,server指令还撑持其余参数能够设置重试次数和超不时间和分歧服务器的权重。
接上去设置nginx在承受哪些http哀求时转发到mongrelcluster,由于nginx处置静态文件的速率远远高于mongrel,以是一样平常当哀求的路径不存在的时分才将哀求转发到mongrelcluster:
server{
listen80;
server_nameexample.com;
#设置服务器根目次为rails使用的public目次,这个目次下放了对外的静态文件
root/usr/rails/public;
indexindex.htmlindex.htm;
location/{
#转发时保存原有哀求的IP信息和HOST信息
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerHost$http_host;
proxy_redirectfalse;
if(-f$request_filename/index.html){
rewrite(.*){GetProperty(Content)}/index.htmlbreak;
}
if(-f$request_filename.html){
rewrite(.*){GetProperty(Content)}.htmlbreak;
}
#当哀求的文件不存在,转发到mongrelcluster
if(!-f$request_filename){
proxy_passhttp://mongrel;
break;
}
}
error_page500502503504/50x.html;
location=/50x.html{
roothtml;
}
}
然后重启Nginx,设置便乐成了。

</p>
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。

兰色精灵 发表于 2015-1-18 16:51:23

眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。

透明 发表于 2015-1-23 21:41:20

工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。

因胸联盟 发表于 2015-1-31 20:31:50

选择交流平台,如QQ群,网站论坛等。

海妖 发表于 2015-2-6 22:56:50

一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。

活着的死人 发表于 2015-2-19 04:21:38

甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。

莫相离 发表于 2015-3-6 13:02:18

就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务

admin 发表于 2015-3-13 02:07:12

Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。

再见西城 发表于 2015-3-20 09:57:36

查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。
页: [1]
查看完整版本: linux教程之Linux体系上设置Nginx+Mongrel cluster