AWS初心者なのでまずはWordPressを入れてみる ② ~ RDSとの連携、セキュリティグループ設定

AWS初心者なのでまずはWordPressを入れてみる ② ~ RDSとの連携、セキュリティグループ設定:


お題

MySQLインスタンスを別途作成し、連携したWordPressを構築する。

前回建てたEC2インスタンスは破棄。

今回はこちらのサイトを参考にさせていただきました。
WordPress - Linux入門 - Webkaru


概要

  • RDSでMySQLを建てる
  • EC2にApache、PHPを入れてWordPressをインストール
  • WordPressの初期設定で、DBにRDS MySQLを指定
  • WordPressの動作を確認、RDS MySQLにデータが入っていることを確認
SSHで接続さえできてしまえばインストール自体は引っかかるところはありませんでした。


引っかかったところ:RDS側のセキュリティ設定


セキュリティグループ(ファイアウォール)で:

EC2のIPアドレス決め打ちでポート3306(MySQLのデフォルト)を開放したのですが、つながりませんでした。

全開放したら繋がりました。

このとき指定した「EC2のIPアドレス」は、パブリックとプライベートの2つのうちのパブリックIPアドレスです。

プライベートIPアドレスは試しませんでしたが、そっちを指定しておけば繋がったかもしれません。

(この記事を書いている環境ではEC2にSSHログインできないため)後で再度確認したいと思います。

なお、

RDSのパブリックアクセシビリティ:デフォルトの「はい」

VPC:RDS、EC2ともにいじらなかったため、デフォルトのはず(要は同じVPC内にいたはず)


気になる点:構成について


今回やった構成:

パブリックなRDSを作成し、ポート3306を開放。

インターネット経由でEC2インスタンスからは勿論、自分の端末からも直接DBに接続できるようにする。


こっちのほうが理想的な構成?:

同じVPC内にRDSとEC2インスタンスを作成し、RDSにはVPC内からだけ接続できるようにし、インターネットから隠す。

折角VPCという機能があるんですし、実際こういう構成のガイドもあって、よりセキュアといえるような気がします。

DB内のデータを直接見たければ、ちょうどWordPressにもPHPが必要なわけで、EC2の方にWordPressと一緒にPHPMyAdmin入れてしまってもいいですし。


まとめ:課題

  • RDSをパブリック開放せず、VPC内でだけアクセスできる構成を試す
  • RDSのセキュリティグループ設定でも、EC2のプライベートIPアドレスのみ許可することで接続できるかを試す
というわけで後ほどもう一回作ります。


おまけ:ログ

最適な構成じゃない気もしますが、一応今回の作業ログ。

ところどころ*でマスクしてます。


EC2にSSHログイン、yumでPHPなどのパッケージをインストール

****@****-PC MINGW64 ~/.ssh 
$ ssh -i MyKeyPair.pem  ec2-user@18.218.100.114 
The authenticity of host '18.218.100.114 (18.218.100.114)' can't be established. 
ECDSA key fingerprint is SHA256:NkYp2OZCdQJ7gMSTotsB8TmpRgK27RiCaYyN4WI2cqo. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added '18.218.100.114' (ECDSA) to the list of known hosts. 
 
       __|  __|_  ) 
       _|  (     /   Amazon Linux AMI 
      ___|\___|___| 
 
https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/ 
14 package(s) needed for security, out of 30 available 
Run "sudo yum update" to apply all updates. 
[ec2-user@ip-172-31-24-172 ~]$ 
[ec2-user@ip-172-31-24-172 ~]$ 
[ec2-user@ip-172-31-24-172 ~]$ sudo yum -y install httpd php php-mysql mysql wget 
Loaded plugins: priorities, update-motd, upgrade-helper 
amzn-main                                                | 2.1 kB     00:00 
amzn-updates                                             | 2.5 kB     00:00 
Package wget-1.18-4.29.amzn1.x86_64 already installed and latest version 
Resolving Dependencies 
--> Running transaction check 
---> Package httpd.x86_64 0:2.2.34-1.16.amzn1 will be installed 
(中略) 
  php-common.x86_64 0:5.3.29-1.8.amzn1 
  php-pdo.x86_64 0:5.3.29-1.8.amzn1 
 
Complete! 
[ec2-user@ip-172-31-24-172 ~]$ 
[ec2-user@ip-172-31-24-172 ~]$ sudo service httpd start 
Starting httpd:                                            [  OK  ] 
[ec2-user@ip-172-31-24-172 ~]$ 
 
ここでhttps://18.218.100.114/にブラウザアクセス ⇒ Apacheの画面表示OK

どうせすぐ潰すので、chkconfig設定はサボりました。

今思い出したんですがそういえばポート80を開放する操作を別にしなくても繋がりました。どこかで自動でやってた?

※mysqlをインストールしていますが、このEC2インスタンスからCLIでRDSに接続できるかを先に試したかったからです。以下の通り。


EC2からRDSのMySQLにログインできるかを試す

[ec2-user@ip-172-31-24-172 ~]$ mysql -uroot -p******** -h mysqlinstance1.cad4fws8y5kc.us-east-2.rds.amazonaws.com wpdb 
 
# かなり待つ 
 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysqlinstance1.cad4fws8y5kc.us-east-2.rds.amazonaws.com' (110) 
[ec2-user@ip-172-31-24-172 ~]$ 
[ec2-user@ip-172-31-24-172 ~]$ mysql -uroot -p******** -h mysqlinstance1.cad4fws8y5kc.us-east-2.rds.amazonaws.com -P 3306 wpdb 
 
# 無駄とは思いつつポート指定オプションを追加 
# やっぱりかなり待つ 
 
ERROR 2003 (HY000): Can't connect to MySQL server on 'mysqlinstance1.cad4fws8y5kc.us-east-2.rds.amazonaws.com' (110) 
[ec2-user@ip-172-31-24-172 ~]$ 
 
※「wpdb」はRDS作成時につくったDBの名前

あれ?ということで、RDSのセキュリティグループを変更、3306を全解放。

[ec2-user@ip-172-31-24-172 ~]$ mysql -uroot -p******** -h mysqlinstance1.cad4fws8y5kc.us-east-2.rds.amazonaws.com -P 3306 wpdb 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 5 
Server version: 5.6.41 Source distribution 
 
Copyright (c) 2000, 2018, 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. 
 
mysql> 
 
つながりました。

というわけで安心してアプリ側の設定に入ります。


PHPの設定、確認

[ec2-user@ip-172-31-24-172 ~]$ sudo vi /etc/php.ini 
 
# タイムゾーン"Asia/Tokyo"を設定 
 
[ec2-user@ip-172-31-24-172 ~]$ sudo vi /var/www/html/phpinfo.php 
 
# phpinfo()を書く 
 
[ec2-user@ip-172-31-24-172 ~]$ sudo service httpd restart 
Stopping httpd:                                            [  OK  ] 
Starting httpd:                                            [  OK  ] 
[ec2-user@ip-172-31-24-172 ~]$ 
 
ここでhttps://18.218.100.114/phpinfo.phpにブラウザアクセス ⇒ PHPの画面表示OK


WordPressのインストール、httpdのドキュメントルートに設定

[ec2-user@ip-172-31-24-172 ~]$ 
[ec2-user@ip-172-31-24-172 ~]$ cd /tmp/ 
[ec2-user@ip-172-31-24-172 tmp]$ 
[ec2-user@ip-172-31-24-172 tmp]$ wget https://ja.wordpress.org/wordpress-4.9.8-ja.tar.gz 
--2018-11-12 21:18:12--  https://ja.wordpress.org/wordpress-4.9.8-ja.tar.gz 
Resolving ja.wordpress.org (ja.wordpress.org)... 198.143.164.252 
Connecting to ja.wordpress.org (ja.wordpress.org)|198.143.164.252|:443... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 9292403 (8.9M) [application/octet-stream] 
Saving to: ‘wordpress-4.9.8-ja.tar.gz’ 
 
wordpress-4.9.8-ja. 100%[===================>]   8.86M  50.9MB/s    in 0.2s 
 
2018-11-12 21:18:12 (50.9 MB/s) - ‘wordpress-4.9.8-ja.tar.gz’ saved [9292403/9292403] 
 
[ec2-user@ip-172-31-24-172 tmp]$ 
[ec2-user@ip-172-31-24-172 tmp]$ 
[ec2-user@ip-172-31-24-172 tmp]$ tar zxf wordpress-4.9.8-ja.tar.gz 
[ec2-user@ip-172-31-24-172 tmp]$ cp -r wordpress /var/www/ 
cp: cannot create directory ‘/var/www/wordpress’: Permission denied 
[ec2-user@ip-172-31-24-172 tmp]$ sudo cp -r wordpress /var/www/ 
[ec2-user@ip-172-31-24-172 tmp]$ sudo chown -R apache.apache /var/www/wordpress 
[ec2-user@ip-172-31-24-172 tmp]$ 
[ec2-user@ip-172-31-24-172 tmp]$ cd 
[ec2-user@ip-172-31-24-172 ~]$  
[ec2-user@ip-172-31-24-172 ~]$ sudo vi /etc/httpd/conf/httpd.conf 
 
# DocumentRootを"/var/www/wordpress"に、 
# Directoryタグを "/var/www/wordpress"に、 
# 同タグ内のAllowOverrideをAllにそれぞれ編集 
 
[ec2-user@ip-172-31-24-172 ~]$ sudo service httpd restart 
Stopping httpd:                                            [  OK  ] 
Starting httpd:                                            [  OK  ] 
[ec2-user@ip-172-31-24-172 ~]$ 
これまたすぐ潰すし…ということで設定ファイルのバックアップを取っていません。本番環境ではちゃんとやりましょう。

ここでhttps://18.218.100.114/にブラウザアクセス ⇒ WordPressの初期画面表示OK

あとはWeb画面から設定。DBの情報にRDSのエンドポイント他を入力、無事完了。


RDB-Wordpressできた.png


記事の投稿もOK。


RDSのMySQLにデータが入っているか確認

したいのですが、ここでEC2に繋いでいるSSHがとても重くなる。

コンソールが返って来ない。繋ぎ直そうとするとSSHログインにえらく待たされ、いつまで経ってもEC2に入れない。

仕方ないので自端末からA5 Mk-2で接続。


RDBの中身.png

RDBの中身2.png


ちゃんと入っていることが確認できました。

以降EC2がえらく重くなってしまったのは、microにWordPressを積んだせいなのか。Web画面も繋がらなくなってしまいました。

最初のログインや記事の投稿自体はサクサクいってたんですが。

ここもまた次回様子を見たいと思います。

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)