EC2
- ダッシュボードで、「インスタンスを起動」を押下
- マシンイメージでAmazon Linux 2 を選択
- インスタンスタイプでt2.microを選択して次に進む
- 基本的にはデフォルト設定のまま進み、「セキュリティグループの設定」までいく
- セキュリティグループの設定で、適当なセキュリティグループ名 (後から探す時にわかりやすいもの、ここではlaravel-testとした)と、HTTPとHTTPSルールを追加して「確認と作成」押下
- インスタンス作成の確認で内容を確認し、「起動」ボタンで作成 & 起動する
- EC2のダッシュボードから「実行中のインスタンス」を押下して一覧へ移動
- 作成したインスタンスが、少しすると実行中になるので、
インスタンスIDを押下して詳細へ移動 - Elastic IP アドレスが紐付けられていない場合、作成&紐付けを行う
- 検索窓に「Elastic IP」を入力して移動する
- 「Elastic IPアドレスの割り当て」を押下して割り当て画面に移動後、「割り当て」を押下
- 一覧から、作成したIPの「割り当てられた IPv4 アドレス」をクリックして詳細画面に移動
- 右上の「関連付け」ボタンを押下
- インスタンスで今回作成したインスタンスを選択 &
プライベートIPアドレスで今回作成したプライベートIPアドレスを選択して
「関連付ける」押下
- ロードバランサー 設定
- 「ロードバランサーの作成」を押下
- 「HTTP/HTTPS」を選択
- 適当な名前を入力、HTTPSリスナーを追加、
「アベイラビリティーゾーン」でインスタンスのゾーンを選んで次へ
- 「セキュリティ設定の構成」で証明書を選択して次へ
- 「セキュリティグループの設定」でEC2作成時に指定したセキュリティグループ名を選択して次へ
- 「ルーティングの設定」で適当な名前を入力して新しくターゲットグループを作成
- 「ターゲットの登録」で作成したインスタンスを選択して次へ
- 入力内容を確認&「作成」ボタン押下
Route 53でドメイン設定
- 検索窓でRoute 53と入力
- ドメイン追加
- Aレコードでインスタンスの「Elastic IP アドレス」を指定する
SSH接続
- 対象のインスタンス詳細画面の「接続」ボタン押下でSSH情報が確認できる
RDS作成
- RDSを検索して画面遷移
- 「データベースの作成」を押下して作成画面へ
- エンジンのオプションはMySQLを選択、バージョンは5.7にした
- DB インスタンス識別子はわかりやすい名前に変更した方がいいかも
- VPC セキュリティグループは適当な名前で新規作成しておく
アベイラビリティーゾーンはEC2インスタンスと同じにしておく
- 諸々確認して、作成ボタン押下
- 作成したデータベースの詳細に移動し、「VPC セキュリティグループ」をクリック
- 選択されているセキュリティグループをクリックして詳細へ移動
- 「インバウンドのルールを編集」を押下
- 「MySQL/Aurora」のルールを追加して、EC2インスタンスのセキュリティグループを指定する
s3作成
- S3に移動
- 「バケットを作成」押下
- 適当な名前を入力して「作成」押下
- S3アクセス用のIAMロールを作成
- IAMに移動
- ロールをクリックしてロール一覧へ移動
- 「ロールの作成」を押下
- EC2を選択して次へ
- 「ポリシーの作成」を押下
- JSONタブを押下して下記内容を入力
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::*"
],
"Effect": "Allow"
},
{
"Action": "*",
"Resource": [
"arn:aws:s3:::[許可をするバケット名]",
"arn:aws:s3:::[許可をするバケット名]/*"
],
"Effect": "Allow"
}
]
}
- タグはそのままスキップして確認へ
- ポリシーの名前を入力して「ポリシーの作成」押下
- ロールの作成で登録したポリシーを選択して次へ
- タグはスキップして確認へ
- ロール名を入力して「ロールの作成」押下
- 作成したロールをEC2に適用する
- インスタンス一覧に移動して、
Laravelのインスタンスを選択 > アクション > セキュリティ > IAMロールの変更を選択
- 先程作成したロールを選択して「保存」
Apacheいれる
- ssh接続をしてApacheいれる
sudo yum update -y
sudo yum -y install mysql git httpd curl
sudo systemctl start httpd
- これでドメインにアクセスするとApacheのテストページが表示される
- MySQL接続確認
ホスト: RDS詳細にある「エンドポイント」
ユーザー: 作成したユーザー (admin)
パスワード: 入力したパスワード
mysql -h xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p
- PHPいれる
$ sudo amazon-linux-extras install -y php7.4
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo yum install -y php-xml
$ sudo yum install -y php-mbstring
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
(省略)
- LaravelのソースをGitからプルする
$ sudo chown ec2-user:ec2-user /var/www
$ cd /var/www
$ git clone {URL}
$ ls
cgi-bin html laravel_test
$ cd laravel_test
$ composer install
$ cp .env.example .env
$ vim .env
# MySQLの情報を更新
DB_CONNECTION=mysql
DB_HOST=XXXXX.rds.amazonaws.com # RDSのエンドポイント
DB_PORT=3306
DB_DATABASE=laravel_test # RDSのデータベース名
DB_USERNAME=admin # RDSのユーザー名
DB_PASSWORD=password # RDSのユーザーパスワード
# S3の情報
# EC2にS3アクセス用のIAMロールを設定しているためアクセスキーとシークレットキーは空白でOK
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=バケット名
$ php artisan key:generate
$ php artisan migrate
- パスを通す
$ sudo vi /etc/httpd/conf/httpd.conf
# DocumentRoot "/var/www/html"
DocumentRoot "/var/www/{今回作成したディレクトリ名}/public"
# 追記
<Directory /var/www/{今回作成したディレクトリ名}/public>
AllowOverride All
</Directory>
$ sudo service httpd restart
EC2にLaravelを構築した忘備録