カクカクしかじか

技術的なアレコレ

ローカル環境でRailsアプリのサーバーを別プロセスで2つ起動する方法

概要

つい先日、仕事でとある機能の修正をした後の動作確認で、クロスドメイン(サブドメイン独自ドメイン)間でブラウザ上のローカルストレージに保持される値が共有されるかをテストしなければならない機会があり、その際にやったことの自分用メモです。

ローカルストレージの解説

refs: https://help.amebaownd.com/posts/616547

image.png

image.png

前提

手順

まず普通に起動。 RailsはデフォルトではWEBrickというアプリケーションサーバーでサーバーを起動します。

$ bundle exec rails s

次にデフォルトのポート3000以外のポートで別のプロセスで起動します。
ここでUnicornで起動します。(-pでウェルノウンポートを指定する場合はroot権限じゃないといけない模様)

$ sudo bundle exec unicorn -p 80

コレで出来ること

注意点

  • Unicornサーバーをroot権限で立ち上げてるとたまにアセットのキャッシュがroot権限で作られてしまうため、localhost:3000のWEBrickのほうでPermission Denied で怒られるので、その際は sudo chown -R username:groupname tmp/cache/* としてあげないといけないです...(なお、 username:groupname が分からない方はターミナルを開いて、ホームディレクトリで ls -al とかやって確認ください)
  • sudoで起動しているプロセスをkillする際は sudo kill -9 プロセスID じゃないと止まらないので注意