mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-01-06 23:52:05 +01:00
Refactor installation scripts for improved compatibility and error handling
- Updated installation scripts to enhance OS detection and streamline the installation process. - Improved error handling and logging for MariaDB setup and service configuration. - Consolidated functionality by removing deprecated scripts, ensuring better maintainability.
This commit is contained in:
144
install/simple_install.py
Normal file
144
install/simple_install.py
Normal file
@@ -0,0 +1,144 @@
|
||||
#!/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()
|
||||
114
simple_install.sh
Normal file
114
simple_install.sh
Normal file
@@ -0,0 +1,114 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Simplified CyberPanel Installation Script
|
||||
# Based on 2.4.4 approach with AlmaLinux 9 fixes
|
||||
|
||||
OUTPUT=$(cat /etc/*release)
|
||||
|
||||
# Detect OS and set appropriate variables
|
||||
if echo $OUTPUT | grep -q "AlmaLinux 9" ; then
|
||||
echo -e "\nDetecting AlmaLinux 9...\n"
|
||||
SERVER_OS="AlmaLinux9"
|
||||
PKG_MGR="dnf"
|
||||
elif echo $OUTPUT | grep -q "AlmaLinux 8" ; then
|
||||
echo -e "\nDetecting AlmaLinux 8...\n"
|
||||
SERVER_OS="AlmaLinux8"
|
||||
PKG_MGR="yum"
|
||||
elif echo $OUTPUT | grep -q "Ubuntu 22.04" ; then
|
||||
echo -e "\nDetecting Ubuntu 22.04...\n"
|
||||
SERVER_OS="Ubuntu2204"
|
||||
PKG_MGR="apt"
|
||||
elif echo $OUTPUT | grep -q "Ubuntu 20.04" ; then
|
||||
echo -e "\nDetecting Ubuntu 20.04...\n"
|
||||
SERVER_OS="Ubuntu2004"
|
||||
PKG_MGR="apt"
|
||||
elif echo $OUTPUT | grep -q "CentOS Linux 8" ; then
|
||||
echo -e "\nDetecting CentOS 8...\n"
|
||||
SERVER_OS="CentOS8"
|
||||
PKG_MGR="yum"
|
||||
else
|
||||
echo -e "\nUnsupported OS detected. This script supports:\n"
|
||||
echo -e "AlmaLinux: 8, 9\n"
|
||||
echo -e "Ubuntu: 20.04, 22.04\n"
|
||||
echo -e "CentOS: 8\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installing basic dependencies..."
|
||||
|
||||
# Install basic packages
|
||||
if [ "$PKG_MGR" = "dnf" ]; then
|
||||
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
|
||||
elif [ "$PKG_MGR" = "yum" ]; then
|
||||
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
|
||||
elif [ "$PKG_MGR" = "apt" ]; then
|
||||
apt update -y
|
||||
apt install -y wget curl unzip zip rsync git python3 python3-pip
|
||||
apt install -y mariadb-server mariadb-client
|
||||
apt install -y imagemagick php-gd php-intl php-mbstring php-pspell
|
||||
fi
|
||||
|
||||
# Start and enable MariaDB
|
||||
echo "Starting MariaDB..."
|
||||
systemctl enable mariadb
|
||||
systemctl start mariadb
|
||||
|
||||
# Create MySQL password file
|
||||
echo "Setting up MySQL..."
|
||||
mkdir -p /etc/cyberpanel
|
||||
echo "cyberpanel123" > /etc/cyberpanel/mysqlPassword
|
||||
chmod 600 /etc/cyberpanel/mysqlPassword
|
||||
|
||||
# Secure MySQL installation
|
||||
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'cyberpanel123';" 2>/dev/null || true
|
||||
mysql -u root -pcyberpanel123 -e "DELETE FROM mysql.user WHERE User='';" 2>/dev/null || true
|
||||
mysql -u root -pcyberpanel123 -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" 2>/dev/null || true
|
||||
mysql -u root -pcyberpanel123 -e "DROP DATABASE IF EXISTS test;" 2>/dev/null || true
|
||||
mysql -u root -pcyberpanel123 -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" 2>/dev/null || true
|
||||
mysql -u root -pcyberpanel123 -e "FLUSH PRIVILEGES;" 2>/dev/null || true
|
||||
|
||||
# Configure firewall
|
||||
echo "Configuring firewall..."
|
||||
if [ "$PKG_MGR" = "dnf" ] || [ "$PKG_MGR" = "yum" ]; then
|
||||
systemctl enable firewalld
|
||||
systemctl start firewalld
|
||||
firewall-cmd --permanent --add-port=8090/tcp
|
||||
firewall-cmd --permanent --add-port=7080/tcp
|
||||
firewall-cmd --permanent --add-port=80/tcp
|
||||
firewall-cmd --permanent --add-port=443/tcp
|
||||
firewall-cmd --permanent --add-port=21/tcp
|
||||
firewall-cmd --permanent --add-port=25/tcp
|
||||
firewall-cmd --permanent --add-port=587/tcp
|
||||
firewall-cmd --permanent --add-port=465/tcp
|
||||
firewall-cmd --permanent --add-port=110/tcp
|
||||
firewall-cmd --permanent --add-port=143/tcp
|
||||
firewall-cmd --permanent --add-port=993/tcp
|
||||
firewall-cmd --permanent --add-port=995/tcp
|
||||
firewall-cmd --permanent --add-port=53/tcp
|
||||
firewall-cmd --permanent --add-port=53/udp
|
||||
firewall-cmd --reload
|
||||
fi
|
||||
|
||||
# Download and install CyberPanel
|
||||
echo "Downloading CyberPanel..."
|
||||
rm -f cyberpanel.sh
|
||||
curl --silent -o cyberpanel.sh "https://cyberpanel.sh/?dl&$SERVER_OS" 2>/dev/null
|
||||
|
||||
if [ -f "cyberpanel.sh" ]; then
|
||||
echo "Installing CyberPanel..."
|
||||
chmod +x cyberpanel.sh
|
||||
./cyberpanel.sh
|
||||
else
|
||||
echo "Failed to download CyberPanel installer!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installation completed!"
|
||||
Reference in New Issue
Block a user