読者です 読者をやめる 読者になる 読者になる

頭の中は異空間

生活を日々ハックしてよりよくするブログ

複数のRailsアプリを同一サーバ上で動かす方法

前回書いたRailsの記事では単一Railsアプリを単一のサーバ上で動かす想定でした。

しかし小さいサービスとか機能であれば複数を同一サーバ上で動かしたほうがリソース上効率が良いはず。

というわけで、Railsアプリを同時にunicorn + nginx環境で動作させるための方法をまとめます。

 

 

前準備

単一アプリを

notwodaily.hatenablog.com

でローカルで動かせるようになっていることが条件です。細かいパスとか説明はそちらを参照。

 

やることは単純。同時にnginxのconfigファイルに一部書き足すだけ。

あくまで最も簡素な形で書きます。

 

configファイル

upstream 単一の名前(アプリケーション名だと分かりやすい) {
  # nginxとunicornの連携
  server "unix:{sockファイルのパス}";
}

...

# for ~~(アプリ名)
server {
  listen 8082; # 他アプリとバッティングしないポート番号
  server_name localhost;
  root {アプリのRAILS_ROOTパス};
  access_log /var/log/nginx/server.log;
  error_log /var/log/nginx/server_error.log;
  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_pass リバースプロキシのURL(http://アプリ名、とか);
  }
}

上記の単位でアプリごとにポート番号やソケットのパスなどを変更していけばOK。

同時に複数のアプリを起動している状態なので、当然2つとものサイトにアクセス可能になります。

 

共通ファイルはこれだけ。ほかはアプリごとに準備する必要あり。