😃
EC2とRDSでWordPressをインストールしてみる
はじめに
AWSでWordPressをインストールする方法は、LightsailやEC2を使う方法がありますが、今回はLinuxやAWSリソースの勉強を目的としているので、EC2+RDSの構成で作成していきます。
こんな感じに作っていきます。
- サーバ
- EC2
- AMI:Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
- インスタンスタイプ:t2.micro
- EC2
- ソフトウェア
- Apache
- WordPress
- DB
- MySQL
- DNS
- お名前.comで購入
VPCの作成
- ap-northeast-1リージョンにVPCを作成する。
- IPv4 CIDRは
10.0.0.0/16
で設定。
サブネットの作成
- アベイラビリティゾーンap-northeast-1aに
10.0.10.0/24
でパブリックサブネットを作成する。 - アベイラビリティゾーンap-northeast-1aに
10.0.20.0/24
プライベートサブネットを作成する。
ルーティングの設定
パブリックサブネットをインターネットと接続させる。
インターネットゲートウェイの作成
- インターネットゲートウェイを作成し、上記で作成したVPCにアタッチする。
ルーティングテーブルの設定
- ルートテーブルを上記で作成したVPCで新規作成する。
-
サブネットの関連付け
からパブリックサブネットを関連づける。 - ルートの編集から送信先を
0.0.0.0/0
、ターゲットをインターネットゲートウェイを指定する。
EC2の設定
下記の要件で設定する。
- AMI:Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
- インスタンスタイプ:t2.micro
- キーペアを任意の場所に保存。
Apacheのインストール
- 秘密鍵のパーミッション変更しておく。
$ chmod 600 鍵のディレクトリ
- ssh接続をする。
$ ssh -i 鍵のディレクトリ ec2-user@パブリックIPアドレス
- パッケージをアップデートしておく。
$ sudo yum update -y
- Apacheのインストール。
$ sudo yum -y install httpd
- Apacheを自動起動させる。
$ sudo systemctl enable httpd.service
- Apacheを常時起動できているか確認。
$ sudo systemctl is-enabled httpd.service
セキュリティグループの設定
- タイプ
HTTP
、ソース任意の場所
に設定し、httpでアクセスできるようにする。 - パブリックIPアドレスを検索し、Apacheのデフォルトページが表示されればOK。
Elastic IPアドレスの設定
- Elastic IPアドレスを確保し、EC2インスタンスに割り当てる。
※割り当てていないと有料になる。使わない場合、解放しておく。
ドメインの登録
ホストゾーンの作成
- パブリックホストゾーンで購入したドメイン名を指定。
- ドメインのネームサーバをRote53に変更する。
※ドメインのネームサーバを調べるコマンド
$ dig ドメイン名 NS +short
- Rote53コンソールからホストゾーンのNSの値をお名前.comの管理画面で設定する。
※設定反映に24時間〜72時間ほどかかる。
レコードセットの作成
- AレコードでElastic IPを設定する。
- 設定したドメインでApacheのデフォルト画面が見えればOK。
RDSの設定
マルチAZでサブネットを作成
RDS作成の際、マルチAZでサブネットを作成しておかなければいけない。
- 別のアベイラビリティゾーンにプライベートサブネットを作成する。
セキュリティグループの設定
EC2からのみRDSに接続できるように設定する。
- タイプ:MYSQL/Aurora、ソース:EC2インスタンスのセキュリティグループを指定して作成。
ソースにインスタンスのセキュリティグループを設定することでインスタンスをまとめて指定できる。
サブネットグループの設定
- 作成した2つのプライベートサブネットを指定して作成。
パラメータグループの設定
- mysql8.0を指定。
編集からパラメータを変更できる。
オプショングループの設定
- mysql8.0を指定。
デフォルトのグループも追加されるが、追加したものを使用していく。
データベースの作成
- MySQL8.0.40、開発テスト用、インスタンスクラス:db.t3.micro、ストレージタイプ:汎用SSDなどを設定。
UTC時間は日本時間から-9時間の値。(日本時間:4:00の場合、19:00を指定)
EC2からRDSに接続
- EC2にSSHでログインし、MySQLをインストールする。
$ sudo yum -y install mysql
- 接続する。
$ mysql -h RDSのエンドポイント -u ユーザー名 -p
MySQLの設定
データベースとユーザーを追加する
- MySQLに接続。
$ mysql -h RDSのエンドポイント -u ユーザー名 -p
- データベースの作成。
$ CREATE DATABASE 作成したいDB名 DEFAULT CHARACER SET utf8 COLLATE utf8_general_ci;
- データベースの作成ができたか確認する。
$ SHOW DATABASES;
- ユーザーを作成する。
$ CREATE USER '作成したいユーザー名'@'%' IDENTIFIED BY '設定したいパスワード';
- ユーザーに権限を付与する。
$ GRANT ALL ON ユーザー名.* TO 'ユーザー名'@'%';
- 設定の反映。
$ FLASH PRIVILEGES;
- 設定(ユーザーとその権限)の確認。
$ SELECT user , host FROM mysql.user;
- 追加したユーザーでログインできるか確認。
$ mysql -h RDSのエンドポイント -u 作成したユーザー名 -p
WordPressをインストール
phpモジュールなどをインストール
- php7.2をamazon-linux-extraからインストール。
$ sudo amazon-linux-extras install -y php7.2
- php-mbstringをインストール。
$ sudo yum install -y php php-mbstring
- ホームディレクトリに最新のWPファイルをダウンロード。
$ cd ~
$ wget https://ja.wordpress.org/latest-ja.tar.gz
- tar.gzを解凍。
$ tar xzvf latest-ja.tar.gz
- wordpressディレクトリ内のファイルを/var/www/html/にコピー。
$ cd wordpress
$ sudo cp -r * /var/www/html/
- apacheからwordpressのファイルを参照できるように所有者を変更。
$ sudo chown apache:apache /var/www/html/ -R
- apacheの再起動。
$ sudo systemctl restart httpd.service
- WordPressの設定をして、管理画面に入ったら成功!
Discussion