#!/bin/bash # Deploy production nginx configuration for Post-ERG (NEW STRUCTURE) # This script applies the nginx config for /var/www/posterg/public/ structure set -e echo "🚀 Post-ERG Production Deployment (NEW STRUCTURE)" echo "==================================================" echo "" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # Check if running as root if [ "$EUID" -ne 0 ]; then echo -e "${RED}Error: This script must be run as root (use sudo)${NC}" exit 1 fi echo "📋 Step 1: Fixing file permissions..." echo "--------------------------------------" # Change ownership to www-data:posterg chown -R www-data:posterg /var/www/posterg/ echo "✓ Changed ownership to www-data:posterg" # Set directory permissions (755) find /var/www/posterg -type d -exec chmod 755 {} \; echo "✓ Set directory permissions to 755" # Set file permissions (644) find /var/www/posterg -type f -exec chmod 644 {} \; echo "✓ Set file permissions to 644" # Make database directory writable by group if [ -d "/var/www/posterg/database" ]; then chmod 775 /var/www/posterg/database echo "✓ Made database directory group-writable (775)" fi # Fix database file permissions if [ -f "/var/www/posterg/storage/test.db" ]; then chmod 660 /var/www/posterg/storage/test.db chown www-data:posterg /var/www/posterg/storage/test.db echo "✓ Fixed database file permissions (660)" fi # Make admin upload directories writable by group if [ -d "/var/www/posterg/public/admin/data" ]; then find /var/www/posterg/public/admin/data -type d -exec chmod 775 {} \; echo "✓ Made admin upload directories group-writable" fi echo "" echo "📋 Step 2: Deploying nginx configuration..." echo "--------------------------------------" # Backup existing config if [ -f "/etc/nginx/sites-available/posterg" ]; then cp /etc/nginx/sites-available/posterg /etc/nginx/sites-available/posterg.backup.$(date +%Y%m%d_%H%M%S) echo "✓ Backed up existing config" fi # Copy new config if [ -f "/tmp/posterg.conf" ]; then cp /tmp/posterg.conf /etc/nginx/sites-available/posterg echo "✓ Installed new nginx config" else echo -e "${RED}Error: /tmp/posterg.conf not found${NC}" echo "Run 'just deploy-nginx' first" exit 1 fi # Test nginx configuration echo "" echo "📋 Step 3: Testing nginx configuration..." echo "--------------------------------------" if nginx -t; then echo -e "${GREEN}✓ Nginx configuration is valid${NC}" else echo -e "${RED}✗ Nginx configuration has errors!${NC}" echo "Restoring backup..." cp /etc/nginx/sites-available/posterg.backup.$(date +%Y%m%d_%H%M%S | tail -1) /etc/nginx/sites-available/posterg exit 1 fi echo "" echo "📋 Step 4: Summary..." echo "--------------------------------------" echo -e "${GREEN}✓ Permissions fixed${NC}" echo -e "${GREEN}✓ Nginx config installed${NC}" echo -e "${GREEN}✓ Configuration validated${NC}" echo "" echo -e "${YELLOW}Ready to reload nginx!${NC}" echo "" echo "Run: ${GREEN}sudo systemctl reload nginx${NC}" echo "" echo "After reload, verify:" echo " • https://posterg.erg.be/" echo " • https://posterg.erg.be/admin/" echo " • https://posterg.erg.be/storage/test.db (should 404)"