4

我在 google 上搜索了使用 phusion 乘客 3.0.17 和 nginx 部署多个 Rails 网站,但没有得到相关结果。我如何通过运行passenger-install-nginx-module 命令完成乘客nginx 设置。

问题 1)我正在寻找合适的初学者教程,用于使用 phusion 乘客 3.0.17 和 nginx 运行多个 Rails 网站

问题 2)我正在寻找用于启动、停止、重新启动(所有网站的全乘客 nginx 服务器(即))以及(个别 Rails 网站)的命令

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

4

2 回答 2

8

根据Passenger 的文档,您为要部署的每个应用程序创建一个新的虚拟主机。并将站点指向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 应用程序,带有乘客模块。并且您想让它重新加载您刚刚推送到服务器的一些更改。乘客在您的应用程序中观看tmp/restart.txt文件。所以通过简单地运行touch tmp/restart.txt。虽然 cd'd 进入应用程序的文件夹会告诉乘客重新加载应用程序。

最后一种重启/重新加载的情况是为 Nginx 重新加载。您在添加或更改 VHOST 时使用它。 /etc/init.d/nginx reload. 这允许您重新加载您的虚拟主机和其他配置而不会断开连接。

看看乘客文件,它非常彻底。nginx 乘客文档

于 2012-12-05T12:10:34.663 回答
2

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

注意:

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

为了帮助你,这是我的配置文件。

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;
    }
}

启用站点的新文件是添加新站点所需的全部内容。

于 2012-12-12T17:27:55.440 回答