The problem


Rolling deploys break active sessions. Every manual copy-paste deployment is a bet.

The solution


A tiny blue-green deploy pipeline with symlink flips:

rsync -a --delete release/ prod/
ln -sfn release current
systemctl reload php-fpm


Key takeaways


  • Keep two releases at all times

  • Health-check before flipping symlink

  • Rollback is just flipping back


  • Deploying safely is not magic. It is discipline.