4

nginxでPhusion Passenger 3.0.17を使用して複数のRails WebサイトをデプロイするためにGoogleを検索しましたが、関連する結果が得られませんでした。Passenger-install-nginx-moduleコマンドを実行して、パッセンジャーnginxのセットアップを完了した方法。

質問 1) nginx で Phusion Passenger 3.0.17 を使用して複数の Rails Web サイトを実行するための適切な初心者向けチュートリアルを探しています

質問2)開始、停止、再起動(パッセンジャーnginxサーバー全体(つまり、すべてのWebサイト))および(個々のレールWebサイト)のコマンドを探しています

注:私はパッセンジャー スタンドアロンソリューションを探しているわけではありません。REE 1.8.7 とレール 2.3.14 を使用しています

4

2 に答える 2

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. これにより、接続をドロップすることなく、仮想ホストやその他の構成をリロードできます。

Passenger Documentation をざっと見てください。非常に詳細です。nginx-passenger ドキュメント

于 2012-12-05T12:10:34.663 に答える
2

複数の仮想ホスト用にNginxを構成するための段階的なチュートリアルを次に示します。

ご了承ください:

  1. stuartc が言及しているように、Nginx conf でいくつかの構成を変更すると、個々の Web サイト/仮想ホストを再起動することはできません。変更を有効にするには、Nginx を再起動する必要があります。ただし$ touch current/tmp/restart.txt、本番環境の修正を直接適用する場合は、ファイルをプッシュした後にサーバー アプリ ディレクトリで a を実行できます。
  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 に答える