Rails API サーバ の開発環境を1台のEC2サーバで簡単に複数作った方法


Rails で API サーバ を開発していたときに、 複数の開発環境を作った方法です。

環境

  • Rails 4
  • Passenger
  • Nginx
  • AWS EC2 Amazon Linux
  • rbenv

経緯

APIサーバを開発していたのですが、テスト用にいくつか環境がほしいという声が強くなったので、 nginx の設定を活用して 1台のEC2サーバで複数の開発環境を作りました。

Nginx の設定

ポイントは location ~ ^/dev-([^\/]+)(/.*$) です。 URL を正規表現でマッチさせて、 マッチした文字列のディレクトリへ誘導します。

このようにすると、 http://example.com/abc にアクセスすれば /var/rails/server2 内のコードが使われますが、 例えば http://example.com/dev-hello/abc にアクセスすると /var/rails/dev-hello 内のコードが使われます。 この設定なら、開発者ごとにディレクトリを作るようにすれば、開発者の増減に応じて nginx の設定を変更する必要がありません。

location ~ ^/Ringing は、ログに出ていた攻撃のようなリクエストを防ぐためのロケーション設定です。

注意点

APIサーバだと多くの場合これだけで事足りると思いますが、Webページの開発だと更に設定が必要です。 静的ファイルの URL をうまく変えてやらないと、 どの環境でも同じファイルを使うことになります。