【AWS】LaravelプロジェクトをEC2にデプロイ
Laravel & Vue CLI で作成したプロジェクトをためしにEC2サーバーにデプロイした際の作業手順メモです。
スクショとか画像で残しておけばよかったな……と思いつつほとんどコマンドラインなのでやりようがなかった気もします。
目次
- 1. 前提
- 2. ログイン
- 3. 事前準備(1回だけ)
- 4. Laravelプロジェクトのデプロイ
前提
- ウェブ:EC2サーバー(Apache)
- DB:RDS(MySQL)
- PHP:PHP7.4
- LaravelプロジェクトはGithubにコミット済み
ログイン
まずはSSHでEC2サーバーにログイン
ssh -i ~/Desktop/project/XXXXXXXXXXX-ssh-key.pem ec2-user@<IPアドレス>
事前準備(1回だけ)
Apacheインストール
Apacheインストール
sudo yum install -y httpd24
webサーバの起動
sudo service httpd start
システムがブートするたびにapacheが起動するよう設定
sudo chkconfig httpd on
有効か確認
chkconfig --list httpd
ec2-userをグループに追加する
ec2-userをApacheグループに追加する
sudo usermod -a -G apache ec2-user
一度ログアウトして再度ログインし、確認
exit
ssh -i ~/Desktop/project/XXXXXXXXXXX-ssh-key.pem ec2-user@<IPアドレス>
groups
/var/wwwの所有権をapacheグループに変更
sudo chown -R ec2-user:apache /var/www
グループの書き込み許可を追加
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;
PHPのバージョンを合わせる
バージョンを確認
開発環境のPHPと一致していれば問題ない
php -v
PHP7.4をインストール
// PHP7.4を有効に
sudo amazon-linux-extras enable php7.4
// メタデータ削除
sudo yum clean metadata
// PHPインストール
yum install php-cli php-pdo php-fpm php-json php-mysqlnd
// 追加ライブラリのインストール
sudo yum install php php-gd php-mbstring php-opcache php-xml php-common
Gitインストール
git version
sudo yum install git
composerインストール
sudo curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
忘れてしまうのでメモしておくが、初めてデプロイする前に1回だけやればよい。次はデプロイするごとに必要になる手順。
Laravelプロジェクトのデプロイ
GithubにあるLaravelプロジェクトのClone
cd /var/www/html2
git clone URL.git
ドキュメントルートの設定
VirtualHostまたはDocumentRootの設定
sudo vi /etc/httpd/conf/httpd.conf
.htaccessの設定
<Directory /var/www/html2/自分のlaravel_project/public>
AllowOverride All
</Directory>
apache再起動
sudo service httpd restart
Laravelプロジェクトでcomposerインストール
cd /var/www/html/laravelプロジェクト
composer install
config, routeのキャッシュクリア
php artisan config:cache
php artisan route:cache
プロジェクトのパーミッション変更
chmod 777 storage -R
chmod 777 bootstrap/cache -R
DB作成・権限付与
ルートでRDSのMySQLにログイン
mysql -h XXXXXXXXXX.ap-northeast-1.rds.amazonaws.com -u root -p
データベース作成
CREATE DATABASE my_database_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
show databases;
ユーザ作成
CREATE USER 'username'@'%' IDENTIFIED BY 'mypassword';
権限付与
GRANT ALL ON my_database_name.* TO 'username'@'%';
.envの設定
cp .env.example .env
vi .env
// 共通
APP_URL=http://IPアドレス ←サーバーのIPにする
// DB関連
DB_CONNECTION=mysql
DB_HOST=←RDSのエンドポイント
DB_DATABASE=データベース名
DB_USERNAME=RDS作成時のユーザ名
DB_PASSWORD=設定したパスワード
// メール送信関連(SESを使用する場合)
MAIL_MAILER=ses
MAIL_FROM_ADDRESS=no-reply@mailaddress.com
SES_KEY=XXXXXXXXXXXXX
SES_SECRET=xxxxxxxxxxxxxxxxxx
SES_REGION=ap-northeast-1
キーを作成し、キャッシュをクリアする
php artisan key:generate
php artisan config:clear
テーブル作成
php artisan migrate
HTTPS化する
[Laravel 7.x HTTPリクエスト]リクエストの取得→信用するプロキシの設定
cd app/Http/Middleware/
vi TrustProxies.php
protected $proxies = '*';
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;

ディスカッション
コメント一覧
まだ、コメントがありません