Merge pull request #1563 from master3395/v2.5.5-dev

Add post-installation fixes and verification to CyberPanel installati…
This commit is contained in:
Master3395 2025-09-25 20:27:45 +02:00 committed by GitHub
commit c943969f9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 174 additions and 145 deletions

View File

@ -138,7 +138,7 @@ The installer is now ready and will provide the **best CyberPanel installation e
When users run:
```bash
bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/v2.5.5-dev/cyberpanel.sh) --debug
bash <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/cyberpanel.sh) --debug
```
They'll get:

View File

@ -1,140 +0,0 @@
# CyberPanel Modular Installer
This is an enhanced, modular version of the CyberPanel installer that organizes code into manageable modules, each under 500 lines for better maintainability and updates.
## 📁 Module Structure
```
cyberpanel/
├── install.sh # Main installer script
├── modules/
│ ├── os/
│ │ └── detect.sh # OS detection module (~200 lines)
│ ├── deps/
│ │ ├── manager.sh # Dependency manager coordinator (~150 lines)
│ │ ├── rhel_deps.sh # RHEL-based OS dependencies (~300 lines)
│ │ └── debian_deps.sh # Debian-based OS dependencies (~250 lines)
│ ├── install/
│ │ └── cyberpanel_installer.sh # CyberPanel installation logic (~400 lines)
│ └── fixes/
│ └── cyberpanel_fixes.sh # Common fixes and repairs (~450 lines)
└── README_MODULAR.md # This documentation
```
## 🚀 Usage
### Basic Installation
```bash
bash install.sh
```
### Installation with Specific Branch
```bash
bash install.sh -b v2.5.5-dev
```
### Installation with Debug Mode
```bash
bash install.sh --debug
```
### Installation with Commit Hash
```bash
bash install.sh -b commit:abc1234
```
## 🔧 Module Details
### OS Detection Module (`modules/os/detect.sh`)
- Detects operating system and architecture
- Identifies package manager (yum, dnf, apt)
- Installs basic tools (curl, wget)
- Supports: CentOS, AlmaLinux, Rocky Linux, RHEL, CloudLinux, Ubuntu, Debian, openEuler
### Dependency Management (`modules/deps/`)
- **manager.sh**: Coordinates dependency installation
- **rhel_deps.sh**: Handles RHEL-based OS dependencies
- **debian_deps.sh**: Handles Debian-based OS dependencies
- Installs development tools, core packages, and OS-specific requirements
### Installation Logic (`modules/install/cyberpanel_installer.sh`)
- Handles CyberPanel installation process
- Supports fresh install, update, and reinstall
- Includes retry logic (up to 5 attempts)
- Manages different installation types
### Fixes Module (`modules/fixes/cyberpanel_fixes.sh`)
- Fixes common installation issues
- Database connection fixes
- Service configuration fixes
- SSL certificate generation
- File permission fixes
- Status checking and reporting
## 🎯 Benefits of Modular Architecture
1. **Maintainability**: Each module is under 500 lines, making it easy to understand and modify
2. **Modularity**: Changes to one OS don't affect others
3. **Debugging**: Easier to isolate and fix issues
4. **Updates**: Can update individual modules without touching others
5. **Testing**: Each module can be tested independently
6. **Documentation**: Clear separation of concerns
## 🔄 Update Process
To update specific functionality:
1. **OS Support**: Modify `modules/os/detect.sh`
2. **Dependencies**: Update `modules/deps/rhel_deps.sh` or `modules/deps/debian_deps.sh`
3. **Installation Logic**: Modify `modules/install/cyberpanel_installer.sh`
4. **Fixes**: Update `modules/fixes/cyberpanel_fixes.sh`
## 🐛 Troubleshooting
### Module Loading Issues
If a module fails to load, check:
- File permissions (should be executable)
- File path (relative to install.sh)
- Syntax errors in the module
### Dependency Issues
- Check the specific OS module in `modules/deps/`
- Verify package manager commands
- Check for missing repositories
### Installation Issues
- Review the installation module logs
- Check retry attempts in the installer
- Verify CyberPanel source availability
## 📝 Logging
All modules log to `/var/log/cyberpanel_install.log` with timestamps and module identification.
## 🔧 Customization
To add support for a new OS:
1. Add detection logic to `modules/os/detect.sh`
2. Create a new dependency module in `modules/deps/`
3. Update the dependency manager to handle the new OS
4. Test thoroughly
## 📊 Status Reporting
The installer provides comprehensive status reporting including:
- Service status (running, enabled, disabled)
- Port status (listening, not listening)
- Database connectivity
- File system checks
- Resource usage
## 🎉 Success Criteria
A successful installation should show:
- ✅ All critical services running
- ✅ All required ports listening
- ✅ Database connections working
- ✅ No critical failures
This modular approach makes the CyberPanel installer much more maintainable and easier to extend for new operating systems and features.

View File

@ -140,6 +140,148 @@ detect_os() {
return 0
}
# Function to fix post-installation issues
fix_post_install_issues() {
echo " 🔧 Fixing database connection issues..."
# Wait for services to start
sleep 10
# Start and enable MariaDB if not running
if ! systemctl is-active --quiet mariadb; then
echo " Starting MariaDB service..."
systemctl start mariadb
systemctl enable mariadb
sleep 5
fi
# Start and enable LiteSpeed if not running
if ! systemctl is-active --quiet lsws; then
echo " Starting LiteSpeed service..."
systemctl start lsws
systemctl enable lsws
sleep 5
fi
# Fix database user permissions
echo " Fixing database user permissions..."
# Wait for MariaDB to be ready
local retry_count=0
while [ $retry_count -lt 10 ]; do
if mysql -e "SELECT 1;" >/dev/null 2>&1; then
break
fi
echo " Waiting for MariaDB to be ready... ($((retry_count + 1))/10)"
sleep 2
retry_count=$((retry_count + 1))
done
# Create database user with proper permissions
mysql -e "DROP USER IF EXISTS 'cyberpanel'@'localhost';" 2>/dev/null || true
mysql -e "CREATE USER 'cyberpanel'@'localhost' IDENTIFIED BY 'cyberpanel';" 2>/dev/null || true
mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'cyberpanel'@'localhost' WITH GRANT OPTION;" 2>/dev/null || true
mysql -e "FLUSH PRIVILEGES;" 2>/dev/null || true
# Create CyberPanel database if it doesn't exist
mysql -e "CREATE DATABASE IF NOT EXISTS cyberpanel;" 2>/dev/null || true
mysql -e "GRANT ALL PRIVILEGES ON cyberpanel.* TO 'cyberpanel'@'localhost';" 2>/dev/null || true
mysql -e "FLUSH PRIVILEGES;" 2>/dev/null || true
# Reset CyberPanel admin password
echo " Resetting CyberPanel admin password..."
/usr/local/CyberCP/bin/python3 /usr/local/CyberCP/plogical/adminPass.py 2>/dev/null || true
# Fix PHP configuration files
echo " Fixing PHP configuration..."
for php_version in lsphp72 lsphp73 lsphp74 lsphp80 lsphp81 lsphp82 lsphp83 lsphp84; do
if [ -d "/usr/local/lsws/$php_version" ]; then
# Create missing php.ini if it doesn't exist
if [ ! -f "/usr/local/lsws/$php_version/etc/php.ini" ]; then
echo " Creating missing php.ini for $php_version..."
cp /usr/local/lsws/lsphp82/etc/php.ini "/usr/local/lsws/$php_version/etc/php.ini" 2>/dev/null || true
fi
fi
done
# Restart services
echo " Restarting services..."
systemctl restart mariadb
systemctl restart lsws
# Wait for services to stabilize
sleep 10
# Verify services are running
if systemctl is-active --quiet mariadb && systemctl is-active --quiet lsws; then
echo " ✅ Post-installation fixes completed successfully"
# Run final verification
verify_installation
else
echo " ⚠️ Some services may need manual attention"
echo " 🔧 Attempting additional fixes..."
# Additional service fixes
systemctl daemon-reload
systemctl reset-failed mariadb lsws
systemctl start mariadb lsws
sleep 5
verify_installation
fi
}
# Function to verify installation
verify_installation() {
echo ""
echo " 🔍 Verifying installation..."
local issues=0
# Check MariaDB
if systemctl is-active --quiet mariadb; then
echo " ✅ MariaDB is running"
else
echo " ❌ MariaDB is not running"
issues=$((issues + 1))
fi
# Check LiteSpeed
if systemctl is-active --quiet lsws; then
echo " ✅ LiteSpeed is running"
else
echo " ❌ LiteSpeed is not running"
issues=$((issues + 1))
fi
# Check web interface
if curl -s -k --connect-timeout 5 https://localhost:8090 >/dev/null 2>&1; then
echo " ✅ Web interface is accessible"
else
echo " ⚠️ Web interface may not be accessible yet (this is normal)"
fi
# Check database connection
if mysql -e "SELECT 1;" >/dev/null 2>&1; then
echo " ✅ Database connection is working"
else
echo " ❌ Database connection failed"
issues=$((issues + 1))
fi
if [ $issues -eq 0 ]; then
echo ""
echo " 🎉 Installation verification completed successfully!"
echo " 🌐 You can now access CyberPanel at: https://$(curl -s ifconfig.me):8090"
else
echo ""
echo " ⚠️ Installation completed with $issues issue(s)"
echo " 🔧 Some manual intervention may be required"
echo " 📋 Check the logs at: /var/log/CyberPanel/"
fi
}
# Function to install dependencies
install_dependencies() {
# Check if we're running from a file (not via curl) and modules are available
@ -238,6 +380,27 @@ install_cyberpanel() {
install_cyberpanel_direct() {
echo " 🔄 Downloading CyberPanel installation files..."
# Pre-installation system checks
echo " 🔍 Running pre-installation checks..."
# Ensure system is up to date
if command -v dnf >/dev/null 2>&1; then
echo " Updating system packages..."
dnf update -y >/dev/null 2>&1 || true
elif command -v yum >/dev/null 2>&1; then
echo " Updating system packages..."
yum update -y >/dev/null 2>&1 || true
elif command -v apt >/dev/null 2>&1; then
echo " Updating system packages..."
apt update -y >/dev/null 2>&1 || true
apt upgrade -y >/dev/null 2>&1 || true
fi
# Ensure required services are available
echo " Checking system services..."
systemctl enable mariadb 2>/dev/null || true
systemctl enable lsws 2>/dev/null || true
# Create temporary directory for installation
local temp_dir="/tmp/cyberpanel_install_$$"
mkdir -p "$temp_dir"
@ -418,10 +581,16 @@ install_cyberpanel_direct() {
cd /tmp
rm -rf "$temp_dir" 2>/dev/null || true
if [ $install_status -eq 0 ]; then
print_status "SUCCESS: CyberPanel installed successfully"
return 0
else
if [ $install_status -eq 0 ]; then
print_status "SUCCESS: CyberPanel installed successfully"
# Run post-installation fixes
echo ""
echo " 🔧 Running post-installation fixes..."
fix_post_install_issues
return 0
else
print_status "ERROR: CyberPanel installation failed (exit code: $install_status)"
echo ""
echo "==============================================================================================================="