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:
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user