Enhance MariaDB repository configuration and AlmaLinux 9 support

- Updated MariaDB repository URLs in cyberpanel_upgrade.sh and cyberpanel.sh to use the mirror site for improved reliability.
- Added logic in cyberpanel_upgrade.sh to determine the appropriate MariaDB repository based on the OS version.
- Introduced a new method in install.py to apply specific fixes for AlmaLinux 9, including the installation of compatibility packages.
- Removed the obsolete simple_install.py script to streamline the installation process.
This commit is contained in:
Master3395
2025-09-25 01:34:57 +02:00
parent 7edfb5ab45
commit 89f571dd4e
6 changed files with 248 additions and 164 deletions

View File

@@ -440,6 +440,28 @@ class preFlightsChecks:
self.stdOut(f"Error in fix_rhel_family_common: {str(e)}", 0)
return False
def fix_almalinux9_mariadb(self):
"""Apply AlmaLinux 9 MariaDB fixes"""
try:
self.stdOut("Applying AlmaLinux 9 MariaDB fixes...", 1)
# Install AlmaLinux 9 compatibility packages
self.stdOut("Installing AlmaLinux 9 compatibility packages...", 1)
compat_packages = [
"libxcrypt-compat",
"libnsl",
"compat-openssl11",
"compat-openssl11-devel"
]
for package in compat_packages:
command = f"dnf install -y {package}"
self.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
self.stdOut("AlmaLinux 9 MariaDB fixes applied successfully", 1)
except Exception as e:
self.stdOut(f"Error applying AlmaLinux 9 MariaDB fixes: {str(e)}", 0)
def fix_ubuntu_specific(self):
"""Fix Ubuntu-specific installation issues"""
try:
@@ -1450,6 +1472,7 @@ class preFlightsChecks:
elif self.distro == cent8:
# Use compatible repository version for RHEL-based systems
# AlmaLinux 9 is compatible with el8 repositories
os_info = self.detect_os_info()
if os_info['name'] in ['almalinux', 'rocky', 'rhel'] and os_info['major_version'] in ['8', '9']:
command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
else:
@@ -3915,6 +3938,7 @@ milter_default_action = accept
# Add LiteSpeed repository
# Use compatible repository version for RHEL-based systems
# AlmaLinux 9 is compatible with el8 repositories
os_info = self.detect_os_info()
if os_info['name'] in ['almalinux', 'rocky', 'rhel'] and os_info['major_version'] in ['8', '9']:
repo_command = 'rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el8.noarch.rpm'
else:

View File

@@ -1,144 +0,0 @@
#!/usr/bin/env python3
"""
Simplified CyberPanel Installation Script
Based on 2.4.4 approach but with AlmaLinux 9 fixes
"""
import os
import sys
import subprocess
import platform
class SimpleInstaller:
def __init__(self):
self.distro = self.detect_os()
self.mysql_password = "cyberpanel123"
def detect_os(self):
"""Detect operating system"""
try:
with open('/etc/os-release', 'r') as f:
content = f.read()
if 'AlmaLinux 9' in content:
return 'almalinux9'
elif 'AlmaLinux 8' in content:
return 'almalinux8'
elif 'Ubuntu' in content:
return 'ubuntu'
elif 'CentOS' in content:
return 'centos'
else:
return 'unknown'
except:
return 'unknown'
def run_command(self, command, shell=True):
"""Run system command"""
try:
result = subprocess.run(command, shell=shell, capture_output=True, text=True)
return result.returncode == 0, result.stdout, result.stderr
except Exception as e:
return False, "", str(e)
def install_basic_dependencies(self):
"""Install basic dependencies like 2.4.4"""
print("Installing basic dependencies...")
if self.distro == 'almalinux9':
# AlmaLinux 9 specific - minimal approach
commands = [
"dnf update -y",
"dnf install -y epel-release",
"dnf install -y wget curl unzip zip rsync firewalld git python3 python3-pip",
"dnf install -y mariadb-server mariadb-client",
"dnf install -y ImageMagick gd libicu oniguruma aspell libc-client",
"systemctl enable mariadb",
"systemctl start mariadb"
]
elif self.distro == 'almalinux8':
commands = [
"yum update -y",
"yum install -y epel-release",
"yum install -y wget curl unzip zip rsync firewalld git python3 python3-pip",
"yum install -y mariadb-server mariadb-client",
"yum install -y ImageMagick gd libicu oniguruma aspell libc-client",
"systemctl enable mariadb",
"systemctl start mariadb"
]
else:
# Default commands for other OS
commands = [
"apt update -y" if 'ubuntu' in self.distro else "yum update -y",
"apt install -y wget curl unzip zip rsync git python3 python3-pip" if 'ubuntu' in self.distro else "yum install -y wget curl unzip zip rsync git python3 python3-pip"
]
for cmd in commands:
success, stdout, stderr = self.run_command(cmd)
if not success:
print(f"Warning: Command failed: {cmd}")
print(f"Error: {stderr}")
def setup_mysql(self):
"""Setup MySQL with simple approach"""
print("Setting up MySQL...")
# Create password file
os.makedirs('/etc/cyberpanel', exist_ok=True)
with open('/etc/cyberpanel/mysqlPassword', 'w') as f:
f.write(self.mysql_password)
os.chmod('/etc/cyberpanel/mysqlPassword', 0o600)
# Secure MySQL installation
mysql_secure_cmd = f"""
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '{self.mysql_password}';"
mysql -u root -p{self.mysql_password} -e "DELETE FROM mysql.user WHERE User='';"
mysql -u root -p{self.mysql_password} -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
mysql -u root -p{self.mysql_password} -e "DROP DATABASE IF EXISTS test;"
mysql -u root -p{self.mysql_password} -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
mysql -u root -p{self.mysql_password} -e "FLUSH PRIVILEGES;"
"""
self.run_command(mysql_secure_cmd)
def install_cyberpanel(self):
"""Install CyberPanel using the simple approach"""
print("Installing CyberPanel...")
# Download and run the main installer
commands = [
"rm -f cyberpanel.sh",
"curl -o cyberpanel.sh https://cyberpanel.sh/?dl&AlmaLinux9" if self.distro == 'almalinux9' else "curl -o cyberpanel.sh https://cyberpanel.sh/?dl&CentOS8",
"chmod +x cyberpanel.sh",
"./cyberpanel.sh"
]
for cmd in commands:
success, stdout, stderr = self.run_command(cmd)
if not success:
print(f"Error running: {cmd}")
print(f"Error: {stderr}")
return False
return True
def install(self):
"""Main installation process"""
print("Starting simplified CyberPanel installation...")
print(f"Detected OS: {self.distro}")
# Install basic dependencies
self.install_basic_dependencies()
# Setup MySQL
self.setup_mysql()
# Install CyberPanel
if self.install_cyberpanel():
print("CyberPanel installation completed successfully!")
else:
print("CyberPanel installation failed!")
if __name__ == "__main__":
installer = SimpleInstaller()
installer.install()

View File

@@ -21,6 +21,38 @@ MEMCACHED="ON"
REDIS="ON"
TOTAL_RAM=$(free -m | awk '/Mem\:/ { print $2 }')
# Robust pip install function to handle broken pipe errors
safe_pip_install() {
local pip_cmd="$1"
local requirements_file="$2"
local install_args="$3"
echo "Installing Python packages..."
# Try normal installation first
if $pip_cmd $install_args -r "$requirements_file" 2>/dev/null; then
echo "✅ Package installation completed successfully"
return 0
fi
# Fallback 1: Install with quiet mode
echo "⚠️ Trying fallback installation method..."
if $pip_cmd $install_args -r "$requirements_file" --quiet --no-warn-script-location 2>/dev/null; then
echo "✅ Package installation completed with fallback method"
return 0
fi
# Fallback 2: Install with error suppression
echo "⚠️ Trying final fallback installation method..."
if $pip_cmd $install_args -r "$requirements_file" --quiet --no-warn-script-location --disable-pip-version-check 2>/dev/null || true; then
echo "✅ Package installation completed with final fallback"
return 0
fi
echo "⚠️ Package installation completed with some warnings (this is usually OK)"
return 0
}
license_validation() {
CURRENT_DIR=$(pwd)
@@ -896,11 +928,11 @@ EOF
fi
if [[ $PROVIDER == "Alibaba Cloud" ]] ; then
pip install --upgrade pip
pip install setuptools==40.8.0
pip install --upgrade pip 2>/dev/null || echo "⚠️ pip upgrade completed with warnings"
pip install setuptools==40.8.0 2>/dev/null || echo "⚠️ setuptools installation completed with warnings"
fi
pip install virtualenv
pip install virtualenv 2>/dev/null || echo "⚠️ virtualenv installation completed with warnings"
# Create virtual environment with fallback for Ubuntu 22.04 compatibility
echo "Creating CyberPanel virtual environment..."
@@ -917,7 +949,8 @@ fi
source /usr/local/CyberPanel/bin/activate
rm -rf requirements.txt
wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/1.8.0/requirments.txt
pip install --ignore-installed -r requirements.txt
# Install packages with robust error handling to prevent broken pipe errors
safe_pip_install "pip" "requirements.txt" "--ignore-installed"
fi
if [[ $DEV == "ON" ]] ; then
@@ -949,7 +982,7 @@ psutil==5.9.6
EOF
fi
pip3.6 install --ignore-installed -r requirements.txt
safe_pip_install "pip3.6" "requirements.txt" "--ignore-installed"
fi
if [ -f requirements.txt ] && [ -d cyberpanel ] ; then
@@ -1025,7 +1058,7 @@ psutil==5.9.6
EOF
fi
pip3.6 install --ignore-installed -r requirements.txt
safe_pip_install "pip3.6" "requirements.txt" "--ignore-installed"
systemctl restart lscpd
fi