Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

/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