LoginSignup
170
175

More than 3 years have passed since last update.

laravelをAWS EC2にデプロイする

Last updated at Posted at 2019-06-25

はじめに

vagrantなどのローカル開発環境で作成したlaravelプロジェクトをAWSのEC2上にデプロイする時に色々迷ったので、まとめとしてあげます。本番サーバにAWSを使ってみたいという方に見て頂ければと思います。

環境

php7.2.18
apache2.4.39
laravel5.7
EC2(Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type 無料枠)
RDS(mysqlを使用)

前提

・ローカルで開発したプロジェクトをすでにgithubにプッシュ済み
・EC2にSSH接続できている
・EC2からRDSへ接続できる設定ができている(セキュリティグループなど)

PHP7.2インストール

インストールできるリスト確認
sudo yum list available | grep php72

インストール
sudo yum install -y \
  php72 php72-devel php72-fpm php72-gd php72-mbstring \
  php72-mysqlnd php72-pdo \
  php72-xml php72-json

インストール済みを確認
sudo yum list installed | grep php72

バージョン確認
php -v

Mysqlインストール RDSとの接続

インストール
sudo yum -y install mysql

接続
mysql test_db -h <エンドポイント> -P 3306 -u test_user -p

apacheインストール

sudo yum install -y httpd24

上記の流れでインストールを進めていると、なぜかすでにインストール済みと出た。
どこで入れたかわからなかった。
続きの設定を行っていく

wabサーバの起動
sudo service httpd start

システムがブートするたびにapacheが起動するよう設定
sudo chkconfig httpd on

有効か確認
chkconfig --list httpd

ドキュメントルートの権限変更

ユーザをapacheグループに追加
sudo usermod -a -G apache ec2-user

一旦ログアウト
exit

グループのメンバーシップを検証
groups

グループ所有権をapacheグループに変更
sudo chown -R ec2-user:apache /var/www

グループの書き込み許可追加
sudo chmod 2775 /var/www

サブディレクトにグループ ID を設定するには、/var/www とサブディレクトのディレクトリ許可
find /var/www -type d -exec sudo chmod 2775 {} \;

グループ書き込み許可を追加するには、/var/www とサブディレクトリのファイル許可を再帰的に変更します。
find /var/www -type f -exec sudo chmod 0664 {} \;

Gitインストール

sudo yum install git

composer自身のインストール

インストール
sudo curl -sS https://getcomposer.org/installer | php

パスを通す
sudo mv composer.phar /usr/local/bin/composer

LaravelプロジェクトのClone

cd /var/www/html
git clone <URL>

apacheのドキュメントルート設定

設定ファイルを開く
sudo vi /etc/httpd/conf/httpd.conf

以下に変更
DocumentRoot "/var/www/html/自分のlaravel_project/public

最終行に以下を追記
# .htaccess 有効化
<Directory /var/www/html/自分のlaravel_project/public>
    AllowOverride All
</Directory>

サービス再起動
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

.envの設定

git cloneしたLaravelプロジェクトには.envファイルがないので、
composer insatallで作成された、.env.exsampleを使用する

cp .env.example .env
vi .env

APP_URL=http://IPアドレス ←サーバーのIPにする

DB_CONNECTION=mysql
DB_HOST=←RDSのエンドポイント
DB_DATABASE=データベース名
DB_USERNAME=RDS作成時のユーザ名
DB_PASSWORD=設定したパスワード

キーを作成し、キャッシュをクリアする

php artisan key:generate
php artisan config:clear

テーブル作成

php artisan migrate

シンボリックリンクの作成

これは作成したアプリで画像アップロードしているような場合は必要かと思います。

php artisan storage:link

ブラウザで確認する

あとはブラウザでEC2のIPアドレスを入力するだけです!
ここまでくればブラウザで正しく表示されるかと思います!

参考

https://qiita.com/reflet/items/11ad79e01e808876caa1
https://nori-life.com/install-laravel-aws/
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html
https://qiita.com/takg/items/9a044b36cdf216a42ba6
https://qiita.com/nbapps_dev/items/9307e6fc0edb59c09181

170
175
2

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
170
175