17

Rails アプリ用のステージング サーバーをセットアップしたいと考えています。私は git と github、Cap を使用し、Apache/Passenger で VPS を使用しています。ステージング サーバーの構成とそれとやり取りするプロセスの両方に関する限り、ステージング セットアップのベスト プラクティスについて興味があります。本番サーバーと可能な限り同一にする必要があることはわかっていますが、パブリック アクセスを制限するとそれが制限されるため、私が使用するためだけにセキュリティを確保するためのヒントも役立ちます。

もう 1 つの具体的な質問は、VPS 上に仮想ホストを作成して、ステージング サーバーを本番サーバーと一緒に配置できるかどうかです。ただし、これを回避する理由があるかもしれないと感じています。

4

5 に答える 5

15

安くて簡単な答え:

1) VPS で staging.domainname.com を指定します。

2) ステージング用の仮想ホストを追加し、アプリのステージング コピーを指定します。

3) ステージング環境設定を追加します。(Rails で新しい環境を定義できることをご存知ですか? 楽しいことです!) これは、production.rb を staging.rb にコピーし、必要に応じて微調整し、database.yml を更新するだけで簡単だと思います。

4) ActionController で、次のようなコードを追加します。

   if (ENV["RAILS_ENV"] == "staging")
     before_filter :verifies_admin
   end

あなたが望むものはどこverifies_adminにありますか。安価で簡単な HTTP 基本認証を使用することをお勧めします。

def verifies_admin
  authenticate_or_request_with_http_basic do |username, password|
    username == "foo" && password == "bar"
  end
end

これにより、支払いサイトがあなたにインバウンド リクエストを送信している場合、その支払いサイトへの接続が切断される可能性があることに注意してください。ただし、これは簡単に修正できます (適切なコントローラーおよび/またはアクションの before_filter をオフにするだけです)。

より良い答え:

1) 通常の VPS と同じイメージから構成された 2 つ目の VPS を購入するか、同じベアメタルからのインストール スクリプトから構成された VPS を購入します (これについては Capistrano & Deprec が気に入っています)。

2) staging.domainname.com をポイントします。

3) それ以外の場合は、他のオプションと同じです。

考慮事項:

1) ステージング データベースも必要ですか? おそらく、特にスキーマの変更をテストする場合はそうでしょう。

2) ステージング システムと本番システムの間でデータを移動するための機能が必要ですか?

3) ステージング アプリケーションの壊滅的な障害により、メイン アプリケーションが停止することはありますか? 答えがノーであることを願っています。

于 2009-02-20T04:04:44.803 に答える
4

これに加えて、Capistrano を作成した Jamis Buck も、Capistrano でマルチステージ環境をセットアップするための特別な gem を作成しました。gem がなくても実行できますが、gem を使用するとさらに簡単になります。ここで彼の投稿と手順を見つけることができます: http://weblog.jamisbuck.org/2007/7/23/capistrano-multistage

また、Pragmatic Programmer の本「Advanced Rails Recipes」にも非常に役立つ記事があり、これを設定する方法を正確に説明しています。この投稿への回答と Rails Recipes ブックを組み合わせることで、セットアップが非常に簡単になることがわかりました。

StackOverflow では別のリンクを追加することはできませんが、Advanced Rails Recipes をググると、本が最初の結果です。

于 2010-06-14T02:36:00.467 に答える
3

ステージングサーバーにあなた以外の誰もがアクセスできるようにする必要があるかどうかによると思います. 他の人がアクセスできるようにする必要がある場合は、どこかに別の小さなスライスが必要になり、htaccess またはファイアウォール ルールを使用してアクセスできる人を制限できます。誰もアクセスする必要がない場合は、VMWare を使用することをお勧めします。自分のマシン、予備のボックス、または非常に安価な PC で実行できます。ステージングおよび展開テスト サーバーには無料の VMWare Server 2 を使用していますが、これはうまく機能します。また、ベース VM セットアップを複製するだけで、新しいテスト サーバーを非常に簡単に作成できます。Mac を使用している場合は、VMWare Fusion を使用できますが、費用がかかりますが、IE をテストするために既に使用する必要があります。

于 2009-02-19T15:00:19.820 に答える
3

私はおそらくこれを言うと撃たれるでしょうが、予算が限られている小規模なサイトでは、ステージング サイトを本番サイトと並行して実行することに何の問題もないと思います。

Rails、Apache、および Passenger を使用しています。さまざまな Rails 構成 (およびデータベース) をセットアップし、それぞれを名前付き VirtualHost としてセットアップします。htaccessで保護してください。ドメイン (staging.*) から A レコードを作成し、そこにポイントします。

もちろん、それらは互いに完全に絶縁されているわけではありません。すべてをクラッシュさせる可能性があります。おっとっと!それはおそらく問題ではありません。:)

于 2009-02-20T00:40:01.347 に答える
1

基本イメージで、2 つの別個のサーバー (VPS など) をできるだけ類似したもの (ハードウェアとソフトウェア) で使用します。実稼働環境のすべての構成を自動化して、手動で何も行わないようにします。その自動化を使用して、実稼働環境と同一のステージング サーバーを作成します。自動化を維持して、両方の環境の同期を維持し、オンデマンドで複製できるようにします。

ステージングの非同期問題と一次スケーリングの問題の両方を解決します。

コストに関する限り、VPS はチップとして安価です。ステージング サーバーを使用することで回避できる本番ダウンタイムを誘発する障害の数は、ステージング環境の費用をすぐに回収できます (実際にまったく収益を上げていない場合を除きます。この場合、ダウンタイムはそれほど重要ではありません)。問題があり、破損に夢中になる可能性があります)。

于 2009-02-19T21:15:52.750 に答える