EC2でWEBサーバーを立ち上げ、セッティング、PHPをインストールしSESを使った問い合わせを実装したWEBサイトをRoute53でドメインを紐付け公開する手順の記録。
今後の予定としてこの手順を自動化しデプロイ可能にすること。
EC2の起動
Amazon Linux AMIを利用、InstanceTypeはとりあえずt2.micro、EBSは8GB、他はデフォルトのまま。
※ReservedInstanceの設定は今回はなし
SecurityGroupを設定
Inbound SSH
Outbound All
Elastic IPの設定
InstanceIDを指定し、ElasticIPをひもづける。
EC2にSSH接続
秘密認証キーのパーミッション変更
$chmod 400 ~/hoge/hoge.pem
sshアクセス
$ssh -i ~/hoge/hoge.pem ec2-user@xx.xx.xx.xx
WEBサーバーセッティング
- SecurityGroup確認、InboundのHTTP、HTTPSを許可する。
- 参考リンクをもとにApache、PHPをインストール後、Apacheを起動する。
参考リンク チュートリアル: LAMP ウェブサーバーのインストール - Amazon Elastic Compute Cloud
- ブラウザにElasticIPで設定したIPアドレスでアクセスし、ApacheのTestページが表示されればOK!
- 次にapacheのドキュメントルートの所有権の変更。コレでec2-userからドキュメントルートにアクセスを出来るようにする。
- アクセス権の設定が完了すればSFTPが利用可能なFTPソフトなどでアクセスできるようになる。
Route53を使ったホストゾーンの作成
上記リンクをもとにホストゾーンを作成後、Aレコードを設定。ドメインとElasticIPをひもづける。
今回はhoge.com、www.hoge.comに設定。
SESを使ったお問い合わせフォームの実装
###SES のセットアップ
管理画面からSESの利用設定をする。EmailAdressの設定ページでアドレスを設定。
認証メールが登録したアドレス宛に届くので確認する。
上記手順でSESお試しモード(sandbox access)の利用が可能になる。
sandbox accessとProduction Accessの違い
sandbox accessは以下の制限がある
- 登録したメールアドレスのみ送信可能
- 最大で 24 時間あたり 200 メッセージを送信できます。
- 最大で 1 秒あたり 1 メッセージを送信できます。
Production Accessでフル稼働させるにはリクエストをAWSに送る。1営業日必要。
###AWS PHP SDKのセットアップ
今回は一番簡単に実装出来る方法にしました。
1.SESの利用登録後、IAMユーザーを作成する。Policyは"AmazonSESFullAccess"を利用。
2.Credential Key Passwordを控えておく
3.こちらのダウンロードからaws.pharをダウンロード AWS SDK for PHP | アマゾン ウェブ サービス(AWS 日本語)
4.PHPスクリプトを作成。参考はこちらがわかりやすいです AWS SDK for PHPを使ってAmazon SESからメール送信 - F.Ko-Jiの「一秒後は未来」
5.あとは通常のフォーム作成と同じです!
##参考リンクまとめ
ホストゾーンの使用 - Amazon Route 53
Amazon SES のセットアップ - Amazon Simple Email Service
SSH を使用した Linux/Unix インスタンスへの接続 - Amazon Elastic Compute Cloud
AWS SDK for PHP — AWS SDK for PHP 2.7.12 documentation
AWS SDK for PHP | AWS SDK for PHP