Code Fan 49

中年で開発に目覚めたおじさんの技術ブログ。WordPress・Rails・Cloud9などなど。

AWS Cloud9 + EC2 でWordPress開発環境を整備する。

はじめに

静的サイトからJavascriptWordPressの開発、そしてRailsの勉強まで重宝しまくっていたCloud9がAWSに買収されました。

koyacch.hatenablog.com

旧Cloud9の年契が五月上旬で終了、ということで、新たにAWSでの環境づくりをしましたです。

まずは仕事でメインのWordPress開発用を目指しました。 やりたいことは以下です。

  • 直接IDEからFTPを介せず編集する。
  • WordPressコンソールから通常の操作ができる。
  • Gitが使える。
  • できたら複数設置したい。

というわけで、以下の三つの方法を検討しました。


1. AWS Cloud9からインスタンスを作成する。そこにWordPress環境を構築する。

Cloud9でのデフォルト的な環境なのでとりあえずやってみました。 が、権限に制限があるのか、IDEからファイルが作れなかったり移動できなかったりしました。(なぜかコマンド打てばできた)不自由極まりないので諦めました。

2. LightsailサービスよりWordPress環境を立ち上げ 、AWS Cloud9からSSH接続する。

LightsailはWordPressLAMPなどの環境をスイッチ一つで立ち上げるサービスです。

https://lightsail.aws.amazon.com/ls/webapp/home/instances

公式にも接続方法が解説してありますね。

docs.aws.amazon.com

確かに簡単にWordPress環境が作れます。 が、これも先の方法と同じ問題が出て、ファイルを思うように弄れなかったのです。 加えて複数の環境が立てられない。

簡単に運用用の環境を用意するにはいいサービスかもしれませんが、開発には向きません。

3. 普通にEC2サービスを立ち上げ、環境を整備、AWS Cloud9を接続する。

結局一番手間がかかるこれにしました。 AWSを全く知らないので苦労しました。その辺の注意書きもちょいちょい書きたいと思います。


工程

1. EC2インスタンス の準備・環境整備。

普通にroot権限で作成します。 最初は、Linuxが動けばいいかな。。。という安易な感じでクイックスタートの最初に「無料枠」とあるやつを選びました。

これがいきなり失敗でした。 インストール失敗するわ、動いたら動いたで止まるわ。。。です。 以下の記事が参考になりました。

bitcapitalz.hatenablog.com

全く同じ現象でCloud9がビルドできませんでした。

なので課金覚悟でt2.mediumを選択しました。

2. AWS Cloud9からSSH接続する。

公式の記事を参考に設定しました。

docs.aws.amazon.com

英語の記事であろうがChromeの翻訳機能があればなんとかなるもんです。 流れとしては以下です。 ターミナルからの操作になります。

  1. Pythonのバージョンチェック(入ってなければインストール)
  2. Node.jsのバージョンチェック(入ってなければインストール)
  3. 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しないと永久にビルドが終わらないのです。 要注意です。

うまくいけばAWS Cloud9のIDE画面が開きます!


【注意】EC2インスタンス とCloud9のユーザーは分けましょう。
公式にもその旨推奨されています。

docs.aws.amazon.com

弄ってると何回もユーザー切り替えて面倒でした。 きっといい方法があるんだと思います。僕が知らないだけだと思います。


4. IDE越しにインスタンスLAMP環境を整備する。

LAMP環境を整備するには公式を参考にしました。

docs.aws.amazon.com

以下のオプションは設定しました。

  • (オプション) ブート時に毎回 MySQL サーバーを起動させる場合は、次のコマンドを入力します。
  • (オプション) phpMyAdmin のインストール

phpMyAdminWordPress用の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

実際の操作は以下の記事を参考にさせていただきました。

qiita.com

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を以下を参考に書き換え。

mashpote.net


追記2

t2.mediumで構築しましたが、結局t2.mircroに戻しました。

microの謎の挙動は「インスタンス停止 → インスタンス起動」の際にパブリックIPが変わるから、というしょうもない問題でした。そりゃ固定で割り当てるものではないよね。。。

起動のたびにSSHの設定してもしょうがないし、稼働し続けないといけないし、だったら無料枠でのmicro、というわけです。