AWSでNginx、PHP7.1な環境のWordPress他
2018/06/03
nginxはじめて使った。
- VPC作成
アカウント作成したら自動でdefaultのVPC作られているので、それで問題ない。 - サブネット設定
公開するサブネット(Webサーバ)と公開しないサブネット(DBサーバ)の2つを作成する。
例えばVPCのCIDRが192.168.0.0/16ならば、公開するサブネットは192.168.1.0/24で公開しないサブネットは192.168.2.0/24とかでOKと。(第3オクテットを変えてます)
これも1つは自動で作られてた気がする。もしかしたら3つとかあったような気もする。(記憶曖昧)
最初から2つ以上作られてたら、それで問題ない。
アベイラビリティゾーンは分けること。 - ルートテーブル設定
公開するサブネット用のルートテーブルと公開しないサブネット用のルートテーブルの2つを作成する。
公開する方は0.0.0.0/0でターゲットはインターネットゲートウェイを指定して、インターネットに公開する設定を追加する。
公開しない方はVPCのCIDRが192.168.0.0/16だとして、それだけでいい。(初期設定でそうなってると思うので、そのままでいいはず) - インターネットゲートウェイ設定
最初から作られてた気がする。なければ作成して、VPCに割当する。 - セキュリティグループ設定
Webサーバ用のセキュリティグループとDBサーバ用のセキュリティグループの2つを作成する。
Webサーバが80番ポートで外部に公開されるならば、インバウンドで80番ポートを0.0.0.0/0に公開するルールを作る。
SSHでつないで設定するので、22番を自分のIPだけ開放するとか、使わないときは閉じとくとかで設定する。
DBサーバはネットワーク内からだけ繋がればいいから、MySQLなら3306番ポートをインバウンドで内部のアドレス(VPCのCIDR)に公開してやればいい。外部(0.0.0.0/0)の設定は行わないように。
ほか必要に応じてルールを追加する。 - EC2作成
無料の範囲で作成のチェックボックスを入れると1年無料の範囲で作れるはず。(1年無料以外になるメニューが無効化される)
Amazon Linux AMIかAmazon Linux 2 LTS Candidate 2でやるのがよいかと思う。
以降の説明はAmazon Linux AMIなので、そっち選んどけば、以降の手順の通りにやれば動く、、、かもしれない。 - ElasticIP割当
ElasticIPってのはいわゆる固定IPアドレスです。
インスタンスに割り当てないとお金がかかるので、EC2を作ってから割り当てます。
作成したインスタンスに割り当てます。 - RDS作成
EC2と同様に無料の範囲で作成のチェックボックスを入れる。
WordPressならMySQLかMariaDBを選択する。
MySQLの場合、DBインスタンス識別子、マスターユーザ名、マスターパスワードは忘れずにメモっておく。
サブネットとかセキュリティグループは既存のものを選択でDB用に作成したやつを選ぶ。 - EC2の設定
- 接続するには
EC2インスタンスを作るときに作成したpemファイル(キーペア)をppkファイルに変換して、puttyに設定してログインします。
ppkファイルに変換するには、puttygen.exeを使う。
Conversions → Inport Key → pemファイルを選んで → Generateする。
ppkファイルが作成されるので、puttyの接続 → SSH → 認証として、中にある認証のためのプライベートキーファイルというところにセットする。
接続先はパブリック DNS (IPv4)ってところに書かれてるアドレスです。ユーザーはec2-userです。 - 接続できたら、とりあえず更新する
sudo yum -y update - nginx、PHPをインストールする
sudo yum -y install nginx
sudo yum -y install php71
sudo yum -y install php71-mbstring
sudo yum -y install php71-pdo
sudo yum -y install php71-fpm
sudo yum -y install php71-mysqlnd
php7.2はまだ入れられなかった。(2018年6月1日時点) - nginxの設定
- /etc/nginx/nginx.conf
httpディレクティブに
server_tokens off; - /etc/nginx/conf.d/*.conf
ドメインの数だけ設定を作成する。
fastcgi_pass 127.0.0.1:9000;
ではなく
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
としないと、111: Connection refusedが発生した。
- /etc/nginx/nginx.conf
- PHPの設定
/etc/php-fpm-7.1.d/www.conf
userとgroupをnginxの実行ユーザーにした。
あとここでも
127.0.0.1:9000
ではなく、
/var/run/php-fpm/php-fpm.sock
とする必要があった。
(2018/6/3 追記)
Out of memoryが発生したので、
pm = static
に変更して、pm.max_childrenを減らした。 - WordPressの配備
/var/www/html/wordpress
に解凍して配備。
初回の場合はインストールのPHPにアクセスしてインストール。
移行の場合はwp-config.phpをいじってDBにつなげる。
DBはRDSでエンドポイントって書かれてるのがアドレスで、セキュリティグループの設定がちゃんとしてれば、すんなり繋がる。 - 自動起動
sudo service nginx start
sudo chkconfig nginx on
sudo service php-fpm start
sudo chkconfig php-fpm on
- 接続するには