【问题标题】:running multiple rails websites using phusion passenger 3.0.17 with nginx使用带有 nginx 的 phusion 乘客 3.0.17 运行多个 Rails 网站
【发布时间】:2012-11-23 05:57:50
【问题描述】:

我在 google 上搜索了使用 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

【问题讨论】:

  • 首要任务 - 升级您的 Rails 版本。如果你不能移动到rails 3,至少移动到2.3.14。 Rails 2.3.5 充满了安全漏洞

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


【解决方案1】:

根据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-passenger docs

【讨论】:

  • 您能否回答我的问题(问题 2)我正在寻找启动、停止、重新启动(所有网站的全乘客 nginx 服务器(即))以及(个别 Rails 网站)的命令
  • 酷我已经添加到我的答案中
【解决方案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;
    }
}

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

【讨论】:

  • maintenance.html 文件 if 语句的 +1,不知道你能做到这一点!
猜你喜欢
  • 2012-09-25
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
  • 2013-03-04
相关资源
最近更新 更多