Add config validation and post-restart verification to Option 4

- Validate pool configuration after changes applied
- Automatic rollback if config validation fails
- Verify PHP-FPM restarted successfully and is accepting connections
- Verify new configuration actually loaded into memory
- Automatic rollback if PHP-FPM doesn't start after changes
- Provides safety checks to prevent broken configurations
- Better error handling and recovery options

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
cschantz
2026-02-17 23:05:32 -05:00
parent b3c60f9c1e
commit a0bdedfbaf
+59 -7
View File
@@ -670,6 +670,35 @@ optimize_domain() {
cecho "${CYAN}─────────────────────────────────────────────────────────────────────${NC}"
if [ "$changes_made" -gt 0 ]; then
# Validate the pool config before reloading
cecho "${CYAN}Validating configuration...${NC}"
local config_valid=true
if [ -n "$pool_config" ] && [ -f "$pool_config" ]; then
if ! validate_pool_config "$pool_config" >/dev/null 2>&1; then
cecho "${RED}✗ Configuration validation failed!${NC}"
cecho "${YELLOW}The modified configuration has syntax errors.${NC}"
config_valid=false
# Offer to rollback
if confirm "Rollback changes?"; then
cecho "${CYAN}Rolling back configuration...${NC}"
if rollback_domain_config "$username" "$domain" >/dev/null 2>&1; then
cecho "${GREEN}✓ Configuration restored from backup${NC}"
else
cecho "${RED}✗ Rollback failed - manual recovery may be needed${NC}"
cecho "${YELLOW}Backup location: $backup_dir${NC}"
fi
echo ""
read -p "Press Enter to continue..."
return
fi
else
cecho "${GREEN}✓ Configuration is valid${NC}"
fi
fi
echo ""
cecho "${GREEN}${BOLD}✓ Applied $changes_made optimization(s)${NC}"
if [ "$changes_failed" -gt 0 ]; then
@@ -688,20 +717,43 @@ optimize_domain() {
cecho "${CYAN}Restarting PHP-FPM ($php_version)...${NC}"
if reload_php_fpm "$php_version" >/dev/null 2>&1; then
cecho "${GREEN}✓ PHP-FPM reloaded successfully${NC}"
cecho "${GREEN}✓ PHP-FPM reloaded${NC}"
# Verify it's running
sleep 1
sleep 2
if verify_php_fpm_running "$php_version" >/dev/null 2>&1; then
cecho "${GREEN}✓ PHP-FPM is running${NC}"
cecho "${GREEN}✓ PHP-FPM is running and accepting connections${NC}"
# Verify applied changes - check if new config loaded
local verify_result
verify_result=$(verify_applied_changes "$username" "$domain" 2>/dev/null || echo "")
if [ -n "$verify_result" ]; then
cecho "${GREEN}✓ New configuration loaded successfully${NC}"
fi
else
cecho "${RED}✗ WARNING: PHP-FPM may not be running!${NC}"
cecho "${YELLOW}Run: systemctl status ea-php${php_version#ea-php}-php-fpm${NC}"
cecho "${RED}✗ WARNING: PHP-FPM is not responding!${NC}"
cecho "${YELLOW}Service may have crashed due to invalid configuration.${NC}"
cecho "${YELLOW}Attempting rollback...${NC}"
if rollback_domain_config "$username" "$domain" >/dev/null 2>&1; then
cecho "${GREEN}✓ Configuration rolled back${NC}"
cecho "${YELLOW}Restart PHP-FPM manually once this script completes${NC}"
else
cecho "${RED}✗ Rollback failed - manual recovery needed${NC}"
cecho "${YELLOW}Backup location: $backup_dir${NC}"
fi
fi
else
cecho "${RED}✗ Failed to restart PHP-FPM${NC}"
cecho "${YELLOW}You may need to restart manually:${NC}"
cecho "${YELLOW}systemctl restart ea-php${php_version#ea-php}-php-fpm${NC}"
cecho "${YELLOW}Attempting rollback...${NC}"
if rollback_domain_config "$username" "$domain" >/dev/null 2>&1; then
cecho "${GREEN}✓ Configuration rolled back to previous state${NC}"
else
cecho "${RED}✗ Rollback failed - manual recovery may be needed${NC}"
cecho "${YELLOW}Backup location: $backup_dir${NC}"
fi
fi
else
cecho "${YELLOW}Skipping restart - remember to restart PHP-FPM manually!${NC}"