#はじめに
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