AWS Cloud9 + EC2 でWordPress開発環境を整備する。
はじめに
静的サイトからJavascript、WordPressの開発、そしてRailsの勉強まで重宝しまくっていたCloud9がAWSに買収されました。
旧Cloud9の年契が五月上旬で終了、ということで、新たにAWSでの環境づくりをしましたです。
まずは仕事でメインのWordPress開発用を目指しました。 やりたいことは以下です。
というわけで、以下の三つの方法を検討しました。
1. AWS Cloud9からインスタンスを作成する。そこにWordPress環境を構築する。
Cloud9でのデフォルト的な環境なのでとりあえずやってみました。 が、権限に制限があるのか、IDEからファイルが作れなかったり移動できなかったりしました。(なぜかコマンド打てばできた)不自由極まりないので諦めました。
2. LightsailサービスよりWordPress環境を立ち上げ 、AWS Cloud9からSSH接続する。
LightsailはWordPressやLAMPなどの環境をスイッチ一つで立ち上げるサービスです。
https://lightsail.aws.amazon.com/ls/webapp/home/instances
公式にも接続方法が解説してありますね。
確かに簡単にWordPress環境が作れます。 が、これも先の方法と同じ問題が出て、ファイルを思うように弄れなかったのです。 加えて複数の環境が立てられない。
簡単に運用用の環境を用意するにはいいサービスかもしれませんが、開発には向きません。
3. 普通にEC2サービスを立ち上げ、環境を整備、AWS Cloud9を接続する。
結局一番手間がかかるこれにしました。 AWSを全く知らないので苦労しました。その辺の注意書きもちょいちょい書きたいと思います。
工程
1. EC2インスタンス の準備・環境整備。
普通にroot権限で作成します。 最初は、Linuxが動けばいいかな。。。という安易な感じでクイックスタートの最初に「無料枠」とあるやつを選びました。
これがいきなり失敗でした。 インストール失敗するわ、動いたら動いたで止まるわ。。。です。 以下の記事が参考になりました。
全く同じ現象でCloud9がビルドできませんでした。
なので課金覚悟でt2.mediumを選択しました。
2. AWS Cloud9からSSH接続する。
公式の記事を参考に設定しました。
英語の記事であろうがChromeの翻訳機能があればなんとかなるもんです。 流れとしては以下です。 ターミナルからの操作になります。
- Pythonのバージョンチェック(入ってなければインストール)
- Node.jsのバージョンチェック(入ってなければインストール)
- AWS Cloud9をSSH接続で環境構築する。(僕はrootをログアウトしてIAMで作成したCloud9ユーザーで構築しました。)その時にSSHキーが取得できるので、コピーしてターミナル経由でインスタンスに設定します。以下のコマンドで追記しました。
echo "(SSHキーをペースト)" >> ~/.ssh/authorized_keys
3. AWS Cloud9の環境構築を完了させる。
以下の三つだけで作成できるようです。
Create environmentをクリックするとIDEっぽい画面が開いてチェックボックス付きの画面が出ますが、ここで一気にFinishをチェックしないでください。 チェックを外し、NextをクリックしてAWS Cloud9 Installerを眺めてください。
ここで Yes/No の確認が求められます。 で、Yesしないと永久にビルドが終わらないのです。 要注意です。
【注意】EC2インスタンス とCloud9のユーザーは分けましょう。
公式にもその旨推奨されています。
弄ってると何回もユーザー切り替えて面倒でした。 きっといい方法があるんだと思います。僕が知らないだけだと思います。
4. IDE越しにインスタンスのLAMP環境を整備する。
LAMP環境を整備するには公式を参考にしました。
以下のオプションは設定しました。
- (オプション) ブート時に毎回 MySQL サーバーを起動させる場合は、次のコマンドを入力します。
- (オプション) phpMyAdmin のインストール
phpMyAdminはWordPress用のDBを作成する時に必要になります。
5. AWS Cloud9の環境設定を変更し、作業ディレクトリだけを見えるようにする。
AWS Cloud9の設定を編集し、Advanced setting の Environment pathを/var/www/html
に変更します。余計なものが見えない方が間違いも少なくてすみます。
うまくいけば、phpMyAdminしか見えてないはずです。
6. WP-CLIをインストールし、WordPressを一つインストールしてみる。
コマンドラインインターフェイスよりWordPressがインストールできる便利なツールです!
Command line interface for WordPress | WP-CLI
実際の操作は以下の記事を参考にさせていただきました。
phpMyAdminでDBを作成するのを忘れずに!
7. プラグインインストールなどができるよう所有者を変更する。
6までの手順の場合、ファイルの所有者はec2-userとなっています。グループはapacheです。所有者とグループが違うディレクトリだとWordPressはプラグインをインストールできません。
権限を変えればOKですが、あちこち変えるのも面倒なので、所有者変更で対応します。
chown -R apache:apache /var/www/html
AWS Cloud9でファイルなど作成した場合、所有者はec2-userとなるので注意が必要です。
とりあえずここまでで。
バッチリできるようになりました。
8.そのほか
未使用時の停止、EBSの設定を忘れずに。←まだ理解してない。トホホ。
さいごに。
...と、ここまでたどり着くまでにいくつインスタンスを壊したか。。。 ボタンポチリで悩まないで月2000円程度で幾つでもWordPress環境が作れた旧Cloud9は素晴らしかったのだなあ。
でもせっかくの機会。福岡の片田舎でも「AWSでやりましょう」という時代が来るかもしれないので、勉強しておいて損はないと思うので頑張ってAWSマスターしていきます。
追記1
インスタンス初期設定では、.htaccessの書き換えが有効になってないらしい。。。ので連発しました404 Not Found
httpd.confを以下を参考に書き換え。
追記2
t2.mediumで構築しましたが、結局t2.mircroに戻しました。
microの謎の挙動は「インスタンス停止 → インスタンス起動」の際にパブリックIPが変わるから、というしょうもない問題でした。そりゃ固定で割り当てるものではないよね。。。
起動のたびにSSHの設定してもしょうがないし、稼働し続けないといけないし、だったら無料枠でのmicro、というわけです。