LoginSignup
1
0

More than 1 year has passed since last update.

Laravel9で作成したアプリをAWSにデプロイする

Posted at

前書き

今回は、作成したポートフォリオを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ファイルの修正(一部省略)

.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化の実装についても、後日まとめたいと思います。
学習中のため、記載内容に誤りがある場合はご指摘いただけると幸いです。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0