AWS EC2上で独自ドメインでWordPressサイトを立ち上げるまで

  • このエントリーをはてなブックマークに追加

ひょんなことから、AWS(Amazon Web Service)がアカウント作成から12ヶ月間は無料で使える(厳密には、一部の機能が無料)ことを知ったので、独自ドメイン(できれば複数ドメイン)でWordPressを立ち上げてみようと思い立った。

私のような、なんちゃってエンジニアの人間に、共用のレンサバよりは複雑そうなAWSが使いこなせるのか。不安半分期待半分でスタート。

1.まずはアカウントを作成

何はなくとも、まずはアカウント作成。
AWSのサイト上にわかりやすく説明されているので、そちらに従えば簡単に作成完了する。
必要なものとしては、認証に使用する電話番号とクレジットカード情報。

 

2.続いてAWSの中のEC2で「インスタンス」なるものを作成

基本的に、AWSは英語の説明が多く、例え日本語で書かれていても、翻訳調で頭に入ってきにくい。
そこで、ネット上の先人たちの記録を十二分に活用させてもらうことにした。

インスタンスの作成は『わずか5分!? AWSのEC2でクラウドなウェブサーバーを構築してみた』を参考にさせていただき、インスタンスを起動するところまでは問題なくクリア。

 

ここで、はたと、EC2とS3のどちらがWPサイトを構築するのに適しているのか悩む

というのも、「AWS WordPress」などのワードで検索していると、『wordpressをAmazon S3で運用する方法』や『WordPressをStaticPress+Amazon S3+Vagrantでセキュリティ万全にする方法』といったサイトを目にしたからだ。

ただ、上の2サイトの記述をみても、S3ではphpは動かないことは明らかなため、やはり当初の目標通りEC2でWPサイト構築を目指す。

 

3.SSHでアクセス

私は普段WindowsのPCからputtyを使っているのだが、2.で作った拡張子が.pemのKeyPairsをprivate keyに指定しても接続できない。。。

困って検索していたら、AWS上に日本語で丁寧な説明があった。
(⇒PuTTY を使用して Windows コンピュータから Amazon EC2 インスタンスに接続する

こちらに従ってputtyGenをPCにインストールして.pemファイルから.ppkファイルを作成し、それをprivate keyに指定することで、無事SSH接続することができた。

4.Apacheをインストール&起動するも、なぜかWebでアクセスできない

●Apacheをインストール

 
●Apacheを起動

もしくは

ここまでは、問題なし。

しかし、EC2の管理画面に表示されるデフォルトのURL(例 http://ec2-54-152-136-28.us-east-2.compute.amazonaws.com)にアクセスできない。

調べた結果、2.の設定で80番ポートの設定をするのが抜けていたのが原因だった。

EC2のコンソールで、NETWORKING & SECURITY の項目の下にある Security Groups を選択し、default じゃないほうのグループを選択。下部の Inbound タブを選択するとおそらく22番ポートしか設定されていないと思うので、Edit ボタンを押し、Add Rule ボタンを押し、[HTTP] [80] を設定することで設定完了。

これで無事、awsドメインのページにアクセスできるようになった。

 

5.httpd.conf を編集

セキュリティの強化、そして.htaccessを使えるようにするために(WordPressのパーマリンクをデフォルトから変える場合は必須)/etc/httpd/conf/httpd.conf を編集。

●クライアントに送るサーバー情報を最小限にする

※Prod の代わりに ProductOnly でも同じ。

 
● Options を FollowSymLinks から None に変更してオプションを無効にする。

 
<Directory “/var/www/html”>の下の Options の Indexes を削除してドキュメントルートのファイル一覧を表示させない。また、AllowOverride を None から All に変えて.htaccessの使用を許す。

 
●エラーページにApacheのバージョン情報を表示させない。

httpd.conf を編集後、反映させるためにはapacheの再起動が必要なことをお忘れなく。
 

6.サーバー起動時にApacheが自動起動するように設定

現在の状態を確認にするには

最初は以下のようになっている。

そこで

とすると

のように変わる。
なお、0~6は以下のランラベルを表す。

0 : シャットダウンに向かう状態
1 : シングルユーザモード
2 : 使用されない
3 : 標準的な状態
4 : 使用されない
5 : GUIでログインする状態
6 : 再起動に向かう状態

7.phpをインストール

ためしにphpの簡単なコードを書いたファイルをアップしたら問題なく動いた。
また、デフォルトの設定で、html内でphpを書くことができる仕様になっていた。

必要に応じてphp.iniを編集すると。

 

8.独自ドメインを設定

この設定に関しては、『Elastic IP アドレスの設定と Route 53 から独自ドメインの割当』のサイトの手順に従った。

たいした問題ではないが、Elastic IPを取得して設定すると、それまでとIPが変わるため、amazonドメイン&sshのサーバー名も変わってしまうことに一応注意。

また、レコードセットの指定の仕方だが、サブドメインを一切使わない場合は
上のサイトに書いてある通り、

Name: example.com
Type: A – IPv4 address
Alias: No
TTL: 300
Value: サーバーのIPアドレス
Routing Policy: Simple

でOK。

WWWありと、WWWなしのみ設定したいなら、以下のレコードも追加する。

Name: www.example.com
Type: A – IPv4 address
Alias: Yes
Alias Target: example.com.
Routing Policy: Simple

9.マルチドメインを設定

作業は2つある。
まずは、Route 53 のマネージメントコンソールで、[Hosted Zones] ⇒ [Create Hosted Zones] でドメインを追加。

続いて、サーバー上の httd.conf の最後に、以下の記述を追加する。

3つ目以降のドメインを追加する場合は、

を足していけば良い(はず。未確認)。

 

10.php-mysqlをインストール

phpからmysqlをさわるために必要な拡張モジュール「php-mysql」をインストール。

これを入れずに、WordPressをインストールしようとすると、「お使いのサーバーのPHPではWordPressに必要なMySQL拡張を利用できないようです。」というエラーメッセージが表示されるので注意。

 

11.mysqlをインストール&起動

●mysqlをインストール

 
●mysqlを起動

もしくは

 

12.mysqlの設定(データベースの作成、ユーザーの作成、権限付与)

AWSのオフィシャルチュートリアル『Amazon EC2 を使った WordPress ブログのホスティング』に従えばOK。

 

13.WordPress のインストール

これは、他のレンタルサーバーと何ら変わりはない。

 
以上で設定完了である。
わたしの場合、8.の php-mysql をインストールする工程を抜かしたままWPのインストールに進みエラーが発生。
その後、php-mysql をインストールしたものの解決されず焦ったが、Apache を再起動することで問題は解決した。

設定を変えても問題が発生する時など、Apacheを再起動させてみるといいかもしれない。

 

必要に応じて phpMyAdmin のインストール&設定

標準のリポジトリのままでは、おなじみの yum を使って phpMyAdmin をインストールすることができないため、「RPMForge」のリポジトリを導入する。

そうした上で、リポジトリに「rpmforge」を指定してphpMyAdmin をインストール。

続いて、設定。
phpMyAdmin の config ファイル(/usr/share/phpmyadmin/config.inc.php)を編集。

$cfg[‘blowfish_secret’] = ’何でも構わないのでここにランダムな文字列を入力’

さらに「/etc/httpd/conf.d/phpmyadmin.conf」も編集。
元は 127.0.0.1 からのみアクセス可能となっているところ、自分がアクセスするホスト・IPなどを指定する。

ホスト・IPが指定できない場合は、セキュリティ的に避けたいが以下のように全開放せざるをえない。

以上!


サブコンテンツ