Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

/var/www/RAILSAPP/publicにindex.htmlを置くもの、全ての希望を捨てよ あるいは、passengerにおける処理解決順について

試験が終了したrailsアプリ(myapp)を、本番環境のpassengerで稼働させる簡単なお仕事をしていました。

Installing Passenger + Apache on Ubuntu 14.04 LTS (with APT) on a Linux/Unix production server (part 2) - deployment walkthrough with Ruby, Passenger, Apache, Ubuntu 14.04 LTS (with APT) and Linux/Unix - Passenger Library
とかを見て、途中何個かポカをしつつも構築を進めていたのですが……
イザ、railsをやる段階で完全に詰まり、6時間ほどを浪費しました。

具体的には、passangerが動いている事を検証するために公開ディレクトリ(/var/www/myapp/public)においた

<body>
passenger_page
</body>

が何故か延々と表示され続けていたのです。
事前に、以下の手順でrailsの環境ごと丸々移植していたので、
本来ならURLにアクセスした時点でトップページが表示されるはずです。

$ sudo mkdir -p /var/www/myapp
$ sudo chown myappuser: /var/www/myapp
$ sudo -u myappuser -H bash -l
$ cp -r #{RAILS_MYAPP} /var/www

……まぁ、タネがわかれば何のことはなく。
今回のターゲットアプリは、トップに飛んだ場合リダイレクトでとあるコントローラーに飛ばす仕様でした。
そんな仕様なので、当然のように/index.htmlなんてファイルはありません。
にも関わらずm
というわけで、処理順が「元からある静的ファイル => Railsのルート解決」という動作をしたのが原因でした。

$ cat /var/www/myapp/public/index.html
<body>
passenger_page
</body>

もうpassangerがどうのこうのというレベルですらありません。

まさに、この記事そのまんまの事態でした。
qiita.com