前書き
今回は、作成したポートフォリオをAWS上に作成した本番環境にデプロイしてみました。
環境
上記記事に準じて環境構築を行っています、
また、VPC・EC2インスタンス・RDSの作成については省略します。
実現したいこと
・AWS上にデプロイし、作成したアプリを公開
対応方法
①EC2インスタンスに各種インストール
○各種アップデート
sudo yum update -y
○webサーバーインストール→今回はnginx
sudo amazon-linux-extras enable nginx1
sudo yum install nginx -y
○phpインストール
→php8.1のインストールにはamazon-linux-extrasコマンドが使用不可
→eoel(Extra Packages for Enterprise Linux)を使用して導入する
# php8.1と関連するモジュールのインストール
sudo yum install php81 php81-php-mbstring php81-php-mysqlnd php81-php-gd php81-php-xml php81-php-fpm -y
# phpコマンドの変更
sudo alternatives --install /usr/bin/php php /usr/bin/php81 1
# インスタンス再起動で自動立ち上げ
sudo systemctl enable php81-php-fpm
○EC2インスタンスにMYSQLをインストール
sudo yum -y install mysql
# RDSへの接続確認
mysql -u ユーザー名 -p -h RDSのエンドポイント
○composerインストール
②設定ファイル内容変更 php-fpmとnginx
○php-fpm設定変更
sudo vim /etc/opt/remi/php81/php-fpm.d/www.conf
# /etc/opt/remi/php81/php-fpm.d/www.conf記載を修正
user = nginx
group = nginx
listen = /var/opt/remi/php81/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
○nginx設定変更(一部省略)
sudo vim /etc/nginx/conf.d/laravel.conf
server {
listen 80 default_server;
listen [::]:80;
server_name hogehoge.com;
root /var/www/src/public;
~~~
root の記載は publicディレクトリまでのルートをすべて記載する
今回の場合は、/var/www ディレクトリを作成し、その直下に展開するため /var/www/src/public としています。
③リポジトリからgit clone
○gitインストール
sudo yum install git -y
gitにSSH接続できるように公開鍵・秘密鍵の登録しておく
ssh -T git@github.com
# 下記の通り帰ってくればSSH接続成功
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access.
○アプリ配置用のディレクトリ作成
sudo mkdir /var/www
# 作成した/var/wwwに移動
cd /var/www
# 書き込み権限付与
sudo chown ec2-user /var/www
○gitからアプリをclone
# . をつけることで今いるディレクトリの直下に展開される
git clone git@github.com:「アカウント名」/「アプリ名」.git .
○Laravel初期設定
# Laravelをインストールするディレクトリに移動
cd /var/www/src
# Laravelインストール
composer install
# .envファイルがないため、コピーして本番環境用に変更する
cp .env.example .env
○.envファイルの修正(一部省略)
APP_NAME=Laravel
# 本番環境なのでlocalから変更
APP_ENV=production
# php artisan key:generate でセットする
APP_KEY=
# falseだとエラー詳細が出なくなる、本番環境なのでtrueから変更
APP_DEBUG=false
# アプリURLを記載
APP_URL=http://hogehoge.com
DB_CONNECTION=mysql
DB_HOST= 作成したRDSのエンドポイントを記載
DB_PORT=3306
# 作成したデータベース名を指定
DB_DATABASE=laravel
# RDS作成時のユーザー名
DB_USERNAME=hogehoge
# RDS作成時のパスワード
DB_PASSWORD=secret
~~~
○その他
# データベースのマイグレーション
php artisan migrate
# vue.jsを使っていたので表示させるために、node.jsインストールとコンパイル
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum install -y nodejs
npm install
npm run dev
最後に
ALBを利用したhttps化の実装についても、後日まとめたいと思います。
学習中のため、記載内容に誤りがある場合はご指摘いただけると幸いです。
参考