Zero downtime deployments keep your site live during code pushes. This guide uses Git hooks and atomic symlinks for bulletproof deployments.
Directory Structure
/var/www/
├── releases/ # each deployment here
├── shared/ # persistent files (uploads, .env)
└── current -> releases/latest/ # symlink
Step 1 — Create Shared Directories
mkdir -p /var/www/{releases,shared/storage}
touch /var/www/shared/.env
Step 2 — Create Deployment Script
nano /usr/local/bin/deploy.sh
#!/bin/bash
set -e
RELEASE="/var/www/releases/$(date +%Y%m%d_%H%M%S)"
git clone --depth 1 [email protected]:yourorg/repo.git $RELEASE
ln -nfs /var/www/shared/.env $RELEASE/.env
ln -nfs $RELEASE /var/www/current
sudo nginx -s reload
ls -dt /var/www/releases/* | tail -n +4 | xargs rm -rf
echo "Deployed: $RELEASE"
chmod +x /usr/local/bin/deploy.sh
Step 3 — Configure Nginx
root /var/www/current/public;
disable_symlinks off;
Step 4 — Test Deployment
deploy.sh
Rollback
PREV=$(ls -dt /var/www/releases/* | sed -n '2p')
ln -nfs $PREV /var/www/current
sudo nginx -s reload
Conclusion
Zero downtime deployments are essential for production. Our managed server support team sets up full CI/CD pipelines with automated rollback.

Comments