常にGitリポジトリのmasterブランチにリリースしたいソースが置いてあること前提
プロジェクトのルート以下に deploy ディレクトリを作って、そこに以下のシェルを update.sh
として設置し、デプロイしたくなったら叩く
deploy/update.sh #!/bin/sh
cd `dirname $0`
cd ../
# pull
sudo git fetch
sudo git merge origin/master
# Laravel Mixでlessコンパイルとか
sudo npm run production
# 何かの拍子にstorageのパーミッションと所有権が変わっちゃってたら嫌だから (www-dataはApacheのユーザー)
sudo chmod 755 storage -R
sudo chown www-data:www-data storage -R
# うちでは.envの1行目にCSS等のキャッシュのバージョンを書いてるから、そこを現在日時で更新
today=$(date "+%Y%m%d%H%M%S")
sudo sed -i -e "1s/ASSET_VERSION=\(.*\)/ASSET_VERSION=${today}/g" .env
# いろいろ最適化
sudo composer install --optimize-autoloader --no-dev
sudo php artisan config:cache
sudo php artisan route:cache
こんな sudo
だらけなのはたぶんダメな気がする、つか Do not run Composer as root/super user!
って言われる。実際、これを叩くと所有者がほとんど root になるから、ユーザーとかパーミッション周りはもっとなんとかしなきゃダメだと思うけど、自分専用のサーバーなのでやる気が出ない
Apacheのユーザーは環境によって違うかも
lessはデプロイ時にここでコンパイルしてるけどこれで正しいのかわからない
『いろいろ最適化』のところは↓公式マニュアル参照
Laravel 5.6 デプロイ