diff --git a/cyberpanel.sh b/cyberpanel.sh index 5cda7f943..c66aebebd 100644 --- a/cyberpanel.sh +++ b/cyberpanel.sh @@ -1236,12 +1236,29 @@ Retry_Command "pip install --default-timeout=3600 virtualenv" Download_Requirement +echo -e "Creating CyberPanel virtual environment..." + +# First ensure the directory exists +mkdir -p /usr/local/CyberPanel + if [[ "$Server_OS" = "Ubuntu" ]] && [[ "$Server_OS_Version" = "22" ]] ; then -python3 -m venv /usr/local/CyberPanel -Check_Return + echo -e "Ubuntu 22.04 detected, using python3 -m venv..." + if python3 -m venv /usr/local/CyberPanel 2>&1; then + echo -e "Virtual environment created successfully" + else + echo -e "python3 -m venv failed, trying virtualenv..." + # Ensure virtualenv is properly installed + pip3 install --upgrade virtualenv + virtualenv -p /usr/bin/python3 /usr/local/CyberPanel + fi else -virtualenv -p /usr/bin/python3 /usr/local/CyberPanel - Check_Return + virtualenv -p /usr/bin/python3 /usr/local/CyberPanel +fi + +# Verify virtual environment was created +if [[ ! -f /usr/local/CyberPanel/bin/activate ]]; then + echo -e "ERROR: Virtual environment creation failed!" + exit 1 fi if [ "$Server_OS" = "Ubuntu" ]; then @@ -1931,12 +1948,29 @@ rm -f /root/cyberpanel/cert_conf Post_Install_Required_Components() { Debug_Log2 "Finalization..,80" +echo -e "Creating CyberCP virtual environment..." + +# First ensure the directory exists +mkdir -p /usr/local/CyberCP + if [[ "$Server_OS" = "Ubuntu" ]] && [[ "$Server_OS_Version" = "22" ]] ; then -python3 -m venv /usr/local/CyberCP -Check_Return + echo -e "Ubuntu 22.04 detected, using python3 -m venv..." + if python3 -m venv /usr/local/CyberCP 2>&1; then + echo -e "Virtual environment created successfully" + else + echo -e "python3 -m venv failed, trying virtualenv..." + # Ensure virtualenv is properly installed + pip3 install --upgrade virtualenv + virtualenv -p /usr/bin/python3 /usr/local/CyberCP + fi else -virtualenv -p /usr/bin/python3 /usr/local/CyberCP - Check_Return + virtualenv -p /usr/bin/python3 /usr/local/CyberCP +fi + +# Verify virtual environment was created +if [[ ! -f /usr/local/CyberCP/bin/activate ]]; then + echo -e "ERROR: Virtual environment creation failed!" + exit 1 fi if [[ "$Server_OS" = "Ubuntu" ]] && [[ "$Server_OS_Version" = "20" ]] ; then @@ -1953,6 +1987,16 @@ fi Retry_Command "pip install --default-timeout=3600 -r /usr/local/requirments.txt" Check_Return "requirments.txt" "no_exit" +# Verify Django installation +echo -e "Verifying Django installation..." +if ! /usr/local/CyberCP/bin/python -c "import django" 2>/dev/null; then + echo -e "WARNING: Django not found, reinstalling requirements..." + pip install --upgrade pip setuptools wheel packaging + pip install --default-timeout=3600 --ignore-installed -r /usr/local/requirments.txt +else + echo -e "Django is properly installed" +fi + if [[ "$Server_OS" = "Ubuntu" ]] && [[ "$Server_OS_Version" = "22" ]] ; then cp /usr/bin/python3.10 /usr/local/CyberCP/bin/python3 else diff --git a/install/venvsetup.sh b/install/venvsetup.sh index 4adf8aac5..4d0124b82 100644 --- a/install/venvsetup.sh +++ b/install/venvsetup.sh @@ -884,12 +884,23 @@ if [[ $PROVIDER == "Alibaba Cloud" ]] ; then fi pip install virtualenv -virtualenv --system-site-packages /usr/local/CyberPanel + +# Create virtual environment with fallback for Ubuntu 22.04 compatibility +echo "Creating CyberPanel virtual environment..." +if python3 -m venv --system-site-packages /usr/local/CyberPanel 2>&1 | grep -q "unrecognized option"; then + # Fallback to virtualenv if python3 -m venv doesn't support --system-site-packages + virtualenv --system-site-packages /usr/local/CyberPanel +elif python3 -m venv --system-site-packages /usr/local/CyberPanel 2>/dev/null; then + echo "Virtual environment created successfully using python3 -m venv" +else + # Final fallback to virtualenv + virtualenv --system-site-packages /usr/local/CyberPanel +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 -virtualenv --system-site-packages /usr/local/CyberPanel fi if [[ $DEV == "ON" ]] ; then diff --git a/upgrade.sh b/upgrade.sh index 2424f55b8..6e5455f01 100644 --- a/upgrade.sh +++ b/upgrade.sh @@ -6,6 +6,13 @@ ## Then run it like below. ## /usr/local/CyberCP/upgrade.sh +# Check if virtual environment exists +if [[ ! -f /usr/local/CyberCP/bin/python ]]; then + echo "Error: CyberPanel virtual environment not found at /usr/local/CyberCP/bin/python" + echo "Please ensure CyberPanel is properly installed." + exit 1 +fi + cd /usr/local/CyberCP && /usr/local/CyberCP/bin/python manage.py collectstatic --no-input rm -rf /usr/local/CyberCP/public/static/* cp -R /usr/local/CyberCP/static/* /usr/local/CyberCP/public/static/