Posted at

AWSでWEBサーバー構築手順

More than 3 years have passed since last update.

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ソフトなどでアクセスできるようになる。


参考リンク AWSインスタンスにSFTPで接続(Cyberduck) | 日々是迷子



Route53を使ったホストゾーンの作成

上記リンクをもとにホストゾーンを作成後、Aレコードを設定。ドメインとElasticIPをひもづける。

今回はhoge.com、www.hoge.comに設定。


参考リンク ホストゾーンの使用 - Amazon Route 53



SESを使ったお問い合わせフォームの実装


SES のセットアップ


参考リンク Amazon SES のセットアップ - Amazon Simple Email Service


管理画面から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