AWS上でRailsアプリとWordPressをnginxで共存させる

投稿者: | 2017年1月29日

このブログですが、AWS上でWordPressを使って生成しています。
一方、ブログ開始より前に、類義語/対義語検索も可能な辞書サイトアラビア語検索ナビMilaaHaというのも公開していて、こちらの方はRailsで今も引き続き開発しています。

で、「WordPressだけ or Railsアプリだけ」「サブドメインやサブディレクトリーを切らずドメインそのままで展開」というのは、ググればたくさん情報が出てくるし、設定とか作業とかもそれほど難しくはないのですが、一転、
・tori-kichi.com/blog → WordPressのブログにアクセス
・tori-kichi.com/milaaha → アラビア語検索ナビMilaaHaにアクセス
てなことをやろうとすると、かなり情報量が減ってしまうんですね…
Webサーバー(nginx)の設定もRails側のconfigもややこしいことになり、年明けからしばらくハマってしまいました(T_T)

そこで今回は、WordPressとRailsの共存のための設定と、参考にしたサイトについて触れていこうと思います。同じこと、似たようなことをやろうとしている方(結構いると思うんだけどなぁ)の助けになれば幸いです。
なお、AWSの登録から環境構築や、WordPressやRailsの構築については割愛します。それこそ他のサイトの方が詳しい情報が出ているので、そちらを見ていただけたらと思います。

AWS上の環境は以下の通りです(2017.1.29現在)
Rails 4.2.6
Puma 3.4.0

nginx 1.10.1

WordPress 4.7.1
PHP 7.0.14
MySQL 5.7.17

はじめにRails側の設定ですが、こちらはわりとすんなり解決。
手を加える点は2箇所。
まずはconfig/application.rbから。

既存の設定に、config.relative_url_rootでサブディレクトリを指定してあげればOK。
もう一つが、config.ruになります。以下の設定をすることで、Rackサーバにサブディレクトリを見てよ、と教えてあげるそうです。

タイトルそのままw 英語サイトですが、説明はメチャクチャ解りやすいです。

WordPressの方ですが、
/var/www/html/blogの直下にインストールしました。
※Railsは/var/www/rails/myapp
こちらはそれほど問題ないかと。

何といってもやはり肝となるのは、nginxの設定です。
ここでミスってしまうと、RailsはおろかWordPressでのブログの方も全く表示されなくなってしまうので、責任重大です(汗)
設定は/etc/nginx/conf.d/ 配下に、myapp.confを作成する方式を取りました。

ポイントとしては、26行目と32行目。aliasでなくrootにしてしまうと404エラーになる(T_T)ので、要注意っす。
もう一つ重要なのは、36〜40行目の箇所。locationディレクティブを入れ子にすることで、example.com/blog配下でPHPを適切に処理できるようになります。ここの所で結構ハマってしまいました…入れ子にしないと、example.com/wp-adminといったURLアクセスになってしまい、かなりイライラしてしまいました>_<
こうして振り返ってみると、それほど複雑なコードや設定はしていないんですよね〜。しかしここに辿り着くまでが長い、という…まぁおかげさまで、ブログもこうして問題なく見られるわけですし、いい勉強になったかな、という感じです。

これまたタイトルそのままwww ここも大変役立ったのですが、サブディレクト展開していることもあり、そのまま流用はできませんでした。

最後に、結構なハマりポイントになったのが、Chromeの強力なキャッシュでしたOTZ
設定ファイルの編集→nginxの再起動をしても、Chromeでは画面が表示されないのに、SafariやFirefoxでは全く問題なく見られる、てことがあったため、正しく設定できていたにもかかわらず、無駄な修正を繰り返した幾星霜(大泣)
Chromeのソース表示や検証ツールは、かなり使い勝手いいのですけどね〜(スマホ表示モードとかめちゃ便利!)…その辺は、道具の特性として上手く付き合っていくしかないかもしれませんね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA