logikinc
7/27/2017 - 8:10 PM

Laravel Forge deploy script without downtime

Laravel Forge deploy script without downtime

# stop script on error signal
set -e

# remove old deployment folders
if [ -d "/home/forge/deploy" ]; then
  rm -R /home/forge/deploy
fi
if [ -d "/home/forge/backup" ]; then
  rm -R /home/forge/backup
fi

cp -R /home/forge/default /home/forge/deploy

# Update
cd /home/forge/deploy
git pull origin master
composer install
php artisan migrate --force

# Switch (downtime for microseconds)
mv /home/forge/default /home/forge/backup
mv /home/forge/deploy /home/forge/default

# Reset opcache
echo "<?php opcache_reset(); echo 'opcache reset' . PHP_EOL; ?>" > /home/forge/default/public/opcachereset.php
curl http://localhost/opcachereset.php
rm /home/forge/default/public/opcachereset.php