2

注:私はRuby on Railsとサーバーホスティングの初心者です。私のビジョンを質問として表現することはできません。間違っているか訂正してください。

こんにちは、私は ruby​​ on rails を使用して 1 つの製品を開発しており、32 GB RAM と 8 コア サーバー プロセッサを備えた専用サーバーでホストします。各クライアントには、個別の DB と個別の Rails インスタンスが必要です。私は複製しています-各クライアントのコードを別々のフォルダーに複製し、異なるデータベース名を付けて、それぞれが異なるインスタンスとして機能するようにします。

例えば:

1 つのプライマリ一時ドメインを持っています

www.product.com

クライアントごとに、同じポート(80)で同じサーバーにマップされた別のサブドメインが必要ですが、レールインスタンス名は異なります

www.client1.product.com
www.client2.product.com
www.clientn.product.com

rails instance を起動するとわかるように、それぞれが別々のポート番号で起動します

client1 with start at port 3001
client2 with start at port 3002
client3 with start at port 3003

私の質問は、ポート 80 のすべてのインスタンスを適切な同一のサブドメインにマップする方法です。

アクセスしたら

www.client4.product.com 、ポート 3004 でアプリを実行する必要があります

アップデート:

上記のシナリオの Phusion Passenger + Nginx の手順を投稿してください。

4

2 に答える 2

3

Phusion Passenger + Apache で目的を達成する最も簡単な方法は、VHOST を使用することです。

プロジェクトを別のフォルダーにチェックアウトするだけです:

  • /var/www/rails/client1/
  • /var/www/rails/client2/
  • /var/www/rails/client3/
  • /var/www/rails/client4/

次に、各クライアントの VHOST ファイルを /etc/apache2/sites-available/client1.foobar.com に作成します。

<VirtualHost *:80>
        ServerName client1.foobar.com
        DocumentRoot /var/www/rails/client1/current/public

        <Directory /var/www/rails/client1/current/public>
                Allow from all
                Options -MultiViews
        </Directory>

</VirtualHost>

次に、その VHOST をマネージド ドメイン a2ensite client1.foobar.com のリストに追加します。

そして、Apache /etc/init.d/apache2 reload をリロードします

capistrano を使用してデプロイしたと思われるため、「現在の」フォルダーを追加しましたが、そうでない場合は、その部分を削除してください (そして、capistrano の採用を本当に考えてください)。

また、サーバーはLinuxボックスであると想定しましたが、構成のリロードと新しいVHOSTの追加に関するapacheのドキュメントを読むだけではない場合(そして実際にLinuxサーバーを持つことを考えてください)

PS : ああ、カピストラーノを使用せずにコードベースを更新する場合は、app ディレクトリ内の「tmp/restart」ファイルをタッチして、パッセンジャーに Rails プロセスを再起動するように指示することを忘れないでください。ただし、本番環境で「rails server」コマンドを使用しないでください ;)

于 2012-06-30T19:22:24.557 に答える
3

以下は、nginx + Passenger の最小限のサーバー ブロックのサンプル例です。

server {
        listen 80;
        server_name client1.foobar.com;
        root /var/www/rails/client1/current/public;

    passenger_enabled on;
}

nginx を構成する通常の方法は、このスニペットを含む「client1.foobar.com」という名前のファイルを配置するサブディレクトリ「sites-available」を作成し、「sites-enabled」という名前の別のサブディレクトリにこのファイルのシンボリック リンクを作成することです。 . 最後に、http ブロック内の nginx.conf に次の行を追加します。

include /path/to/your/sites-enabled/*;

nginx をリロード/再起動することを忘れないでください。

このようにシンボリック リンクを使用すると、設定ファイルを失うことなくシンボリック リンクを削除することで、任意のサイトを簡単に無効にすることができます。

ここでいくつかの例とその他のドキュメントを見つけることができます: http://www.modrails.com/documentation/Users%20guide%20Nginx.html

于 2012-09-12T14:55:26.597 に答える