使用nusionx使用phusion passenger 3.0.17运行多个rails网站

时间:2012-12-05 11:54:41

标签: ruby-on-rails nginx virtualhost passenger ruby-on-rails-2

我搜索谷歌使用phusion passenger 3.0.17与nginx部署多个rails网站,但我没有得到相关结果。我是如何通过运行passenger-install-nginx-module命令完成乘客nginx设置的。

问题1)我正在寻找适当的初学者教程,使用phusion passenger 3.0.17与nginx运行多个rails网站

问题2)我正在寻找启动,停止,重启(所有网站的整个乘客nginx服务器(即))以及(个人铁路网站)的命令

注意:没有寻找乘客独立解决方案。我正在使用REE 1.8.7和rails 2.3.14

2 个答案:

答案 0 :(得分:8)

根据Passenger的文档,您为要部署的每个应用程序创建一个新的vhost。 并将站点root指向您的应用程序公共目录,并添加passenger_enabled指令。与使用Apache部署完全相同。

http {
    ...

    server {
        listen 80;
        server_name www.mycook.com;
        root /webapps/mycook/public;
        passenger_enabled on;
    }

    ...
}

更多信息:http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_a_ror_app

关于问题2.重新启动取决于您要做的事情。我假设您正在使用使用init.d

的发行版

这3种情况下你会进行另一种“重启”。

您在Nginx上遇到的某些配置存在问题。或者它表现得很奇怪。 因此,您将重新启动Nginx服务,如下所示:/etc/init.d/nginx restart

下一个案例是您在Nginx上使用乘客模块部署了rails或sinatra应用程序。 并且您想让它重新加载您刚刚推送到服务器的一些更改。 Passenger在您的应用程序中监视tmp/restart.txt文件。所以只需简单地运行touch tmp/restart.txt。虽然cd进应用程序的文件夹会告诉Passenger重新加载应用程序。

重新启动/重新加载的最后一种情况是重新加载Nginx。 您在添加或更改VHOST时使用此功能。 /etc/init.d/nginx reload。这允许您在不丢弃连接的情况下重新加载vhost和其他配置。

对乘客文档有所了解,这是非常彻底的。 nginx-passenger docs

答案 1 :(得分:2)

以下是为多个虚拟主机配置Nginx的分步教程:http://articles.slicehost.com/2007/12/7/ubuntu-gutsy-installing-nginx-via-aptitude

请注意:

  1. 如果您更改Nginx conf中的某些配置,则无法重新启动单个网站/虚拟主机,如stuartc所述。您必须重新启动Nginx才能使更改生效。但是,如果要直接应用生产修订,则可以在推送文件后在服务器应用程序目录中执行$ touch current/tmp/restart.txt
  2. 我遇到过在Ubuntu上重启Nginx的问题;显示停止和开始似乎给出更有把握的结果。使用<NGINX_HOME>/bin/nginx stop停止,然后<NGINX_HOME/bin/nginx开始。
  3. 为了帮助您,这是我的配置文件。

    nginx.conf:

    #user  nobody;
    worker_processes  4;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        passenger_root /rails/common/ruby-1.9.2-p290/lib/ruby/gems/1.9.1/gems/passenger-3.0.17;
        passenger_ruby /rails/common/ruby-1.9.2-p290/bin/ruby_with_env;
    
        passenger_max_pool_size 30;
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        gzip  on;
    
        include /rails/common/nginx/conf/sites-enabled/*.conf;
    }
    

    在启用网站的文件夹中的示例site.conf:

    server {
        listen       80;
        server_name  domainname1.com;
        root /rails/myapp1/current/public;
        passenger_enabled on;
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    
        if (-f $document_root/system/maintenance.html) {
            return 503;
        }
        error_page 503 @maintenance;
        location @maintenance {
            rewrite ^(.*)$ /system/maintenance.html break;
        }
    }
    

    在已启用网站的新文件中,只需添加新网站即可。