`
yangzx554
  • 浏览: 19872 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    博客分类:
  • ruby
阅读更多
     最近网上有很多人在推荐使用nginx+mongerl来搭建了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/下
      
 
       adduser  mongrel
        cd /var/www/myapp
        rails test
        cd  test
        mongrel_rails start 
        chown -R mongrel:mongrel /var/www/myapp/test
  

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

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

这样会在test工程下生成一个config/mongrel_cluster.yml 这样一个配置文件。记录了相关的配置信息。
  
mongrel_rails cluster::start
就可以把起来了三个mongrel进程。
   你也可以把mongrel_rails 作为系统服务
  
  $ sudo mkdir /etc/mongrel_cluster
  $ sudo cp /var/www/myapp/test/config/mongrel_cluster.yml \
    /etc/mongrel_cluster/testapp.yml
  $ sudo cp \
    /path/to/mongrel_cluster_gem/resources/mongrel_cluster/mongrel_rails \
    /etc/init.d/
  $ sudo chmod +x /etc/init.d/mongrel_cluster 
 

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

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

events {
    worker_connections  1024;
}

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

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
    
    upstream mongrel {
            server 127.0.0.1:8000;
            server 127.0.0.1:8001;
            server 127.0.0.1:8002;
     }

    gzip  on;

    server {
        listen       80;
        server_name  localhost;

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

        location / {
            root   /var/www/myapp/test/public;
            index  index.html index.htm;
        }
        location / {
            proxy_pass  http://mongrel;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    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)$ {
          root /var/www/myapp/test/public;
        }

    }

}
在nginx重启一下 访问一下http://localhost 一个简单的rails的生产环境就搭建完成了
分享到:
评论
17 楼 ashchan 2008-01-02  
miaoxingfu 写道
ashchan 写道
miaoxingfu 写道
受教了!不过还要请教个问题:如何在nginx+mongrel中配置两台虚拟主机呢?两个域名,但是同时使用80端口?遇到在同一台服务器上提供两个不同的web服务,有两个域名指向了同一台服务器的问题,恳请赐教。大谢!


设置虚拟主机,只要在http设置节点下增加server节点即可,例:
http {
   ...
    server {
        listen       80;

        server_name  domain1.com;

        location / {
            root   /home/someguy/domain1/;
            index  index.html index.htm;
        }
        ....
    }

    server {
        listen       80;

        server_name  domain2.com;

        location / {
            root   /home/someguy/domain2/;
            index  index.html index.htm;
        }
      ....
    }
}

当然如果要布署的是多个rails应用,则相应server设置要设好。


我测试了一下,光增加server节点是不够的,还需要增加upstream节点才行。


呵呵,因为虚拟主机不仅限于rails应用;而upstream是用于负载均衡的:)
16 楼 miaoxingfu 2008-01-02  
ashchan 写道
miaoxingfu 写道
受教了!不过还要请教个问题:如何在nginx+mongrel中配置两台虚拟主机呢?两个域名,但是同时使用80端口?遇到在同一台服务器上提供两个不同的web服务,有两个域名指向了同一台服务器的问题,恳请赐教。大谢!


设置虚拟主机,只要在http设置节点下增加server节点即可,例:
http {
   ...
    server {
        listen       80;

        server_name  domain1.com;

        location / {
            root   /home/someguy/domain1/;
            index  index.html index.htm;
        }
        ....
    }

    server {
        listen       80;

        server_name  domain2.com;

        location / {
            root   /home/someguy/domain2/;
            index  index.html index.htm;
        }
      ....
    }
}

当然如果要布署的是多个rails应用,则相应server设置要设好。


我测试了一下,光增加server节点是不够的,还需要增加upstream节点才行。
15 楼 ashchan 2007-12-30  
miaoxingfu 写道
受教了!不过还要请教个问题:如何在nginx+mongrel中配置两台虚拟主机呢?两个域名,但是同时使用80端口?遇到在同一台服务器上提供两个不同的web服务,有两个域名指向了同一台服务器的问题,恳请赐教。大谢!


设置虚拟主机,只要在http设置节点下增加server节点即可,例:
http {
   ...
    server {
        listen       80;

        server_name  domain1.com;

        location / {
            root   /home/someguy/domain1/;
            index  index.html index.htm;
        }
        ....
    }

    server {
        listen       80;

        server_name  domain2.com;

        location / {
            root   /home/someguy/domain2/;
            index  index.html index.htm;
        }
      ....
    }
}

当然如果要布署的是多个rails应用,则相应server设置要设好。
14 楼 yangzx554 2007-12-29  
t0uch 写道
用ubuntu get下来的做生产环境,怎么感觉很怪
这个只是玩票性质,当然真实环境最好有编译源代码
13 楼 t0uch 2007-12-29  
用ubuntu get下来的做生产环境,怎么感觉很怪
12 楼 miaoxingfu 2007-12-28  
受教了!不过还要请教个问题:如何在nginx+mongrel中配置两台虚拟主机呢?两个域名,但是同时使用80端口?遇到在同一台服务器上提供两个不同的web服务,有两个域名指向了同一台服务器的问题,恳请赐教。大谢!
11 楼 yangzx554 2007-09-10  
suave 写道
ubuntu feisty带的nginx在remove的时候会出问题。
楼主讲下在启用rails cache以后配置文件应该如何写,比如把所有的cache文件都存在public/cache下面。好像要加很多location吧?
remove的时候没有测试过,用cache觉得尽量应该用memcache,
10 楼 suave 2007-09-09  
ubuntu feisty带的nginx在remove的时候会出问题。
楼主讲下在启用rails cache以后配置文件应该如何写,比如把所有的cache文件都存在public/cache下面。好像要加很多location吧?
9 楼 lgn21st 2007-08-29  
自己回答吧,我已经测试过,ubuntu7.04自带的nginx包不支持ssl,等到7.10就支持了。
8 楼 lgn21st 2007-08-12  
楼主是否有研究过如何让nginx开启ssl,可以用https协议访问,如果是ubuntu自带的nginx应该如何设置呢?
7 楼 yangzx554 2007-08-09  
probert 写道
failed (111: Connection refused) while reading response header from upstream, client: 192.168.1.10, server: localhost, URL: "/", upstream: "http://127.0.0.1:8000/", host: "192.168.1.110"
今天测试一下,如果你的mongerl的集群没有起来,会把这个错误的 ,你可以直接访问一下你的mongrel端口看看能不能访问
6 楼 probert 2007-08-09  
谢谢你的回答!单独的Mongrel是可以起来的,我再继续尝试吧。
5 楼 yangzx554 2007-08-09  
ruby和rails装的有点问题 是不是单独的Mongrel也起不来 ,我装的环境是ubuntu7.04,ruby是1.8.6 rails是1.2.3。ruby是用源码装的。
4 楼 probert 2007-08-09  
不是的,Ubuntu的IP是192.168.1.110,server_name设置为localhost,我也试过把server_name设置为IP地址一样的,效果还是不行。
注:我用192.168.1.10的机器来访问,不好意思,有点混淆了。
3 楼 yangzx554 2007-08-09  
probert 写道
请教个问题,我在Ubuntu系统上配置好了Ruby On Rails环境,Ruby是最新的1.8.6版本,然后按照你的文章配置好后启动Mongrel集群,出现了以下错误:

** Ruby version is up-to-date; cgi_multipart_eof_fix was not loaded

访问站点只会出现“The page you are looking for is temporarily unavailable.
Please try again later.”这样的提示,在/var/log/nginx/error.log文件里的日志信息是:

failed (111: Connection refused) while reading response header from upstream, client: 192.168.1.10, server: localhost, URL: "/", upstream: "http://127.0.0.1:8000/", host: "192.168.1.110"

网上搜索了一圈只有一个回答:Ruby版本要安装到最新的1.8.6,可是我已经做了,请问有遇到过这种问题吗?谢谢
我这里是用localhost访问的,你是不是用192.168.1.110访问的 在nignx中的server_name 是不是要改一下啊
2 楼 probert 2007-08-09  
请教个问题,我在Ubuntu系统上配置好了Ruby On Rails环境,Ruby是最新的1.8.6版本,然后按照你的文章配置好后启动Mongrel集群,出现了以下错误:

** Ruby version is up-to-date; cgi_multipart_eof_fix was not loaded

访问站点只会出现“The page you are looking for is temporarily unavailable.
Please try again later.”这样的提示,在/var/log/nginx/error.log文件里的日志信息是:

failed (111: Connection refused) while reading response header from upstream, client: 192.168.1.10, server: localhost, URL: "/", upstream: "http://127.0.0.1:8000/", host: "192.168.1.110"

网上搜索了一圈只有一个回答:Ruby版本要安装到最新的1.8.6,可是我已经做了,请问有遇到过这种问题吗?谢谢
1 楼 touchnan 2007-07-27  
及时,正想学,可以参考一下 

相关推荐

    用FFmpeg+nginx+rtmp搭建环境实现推流.docx

    FFmpeg+nginx+rtmp搭建环境实现推流 FFmpeg、nginx、rtmp三者结合可以实现一个强大且高效的流媒体服务器,下面是它们的详细介绍和搭建过程。 FFmpeg FFmpeg是一款功能强大的开源命令行工具,能够处理视频和音频...

    Win+Nginx+PHP+MySQL环境搭建.docx

    Win+Nginx+PHP+MySQL 环境搭建 Win+Nginx+PHP+MySQL 环境搭建是指在 Windows 操作系统上安装和配置 Nginx、PHP、MySQL 等组件,以便搭建一个完整的 Web 服务器环境。该环境搭建主要涉及到 Nginx、PHP、MySQL 三个...

    Web环境搭建:Linux+Nginx+PHP+Mysql+Redis

    ### Web环境搭建:Linux+Nginx+PHP+MySQL+Redis #### 一、环境概述与推荐版本 在构建一个高效且稳定的商城系统时,选择合适的Web环境至关重要。本指南将介绍一套广泛应用于电商平台的技术栈——**Ubuntu + PHP + ...

    Nginx++Keepalived+Tomcat负载均衡&动静分离

    二、部署调度器—搭建Nginx+Keepalived(双机热备) 在调度器服务器上,需要安装Nginx和Keepalived软件包。首先,需要安装编译工具和插件,然后添加nginx用户和组,解压Nginx安装包,编译和安装Nginx。接着,需要...

    Nginx+Uwsgi+Django+Vue部署

    Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑

    linux+nginx+php+mysql环境配置指南.pdf

    本文档旨在指导用户如何配置 Linux+Nginx+PHP+MySQL 环境,以便搭建一个功能齐全的 Web 服务器。下面是详细的配置步骤: 一、安装 Red Hat Linux 首先,需要安装 Red Hat Linux 操作系统。安装过程中,选择中文...

    idea openrestry+nginx+lua搭建企业级开发环境

    "Idea OpenResty + Nginx + Lua" 的组合提供了一种强大的解决方案,它允许开发者利用 IntelliJ IDEA(Idea)作为集成开发环境,OpenResty(一个扩展了 Nginx 的版本)作为服务器平台,以及 Lua 语言进行高性能的脚本...

    ffmpeg+nginx+nginx-rtmp-module搭建个人直播平台

    ffmpeg+nginx+nginx-rtmp-module搭建个人直播平台。 使用说明(ffmpeg+nginx+rtmp-module已经整合,支持HTTP,具体配置查看conf/nginx.conf): 1.解压后,运行nginx_start.bat。(查看监控状态 ...

    CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本

    CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本,Docker version 18.06.1-ce,docker-compose version 1.22.0

    Nginx+keepalived+tomcat集群搭建过程.doc

    【Nginx+Keepalived+Tomcat集群搭建】是一个实现服务器高可用和负载均衡的常见方案,旨在解决单点故障问题,防止服务因一台服务器宕机而导致整个系统的崩溃,即所谓的雪崩效应。 首先,我们需要四台服务器,两台...

    Nginx+tomcat+redis

    配置Nginx+Tomcat+Redis环境时,可能会用到各种依赖包,如编译工具、库文件、配置脚本等。这些包确保所有组件能够正常安装和运行。 综上,"Nginx+Tomcat+Redis"的架构为构建高可用、高性能的Web服务提供了坚实的...

    OpenBSD+Nginx+MySQL+PHP环境搭建手册[第二版][汇编].pdf

    OpenBSD+Nginx+MySQL+PHP环境搭建手册[第二版][汇编].pdf

    Nginx+Apache搭建前后端web生产环境

    在构建高效的Web生产环境时,通常会考虑使用多种服务器软件来优化不同的工作负载。Nginx和Apache就是这样的两个常用工具。Nginx以其高性能、轻量级的特性,擅长处理静态内容和作为反向代理,而Apache则以其强大的...

    Linux下php+nginx+mysql环境搭建(CentOS)

    总结来说,Linux下php+nginx+mysql环境的搭建是一个系统性工程,需要系统地学习相关的技术知识,耐心细致地完成每一步操作。对于初学者来说,建议在Windows系统下使用VMware虚拟机进行实践,以加深理解。对于经验...

    Nginx+Tomcat+Redis搭建均衡负载集群

    在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构利用Nginx作为反向代理和负载均衡器,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用作缓存系统以提升数据访问...

    Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享

    超详细Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享搭建说明,按文档步骤可轻松搭建并实现session共享

    nginx+tomcat+redis集群部署环境

    nginx+tomcat+redis集群部署环境,包括nginx tomcat redis及集群部署所需jar包,jedis-2.6.1.jar,commons-pool2-2.2.jar,tomcat-redis-session-manager1.2.jar 具体步骤可以参见我的博文

    keepalived+Nginx+tomcat 搭建集群

    keepalived+Nginx+Tomcat 集群搭建** 在高并发场景中,仅靠单台 Nginx 可能不足以应对,这时可以结合 keepalived 实现高可用和负载均衡。Keepalived 提供 VRRP 协议来监控 Nginx 主备节点状态,当主节点故障时,...

    Nginx + uwsgi + web.py 搭建web服务器

    Nginx + uwsgi + web.py 搭建web服务器, 也包含一整套python服务器后台框架代码,简单方便,容易搭建。

Global site tag (gtag.js) - Google Analytics