目次
EC2インスタンスを作成する
まずコンソールにログインし、EC2をクリックしてEC2の管理画面に遷移します。
インスタンスを作成ボタンをクリックし、インスタンス作成画面に移ります。
今回の記事ではOSは無料枠の対象である Amazon Linux を選択して確認と作成ボタンをクリックします。
確認画面の内容がこれでよい事を確認し、作成ボタンをクリックします。
キーペアの作成画面が表示されるので、
[新しいキーペアの作成 ] を選択し、キーペア名を指定して 鍵ファイル(.pem形式) をダウンロードします。
このファイルは、作成したインスタンスにログインするための情報となるので、大事に保管しましょう。
[インスタンスの作成] ボタンをクリックすると、インスタンス作成中の画面に遷移するので[インスタンスの表示] ボタンをクリックします。
しばらく経過後に、作成したインスタンスが running の状態になっていることが分かります。
また、グローバルIPアドレス 「54.245.145.33」 が作成完了時点ですでに振られています。
このIPアドレスは永続的なものではなく、インスタンス再起動の度に変更されてしまうものですので、固定のIPアドレスが欲しい場合はEIPというものを割り振ってあげる必要があります。
今回の記事では趣旨と外れてしまうので省略します。
最後にインスタンスを識別するために名前を振ってあげます。
インスタンス一覧の画面でインスタンスのName欄にマウスオーバーすると鉛筆のマークが出てくるので、そこをクリックことで名前の設定ができます。
今回は wp-test という名前を付けました。
ここまででインスタンスの作成が完了しました。
ほんの1,2分でサーバが作成できました、簡単ですね!
作成したインスタンスにSSHクライアントでログインする
ここまでで作成したインスタンスにログインしてみます。
今回作成したインスタンスのOSは AmazonLinux なので、SSHでログインします。
また、SSHのクライアントはなんでも良いのですが、今回はPuTTYを使います。
PuTTYでは .pem 形式のファイルはサポートされていないので、PuTTYgenというソフトウェアを利用して .pem のファイルを .ppk ファイルに変換して、それをプライベートキーとしたSSHログインをします。
なお、他のSSHクライアントでは .pem をプライベートキーとしてログインすれば良い想定ですので、.pemファイルを変換する過程は省略します。
接続先IPアドレスは、作成完了時に確認したアドレス 54.245.145.33 にします。
そして、プライベートキーファイルとして先ほど変換した .ppk ファイルを指定します。
そして接続をするとログインユーザを聞かれるので、EC2インスタンスのデフォルトユーザである 「ec2-user」を指定するとログインができます。
ミドルウェアをインストール・設定する
ログインができるようになりましたので、WordPressに必要なミドルウェアをインストールしていきます。
まず、基本的にパッケージは最新バージョンに保つ方が好ましいと考えるため、デフォルトでインストールされているパッケージのアップデートをします。
併せて今回必要な以下のミドルウェアをインストールします。
なお、Apacheは、PHP7をyumでインストールすると、関連パッケージとして一緒にインストールされます。
[ec2-user@ip-172-31-8-42 ~]$ sudo yum update (略) [ec2-user@ip-172-31-8-42 ~]$ sudo yum install php70 (略) [ec2-user@ip-172-31-8-42 ~]$ sudo yum install php70-pdo (略) [ec2-user@ip-172-31-8-42 ~]$ sudo yum install php70-mysqlnd (略) [ec2-user@ip-172-31-8-42 ~]$ sudo yum install php70-mbstring (略) [ec2-user@ip-172-31-8-42 ~]$ sudo yum install mysql (略)
次にWordPressをインストールし、 /var/www/www.wp-test.jp として設置します。
[ec2-user@ip-172-31-8-42 ~]$ wget https://ja.wordpress.org/latest-ja.tar.gz --2017-04-02 05:47:21-- https://ja.wordpress.org/latest-ja.tar.gz Resolving ja.wordpress.org (ja.wordpress.org)... 66.155.40.250, 66.155.40.249 Connecting to ja.wordpress.org (ja.wordpress.org)|66.155.40.250|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 8481247 (8.1M) [application/octet-stream] Saving to: ?latest-ja.tar.gz? latest-ja.tar.gz 100%[=================================================>] 8.09M 15.5MB/s in 0.5s 2017-04-02 05:47:21 (15.5 MB/s) - ?latest-ja.tar.gz? saved [8481247/8481247] [ec2-user@ip-172-31-8-42 ~]$ cd /var/www/ [ec2-user@ip-172-31-8-42 ~]$ sudo tar -xzvf ~/latest-ja.tar.gz (略) [ec2-user@ip-172-31-8-42 www]$ ls cgi-bin error html icons noindex wordpress [ec2-user@ip-172-31-8-42 www]$ sudo mv wordpress www.wp-test.jp
必要なもののインストールができたので、HTTPリクエストが来た時に www.wp-test.jp 以下を返すようApacheの設定をして、起動します。
なお、今回はインターネットに公開する予定はないのでセキュリティ周りの設定は今度します。
[ec2-user@ip-172-31-8-42 www]$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org [ec2-user@ip-172-31-8-42 www]$ sudo vi /etc/httpd/conf/httpd.conf [ec2-user@ip-172-31-8-42 www]$ diff /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org 119c119 < DocumentRoot "/var/www/www.wp-test.jp" --- > DocumentRoot "/var/www/html" 126c126 < # Allow open access --- > # Allow open access: 131c131 < <Directory "/var/www/www.wp-test.jp"> --- > <Directory "/var/www/html"> [ec2-user@ip-172-31-8-42 www]$ sudo /etc/init.d/httpd start Starting httpd: [ OK ]
RDS を作成する
ここまででEC2インスタンスの最低限の設定ができたので、次はWordPressのデータが格納されるデータベースの作成をします。
EC2インスタンスにMySQLサーバをインストールしてそれを使ってもよいのですが、AWSにはRDSというデータベースのサービスがありますのでそれを使います。
まず、AWSコンソールからRDSの管理画面に遷移します。
RDSの起動をクリックします。
DBエンジンの選択画面に遷移するので、今回は無料枠の中で使用することができるMySQLを使用します。
安定高速なものも選べますが(有料)どうですか?と聞かれますが、今回は無料枠の範囲でと決めているので 開発/テスト 用を選択。
詳細設定の画面に遷移するので、まず 無料枠の範囲で使えるオプションのみ表示 のチェックを入れます。
そして、MySQLのバージョンを現在の時点での最新バージョンに設定し、以下の項目を設定します。
- DB インスタンス識別子 : 今回作成するRDSに対して一意に振られる名前
- マスターユーザの名前 : WordPress以外に使用する予定は無いので、wordpressユーザを作成
- マスターパスワード : wordpressユーザのパスワードを指定、後で使うので
- パスワードの確認 : 忘れないようにね!
ネットワークやセキュリティ、その他の設定に移ります。
まずVPCについてですが、これはAWS上に作成できる仮想ネットワークです。
EC2インスタンスは デフォルト vpc に属しているため、RDSも同じネットワークに属させます。
次にセキュリティグループですが、これは通信の許可を設定することが出来ます。
今回はDBへ接続のための通信のみ許可するグループを新しく作成します。
最後にデータベースの名前ですが、WordPress用のデータベースなので、wordpressと名前を付けます。
その他の設定に関してはデフォルトの状態で DBインスタンスの作成 をクリックします。
その後作成中画面に遷移します。
また、インスタンス一覧の画面に遷移するとステータスが作成中のインスタンスがありますがしばらく待つとインスタンスが起動してきます。
EC2からRDSに接続する
EC2 から RDS に接続するためにセキュリティグループを設定する必要があります。
RDSのセキュリティグループのインバウントの許可設定にEC2インスタンスが所属するセキュリティグループからのデータベースへの通信を加えます。
まずEC2インスタンスが所属するセキュリティグループを確認します。
EC2の管理画面から今回作成したEC2インスタンス wp-test を選択することでセキュリティグループを確認することが出来ます。
launch-wizard-3 に属していることが分かりました。
次にEC2管理画面の左ペインからセキュリティグループをクリックして一覧を確認します。
rds-launch-wizard はRDSが所属しているグループで launch-wizard-3 はEC2が所属しているグループです。
rds-launch-wizard をクリックして、編集をクリックします。
そして以下の設定を入力し、保存をクリックします。
これでEC2からRDSへDB接続のための通信が許可されるようになるので、wordpressユーザでEC2から接続を試してみます。
なお、RDSはエンドポイントと呼ばれる接続先のIPアドレスに代わるものが割り振られているので、それを確認します。
RDSの管理画面 → 確認したいRDSを選択で確認することが出来ます。
エンドポイントが分かったので、EC2にログインして以下のように接続をします。
[ec2-user@ip-172-31-8-42 ~]$ mysql -u wordpress -h wp-test.cbpgcqev4of6.us-west-2.rds.amazonaws.com -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 27 Server version: 5.7.16-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
EC2からDBへの接続が出来るようになりました。
自分のPCからインターネット経由でHTTP接続できるようにする
もう終盤です。
WordPressが動作する環境は整ったので、EC2にインターネット経由で接続できるようにします。
デフォルトの状態ではセキュリティグループの設定がSSH接続のみ許可されている状態です。
これに、自分のPCからのHTTP接続を許可する設定を加えます。(公開する場合は全てのIPアドレスからの通信を許可)
EC2の管理画面 → セキュリティグループ に移動し、EC2が所属しているセキュリティグループを選択します。
そして 編集 をクリックして、以下の設定を加えます。
- タイプ: HTTP
- 送信元: カスタム / 自分のPCのグローバルIPアドレス
これで自分のPCからEC2へHTTP接続が出来るようになったので、ブラウザにEC2のIPアドレスを入力して接続します。
そうすると、WordPressの仕様で 54.245.145.33/wp-admin/setup-config.php にリダイレクトされます。
ブラウザからWordPressの設定をする
最後の仕上げに入ります。
ブラウザからWordPressの設定画面が表示できるようになったので、WordPressの設定を入れていきます。
WordPressのメッセージに従いながら。以下の項目を入力していきます。
- データベース名: wordpress
- ユーザ名: wordpress (RDS作成時に設定したユーザ)
- パスワード: (RDS作成時に設定したパスワード)
- データベースのホスト名: wp-test.cbpgcqev4of6.us-west-2.rds.amazonaws.com (RDSのエンドポイント)
- テーブルの接頭辞: wp_
権限周りの設定をしていなかったので、wp-config.php に書き込めませんでした というメッセージが出ます。
なので、今回はEC2にログインして直接wp-config.phpを作成しましょう。
[ec2-user@ip-172-31-8-42 ~]$ vim /var/www/www.wp-test.jp/wp-config.php [ec2-user@ip-172-31-8-42 ~]$ sudo chown apache.apache /var/www/www.wp-test.jp/wp-config.php
その後メッセージに従ってサイトのタイトルやメールアドレスなどを設定していけば完了です。
最後にもう一度 54.245.145.33(EC2のIPアドレス) にブラウザからアクセスして正しくサイトが表示されることを確認します。