LoginSignup
2
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-11-13

お題

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アドレスです。
同じVPC内であればプライベートIPでの接続となるので、プライベートIPアドレスを指定すれば3306のみの開放でいけます。

なお、
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画面も繋がらなくなってしまいました。
最初のログインや記事の投稿自体はサクサクいってたんですが。
ここもまた次回様子を見たいと思います。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3