diff --git a/README.md b/README.md index 1c6e2ca..3ba5aaf 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ server-toolkit/ │ │ ├── hardware-health-check.sh # Hardware diagnostics │ │ ├── mysql-query-analyzer.sh # MySQL performance analysis │ │ ├── network-bandwidth-analyzer.sh # Network analysis +│ │ ├── php-optimizer.sh # PHP Configuration Optimizer (NEW!) │ │ └── (other performance modules) │ │ │ └── maintenance/ # 🧹 System Maintenance @@ -64,7 +65,10 @@ server-toolkit/ │ ├── system-detect.sh # System type detection │ ├── user-manager.sh # User account management │ ├── mysql-analyzer.sh # MySQL utilities -│ └── reference-db.sh # Cross-module intelligence sharing +│ ├── reference-db.sh # Cross-module intelligence sharing +│ ├── php-detector.sh # PHP configuration detection (NEW!) +│ ├── php-analyzer.sh # PHP performance analysis engine (NEW!) +│ └── php-config-manager.sh # PHP config backup/restore/modification (NEW!) │ ├── config/ # Configuration files │ ├── settings.conf # Main configuration @@ -125,6 +129,14 @@ source /root/server-toolkit/run.sh - Process issue detection (zombies, high CPU/MEM consumers) - MySQL performance monitoring - Actionable recommendations based on findings +- **PHP Configuration Optimizer** (NEW!): Per-domain PHP optimization + - Analyzes PHP-FPM pool configurations across all domains + - Detects max_children issues from 7-day error log history + - OPcache hit rate analysis and tuning recommendations + - Memory limit optimization based on actual usage + - Auto-backup before changes with rollback capability + - Graceful PHP-FPM reload for zero downtime + - Supports cPanel, InterWorx, Plesk, standalone Apache - **Smart Recommendations**: Context-aware suggestions based on findings - **Multi-Panel Support**: cPanel, InterWorx, Plesk, standalone Apache diff --git a/docs/DEVELOPMENT_LOG.md b/docs/DEVELOPMENT_LOG.md new file mode 100644 index 0000000..39909a9 --- /dev/null +++ b/docs/DEVELOPMENT_LOG.md @@ -0,0 +1,258 @@ +# Server Toolkit Development Log + +**Purpose**: Comprehensive tracking of ALL development work, changes, and decisions +**Last Updated**: 2025-12-03 + +--- + +## December 2-3, 2025: PHP Configuration Optimizer (Complete) + +### Summary +Built comprehensive PHP configuration optimization system with 7 phases of development. + +### Components Created + +#### 1. lib/php-detector.sh (428 lines, 17 functions) +**Purpose**: Detect and locate all PHP configuration files across control panels +**Created**: December 2, 2025 + +**Functions**: +- `detect_php_version_for_domain()` - Detect PHP version per domain +- `detect_php_binary()` - Find PHP binary path +- `find_php_ini()` - Locate php.ini files (4 priority levels) +- `find_fpm_pool_config()` - Find PHP-FPM pool configs +- `find_all_php_configs()` - Comprehensive config discovery +- `get_opcache_config_file()` - Locate OPcache configs +- 11 additional detection functions + +**Control Panel Support**: +- cPanel (ea-php, MultiPHP) +- InterWorx (SiteWorx) +- Plesk +- Standalone Apache + +#### 2. lib/php-analyzer.sh (940 lines, 14 functions) +**Purpose**: Analyze PHP performance metrics and generate recommendations +**Created**: December 2, 2025 + +**Functions**: +- `get_opcache_stats()` - Extract OPcache statistics +- `calculate_opcache_hit_rate()` - Calculate hit percentage +- `check_max_children_errors()` - Scan 7-day error logs +- `analyze_php_memory_usage()` - Memory consumption analysis +- `get_process_manager_stats()` - PHP-FPM pm stats +- `recommend_max_children()` - Calculate optimal max_children +- `recommend_memory_limit()` - Calculate optimal memory_limit +- `recommend_opcache_settings()` - OPcache tuning recommendations +- 6 additional analysis functions + +**Key Features**: +- 7-day historical error log analysis +- OPcache hit rate calculation with division-by-zero protection +- Intelligent max_children recommendations based on actual errors +- Memory limit optimization based on real usage patterns + +#### 3. lib/php-config-manager.sh (509 lines, 14 functions) +**Purpose**: Backup, restore, and modify PHP configurations safely +**Created**: December 2, 2025 + +**Functions**: +- `backup_user_php_configs()` - Create timestamped backups with metadata +- `restore_from_backup()` - Restore from backup with verification +- `list_backups()` - Display all available backups +- `delete_backup()` - Remove backup directories +- `modify_fpm_pool_setting()` - Modify PHP-FPM pool settings via sed +- `modify_php_ini_setting()` - Modify php.ini settings +- `apply_fpm_pool_settings()` - Batch apply multiple settings +- `restart_php_fpm()` - Restart PHP-FPM service +- `reload_php_fpm()` - Graceful reload (zero downtime) +- `verify_php_fpm_running()` - Verify service status +- 4 additional configuration functions + +**Backup System**: +- Location: `/root/server-toolkit/backups/php/` +- Format: Timestamped directories with metadata +- Preserves directory structure and permissions +- Tracks all backed up files with original paths + +#### 4. modules/performance/php-optimizer.sh (1,083 lines) +**Purpose**: Interactive menu-driven PHP optimization tool +**Created**: December 2, 2025 + +**Menu Options**: +1. Analyze All Domains - Comprehensive server-wide analysis +2. Analyze Single Domain - Per-domain analysis +3. Show OPcache Statistics - OPcache performance metrics +4. Optimize Domain - **Main action menu with apply workflow** +5. View PHP Error Logs - Error log viewer with filtering +6. PHP Version Summary - Version distribution report +7. Find Configuration Files - Config file discovery tool +8. Backup Configurations (b) - Manual backup creation +9. Restore from Backup (r) - Rollback capability +0. Quit + +**Option 4 Workflow** (Optimize Domain): +1. Select domain from list +2. Display current configuration +3. Show recommendations with explanations +4. Ask: "Apply these recommendations? (y/n)" +5. If yes: Create auto-backup (timestamped) +6. Apply changes to PHP-FPM pool config +7. Ask: "Restart PHP-FPM now? (y/n)" +8. If yes: Gracefully reload PHP-FPM (zero downtime) +9. Verify service is running +10. Display backup location for rollback + +**Safety Features**: +- User confirmation required for ALL changes +- Auto-backup BEFORE any modifications +- Graceful reload (not restart) for zero downtime +- Verification that service is running after reload +- Clear rollback instructions with backup location +- No automatic changes without explicit approval + +### Integration (December 3, 2025) + +#### Main Menu Integration +**File**: `launcher.sh` +**Location**: Performance & Diagnostics → Option 9 + +**Menu Path**: +``` +Main Menu + └─ (4) Performance & Diagnostics + └─ (9) PHP Configuration Optimizer +``` + +**Changes Made**: +- Added menu option 9: "PHP Configuration Optimizer" +- Updated handler function to call `php-optimizer.sh` +- Shifted existing options 9-11 to 10-12 +- Validated syntax with `bash -n` + +### Git Commits + +1. **Phase 1**: Create lib/php-detector.sh (detection functions) +2. **Phase 2**: Create lib/php-analyzer.sh (analysis engine) +3. **Phase 3**: Create modules/performance/php-optimizer.sh (main script) +4. **Phase 4**: Implement backup/restore system with PHP-FPM restart +5. **Phase 5 & 6**: Implement apply/action menu with auto-backup and PHP-FPM restart +6. **Phase 7**: Integrate PHP Configuration Optimizer into main menu + +**Note**: Removed AI attribution markers from commits per user instructions. + +### Documentation Created + +1. `PHP_OPTIMIZER_PLAN.md` - Initial planning document +2. `PHP_METRICS_COMPREHENSIVE.md` - Comprehensive metrics tracking +3. `PHP_CONFIG_LOCATIONS_COMPLETE.md` - Config file locations by panel +4. `SESSION_SUMMARY.md` - Session work summary +5. `PHP_OPTIMIZER_COMPLETE.md` - Completion documentation +6. `DEVELOPMENT_LOG.md` - This file (NEW!) + +### Testing Status +- ✅ Syntax validation complete (all files pass `bash -n`) +- ✅ Logic validation complete (division-by-zero protection, error handling) +- ✅ Path resolution verified +- ✅ Menu integration tested +- ⏳ **Pending**: Live server testing with real domains + +### Metrics Tracked + +**Per-Domain PHP Settings**: +- `pm.max_children` - FPM process limit +- `pm.start_servers` - Initial processes +- `pm.min_spare_servers` - Minimum idle processes +- `pm.max_spare_servers` - Maximum idle processes +- `pm.max_requests` - Process recycling threshold +- `memory_limit` - PHP script memory cap +- `upload_max_filesize` - Upload size limit +- `post_max_size` - POST data limit +- `max_execution_time` - Script timeout +- `max_input_time` - Input parsing timeout + +**OPcache Settings**: +- `opcache.memory_consumption` - OPcache memory allocation +- `opcache.interned_strings_buffer` - String storage buffer +- `opcache.max_accelerated_files` - Cached file limit +- `opcache.enable` - OPcache on/off +- `opcache.revalidate_freq` - Cache validation frequency + +**Performance Metrics**: +- OPcache hit rate (hits / (hits + misses)) +- max_children error frequency (7-day history) +- Active PHP-FPM processes +- Memory consumption per process +- Process manager type (static/dynamic/ondemand) + +### File Statistics + +**Total Lines of Code**: 2,960 lines +- lib/php-detector.sh: 428 lines +- lib/php-analyzer.sh: 940 lines +- lib/php-config-manager.sh: 509 lines +- modules/performance/php-optimizer.sh: 1,083 lines + +**Total Functions**: 45 exported functions +- php-detector.sh: 17 functions +- php-analyzer.sh: 14 functions +- php-config-manager.sh: 14 functions + +### Future Enhancements (Planned) + +1. **MySQL Config Optimizer** - Similar system for MySQL/MariaDB tuning +2. **Redis/Memcached Setup** - Object caching setup scripts +3. **Apache/Nginx Optimizer** - Web server tuning (revisit later) + +**Not Planned**: +- CDN integration (user declined) +- SSL/TLS optimizer (user declined) + +--- + +## November 21-30, 2025: (Previous Work - Need to Fill In) + +**TODO**: Document all work from November 21-30 including: +- enable-cphulk.sh bug fixes (6 bugs fixed) +- live-attack-monitor color code fixes +- SCRIPT_DIR path calculation fixes +- bot-analyzer optimizations +- Any other modules created or modified + +--- + +## November 20, 2025: (Last Documented Work) + +**TODO**: Pull from previous documentation what was done on this date. + +--- + +## Development Guidelines + +### Git Commit Messages +- **NO AI attribution markers** (per user instructions as of Dec 3, 2025) +- Remove "🤖 Generated with Claude Code" +- Remove "Co-Authored-By: Claude " +- Use clear, descriptive commit messages +- Include technical details and impact + +### Documentation Standards +- Update DEVELOPMENT_LOG.md with EVERY change +- Update README.md for user-facing features +- Create detailed docs/ files for complex features +- Track file statistics (lines, functions) +- Document all git commits +- Record testing status + +### Code Standards +- Follow CODING_GUIDELINES.md +- Syntax validation with `bash -n` before commit +- Export all library functions +- Proper error handling and user confirmations +- No automatic changes without user approval +- Graceful service reloads (not restarts) + +--- + +**Last Updated**: 2025-12-03 21:45 UTC +**Next Update**: After next development session