概要
Elastic BeanstalkでNuxt.jsをデプロイ
AWSコンソール
- Elastic BeanstalkでNode.jsプラットフォームの環境を作成
- [設定] - [ソフトウェア] - [変更]でノードコマンドに
npm run eb-start
を入力 - [設定] - [ソフトウェア] - [変更]で環境変数を設定
ローカル環境
- eb initを実行
- /package.json内の
scripts
に"eb-start": "npm run build && npm run start",
を追加 - npm installで失敗する場合
- /.npmrcファイルを作成して
unsafe-perm=true
と入力 - 下記の内容で/.ebextensions/chown.configを作成
commands:
chown:
command: chown -R nodejs:nodejs /tmp/.config
test: cd /tmp/.config
- /Procfileがある場合は/.ebignoreファイルを作成してProcfileをデプロイしないようにする
eb deployでデプロイ
Elastic BeanstalkでLaravelをデプロイ
AWSコンソール
- Elastic BeanstalkでPHPプラットフォームの環境を作成
- [設定] - [ソフトウェア] - [変更]で環境設定でドキュメントルートに
/public
を設定 - [設定] - [ソフトウェア] - [変更]で環境変数を設定
- [設定] - [データベース] - [変更] からRDSインスタンスを作成
ローカル環境
- eb init
- 下記の内容で/.ebextensions/permission.configを作成
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_change_permissions.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
sudo chmod -R 777 /var/app/current/storage
eb deployでデプロイ
Route53でドメインを設定
下のページを参考にドメインと証明書を取得
https://qiita.com/sk565/items/2da1fc0c5fc676f54994
現在は東京リージョンでも証明書の発行ができるようだ
https://aws.amazon.com/jp/about-aws/global-infrastructure/regional-product-services/
セキュリティグループを修正
VPCのメニューからElastic Beanstalkで作成されたセキュリティグループを修正
- Nuxt.jsのセキュリティグループのインバウンドルールにHTTPSを追加
- LaravelのセキュリティグループのインバウンドルールにHTTPSとRDSのドライバを追加
ロードバランサーを作成
EC2のメニューからターゲットグループとロードバランサーを作成
- Nuxt.jsのインスタンスに80番ポートで接続するターゲットグループを作成
- Laravelのインスタンスに80番ポートで接続するターゲットグループを作成
- Nuxt.js用のロードバランサーを作成
- Nuxt.jsのセキュリティグループを紐づける
- リスナーの転送先にNuxt.jsのターゲットグループを設定
- Laravel用のロードバランサーを作成
- Laravelのセキュリティグループを紐づける
- リスナーの転送先にLaravelのターゲットグループを設定
ホストゾーンを作成
Route 53のでホストゾーンを作成
- ホストゾーンを作成
- レコードを作成
- ドメインとロードバランサーを設定