您说得对!我理解了正确的配置方式。让我根据官方文档修正脚本:
修正的环境配置文件部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 echo "创建环境配置文件..." if [ -f "config/.config.example.php" ]; then cp config/.config.example.php config/.config.php echo "已创建 config/.config.php" sed -i "s|https://your-domain.com|https://$DOMAIN |g" config/.config.php sed -i "s|$_ENV \['db_host'\] = '127.0.0.1';|$_ENV ['db_host'] = 'localhost';|g" config/.config.php sed -i "s|$_ENV \['db_database'\] = 'sspanel';|$_ENV ['db_database'] = '$DB_NAME ';|g" config/.config.php sed -i "s|$_ENV \['db_username'\] = 'sspanel';|$_ENV ['db_username'] = '$DB_USER ';|g" config/.config.php sed -i "s|$_ENV \['db_password'\] = 'password';|$_ENV ['db_password'] = '$DB_PASSWORD ';|g" config/.config.php chmod 664 config/.config.php else echo "错误: 找不到 config/.config.example.php,创建基础配置" cat > config/.config.php <<EOF <?php \$_ENV['baseUrl'] = 'https://$DOMAIN'; \$_ENV['db_host'] = 'localhost'; \$_ENV['db_database'] = '$DB_NAME'; \$_ENV['db_username'] = '$DB_USER'; \$_ENV['db_password'] = '$DB_PASSWORD'; \$_ENV['db_charset'] = 'utf8mb4'; \$_ENV['db_collation'] = 'utf8mb4_unicode_ci'; \$_ENV['redis_scheme'] = 'tcp'; \$_ENV['redis_host'] = '127.0.0.1'; \$_ENV['redis_port'] = 6379; EOF chmod 664 config/.config.php fi if [ -f "config/appprofile.example.php" ]; then cp config/appprofile.example.php config/appprofile.php chmod 664 config/appprofile.php echo "已创建 config/appprofile.php" fi if [ -f "config/clients.json" ]; then chmod 644 config/clients.json echo "已设置 clients.json 权限" fi if [ -f "config/settings.json" ]; then chmod 644 config/settings.json echo "已设置 settings.json 权限" fi
修正的文件权限设置部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 echo "设置文件权限..." chown -R www-data:www-data /www/wwwroot/$DOMAIN find /www/wwwroot/$DOMAIN -type d -exec chmod 755 {} \; find /www/wwwroot/$DOMAIN -type f -exec chmod 644 {} \; chmod -R 777 /www/wwwroot/$DOMAIN /storagechmod 775 /www/wwwroot/$DOMAIN /public/clientsmkdir -p /www/wwwroot/$DOMAIN /storage/framework/smarty/{cache,compile}mkdir -p /www/wwwroot/$DOMAIN /storage/framework/twig/cachechmod -R 777 /www/wwwroot/$DOMAIN /storage/frameworkchmod 664 /www/wwwroot/$DOMAIN /config/.config.php[ -f "/www/wwwroot/$DOMAIN /config/appprofile.php" ] && chmod 664 /www/wwwroot/$DOMAIN /config/appprofile.php echo "权限设置完成"
完整的修正版本 如果您需要替换整个相关部分,请使用以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 echo "创建环境配置文件..." mkdir -p configif [ -f "config/.config.example.php" ]; then cp config/.config.example.php config/.config.php sed -i "s|https://your-domain.com|https://$DOMAIN |g" config/.config.php sed -i "s|'127.0.0.1'|'localhost'|g" config/.config.php sed -i "s|'sspanel'|'$DB_NAME '|g" config/.config.php sed -i "s|'sspanel'|'$DB_USER '|g" config/.config.php sed -i "s|'password'|'$DB_PASSWORD '|g" config/.config.php echo "已配置 config/.config.php" else cat > config/.config.php <<EOF <?php \$_ENV['baseUrl'] = 'https://$DOMAIN'; \$_ENV['db_host'] = 'localhost'; \$_ENV['db_database'] = '$DB_NAME'; \$_ENV['db_username'] = '$DB_USER'; \$_ENV['db_password'] = '$DB_PASSWORD'; \$_ENV['db_charset'] = 'utf8mb4'; \$_ENV['db_collation'] = 'utf8mb4_unicode_ci'; \$_ENV['redis_scheme'] = 'tcp'; \$_ENV['redis_host'] = '127.0.0.1'; \$_ENV['redis_port'] = 6379; ?> EOF echo "已创建基础 config/.config.php" fi [ -f "config/appprofile.example.php" ] && cp config/appprofile.example.php config/appprofile.php [ -f "config/clients.json" ] && echo "clients.json 已存在" [ -f "config/settings.json" ] && echo "settings.json 已存在" echo "设置文件权限..." chown -R www-data:www-data /www/wwwroot/$DOMAIN find /www/wwwroot/$DOMAIN -type d -exec chmod 755 {} \; find /www/wwwroot/$DOMAIN -type f -exec chmod 644 {} \; chmod -R 777 storagemkdir -p storage/framework/smarty/{cache,compile}mkdir -p storage/framework/twig/cachechmod -R 777 storage/frameworkmkdir -p public/clientschmod 775 public/clientschmod 664 config/.config.php 2>/dev/null || true [ -f "config/appprofile.php" ] && chmod 664 config/appprofile.php echo "环境配置和权限设置完成"
这样配置就符合官方文档的要求了:
配置文件保持在 config/ 目录中
使用正确的 $_ENV 数组格式进行配置
按照最小权限原则设置文件权限
确保必要的目录有写权限
时间 : 2025-09-16T23:48:57
👤 用户 我的VPS是debian12系统,一个全新的系统,我的域名是“yuebin.uk”,帮我根据下面的链接(手动安装说明)生成一个安装脚本,同时输出一些譬如数据库的必要信息,如密码等
安装说明地址:https://docs.sspanel.io/docs/installation/manual-install
时间 : 2025-09-16T21:03:03
🤖 DeepSeek (deepseek-chat) 我将根据您提供的Debian 12系统和域名yuebin.uk,创建一个SSPanel手动安装脚本。以下是完整的安装脚本和必要的配置信息。
安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 #!/bin/bash set -eDOMAIN="yuebin.uk" DB_NAME="sspanel" DB_USER="sspanel_user" DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) PANEL_VERSION="2024.10.0" echo "==========================================" echo "SSPanel 安装脚本" echo "域名: $DOMAIN " echo "==========================================" echo "更新系统包..." apt update && apt upgrade -y echo "安装必要软件..." apt install -y curl wget git unzip nginx mariadb-server redis-server php8.2-fpm \ php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl \ php8.2-bcmath php8.2-zip php8.2-intl php8.2-redis echo "配置MySQL..." systemctl start mysql systemctl enable mysql mysql -u root <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD'; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; EOF mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES; EOF echo "安装Composer..." curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer echo "创建网站目录..." mkdir -p /www/wwwroot/$DOMAIN cd /www/wwwroot/$DOMAIN echo "下载SSPanel..." git clone https://github.com/sspanel-uim/SSPanel-Uim.git . git checkout v$PANEL_VERSION echo "安装PHP依赖..." composer install --no-dev --optimize-autoloader --ignore-platform-reqs chown -R www-data:www-data /www/wwwroot/$DOMAIN chmod -R 755 /www/wwwroot/$DOMAIN chmod -R 777 /www/wwwroot/$DOMAIN /storagechmod -R 777 /www/wwwroot/$DOMAIN /publicecho "配置Nginx..." cat > /etc/nginx/sites-available/$DOMAIN <<EOF server { listen 80; server_name $DOMAIN; root /www/wwwroot/$DOMAIN/public; index index.php index.html; location / { try_files \$uri \$uri/ /index.php?\$query_string; } location ~ \.php\$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } EOF ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/rm -f /etc/nginx/sites-enabled/defaultnginx -t systemctl reload nginx echo "配置PHP..." sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.2/fpm/php.ini sed -i 's/^max_execution_time = .*/max_execution_time = 300/' /etc/php/8.2/fpm/php.ini sed -i 's/^memory_limit = .*/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 100M/' /etc/php/8.2/fpm/php.ini sed -i 's/^post_max_size = .*/post_max_size = 100M/' /etc/php/8.2/fpm/php.ini systemctl restart php8.2-fpm cp .config.example.php .config.phpcp .env.example .env APP_KEY=$(php -r "echo 'base64:' . base64_encode(random_bytes(32));" ) sed -i "s/#'app_key' => ''/'app_key' => '$APP_KEY '/" .config.php sed -i "s/#'database_driver' => 'mysql'/'database_driver' => 'mysql'/" .config.php sed -i "s/#'database_host' => 'localhost'/'database_host' => 'localhost'/" .config.php sed -i "s/#'database_database' => ''/'database_database' => '$DB_NAME '/" .config.php sed -i "s/#'database_username' => ''/'database_username' => '$DB_USER '/" .config.php sed -i "s/#'database_password' => ''/'database_password' => '$DB_PASSWORD '/" .config.php sed -i "s/#'database_charset' => 'utf8'/'database_charset' => 'utf8mb4'/" .config.php sed -i "s/#'database_collation' => 'utf8_unicode_ci'/'database_collation' => 'utf8mb4_unicode_ci'/" .config.php echo "==========================================" echo "安装完成!请继续以下步骤:" echo "1. 访问 http://$DOMAIN 完成安装" echo "2. 配置数据库连接" echo "3. 运行数据库迁移" echo "==========================================" echo "================= 重要信息 =================" echo "MySQL root 密码: $MYSQL_ROOT_PASSWORD " echo "SSPanel 数据库名: $DB_NAME " echo "SSPanel 数据库用户: $DB_USER " echo "SSPanel 数据库密码: $DB_PASSWORD " echo "应用密钥: $APP_KEY " echo "网站根目录: /www/wwwroot/$DOMAIN " echo "=========================================="
使用说明
保存脚本 :
1 2 nano install_sspanel.sh chmod +x install_sspanel.sh
运行脚本 :
完成安装 :
访问 http://yuebin.uk
按照网页指引完成安装
运行数据库迁移命令:
1 2 cd /www/wwwroot/yuebin.ukphp xcat Migration latest
重要安全信息 脚本会自动生成以下凭据,请妥善保存:
MySQL root 密码 : 随机生成(脚本运行后显示)
SSPanel 数据库密码 : 随机生成(脚本运行后显示)
应用密钥 : 随机生成(用于加密会话)
后续步骤
配置SSL证书 (推荐):
1 2 apt install certbot python3-certbot-nginx certbot --nginx -d yuebin.uk
设置定时任务 :
添加:
1 2 * * * * * php /www/wwwroot/yuebin.uk/xcat Job CheckJob 0 * * * * php /www/wwwroot/yuebin.uk/xcat Job DailyJob
防火墙配置 :
1 2 3 ufw allow 80/tcp ufw allow 443/tcp ufw enable
这个脚本会自动处理大部分安装步骤,并在完成后显示所有重要的配置信息。请确保保存好生成的密码和密钥!
时间 : 2025-09-16T21:03:03
👤 用户 创建网站目录… 下载SSPanel… Cloning into ‘.’… Username for ‘https://github.com ‘: [email protected] Password for ‘https://yuebinliu%[email protected] ‘: remote: Invalid username or token. Password authentication is not supported for Git operations. fatal: Authentication failed for ‘https://github.com/sspanel-uim/SSPanel-Uim.git/ ‘
时间 : 2025-09-16T22:26:30
🤖 DeepSeek (deepseek-chat) 您遇到了GitHub认证问题。这是因为GitHub已经移除了密码认证,需要使用个人访问令牌(PAT)。我来修改脚本解决这个问题:
修改后的安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 #!/bin/bash set -eDOMAIN="yuebin.uk" DB_NAME="sspanel" DB_USER="sspanel_user" DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) PANEL_VERSION="2024.10.0" echo "==========================================" echo "SSPanel 安装脚本" echo "域名: $DOMAIN " echo "==========================================" echo "更新系统包..." apt update && apt upgrade -y echo "安装必要软件..." apt install -y curl wget git unzip nginx mariadb-server redis-server php8.2-fpm \ php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl \ php8.2-bcmath php8.2-zip php8.2-intl php8.2-redis echo "配置MySQL..." systemctl start mysql systemctl enable mysql mysql -u root <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD'; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; EOF mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES; EOF echo "安装Composer..." curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer echo "创建网站目录..." mkdir -p /www/wwwroot/$DOMAIN cd /www/wwwroot/$DOMAIN echo "下载SSPanel..." wget https://github.com/sspanel-uim/SSPanel-Uim/archive/refs/tags/v$PANEL_VERSION .zip -O sspanel.zip unzip sspanel.zip mv SSPanel-Uim-$PANEL_VERSION /* .mv SSPanel-Uim-$PANEL_VERSION /.* . 2>/dev/null || true rm -rf SSPanel-Uim-$PANEL_VERSION sspanel.zipecho "安装PHP依赖..." composer install --no-dev --optimize-autoloader --ignore-platform-reqs chown -R www-data:www-data /www/wwwroot/$DOMAIN chmod -R 755 /www/wwwroot/$DOMAIN chmod -R 777 /www/wwwroot/$DOMAIN /storagechmod -R 777 /www/wwwroot/$DOMAIN /publicecho "配置Nginx..." cat > /etc/nginx/sites-available/$DOMAIN <<EOF server { listen 80; server_name $DOMAIN; root /www/wwwroot/$DOMAIN/public; index index.php index.html; location / { try_files \$uri \$uri/ /index.php?\$query_string; } location ~ \.php\$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } EOF ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/rm -f /etc/nginx/sites-enabled/defaultnginx -t systemctl reload nginx echo "配置PHP..." sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.2/fpm/php.ini sed -i 's/^max_execution_time = .*/max_execution_time = 300/' /etc/php/8.2/fpm/php.ini sed -i 's/^memory_limit = .*/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 100M/' /etc/php/8.2/fpm/php.ini sed -i 's/^post_max_size = .*/post_max_size = 100M/' /etc/php/8.2/fpm/php.ini systemctl restart php8.2-fpm cp .config.example.php .config.phpcp .env.example .env APP_KEY=$(php -r "echo 'base64:' . base64_encode(random_bytes(32));" ) sed -i "s/#'app_key' => ''/'app_key' => '$APP_KEY '/" .config.php sed -i "s/#'database_driver' => 'mysql'/'database_driver' => 'mysql'/" .config.php sed -i "s/#'database_host' => 'localhost'/'database_host' => 'localhost'/" .config.php sed -i "s/#'database_database' => ''/'database_database' => '$DB_NAME '/" .config.php sed -i "s/#'database_username' => ''/'database_username' => '$DB_USER '/" .config.php sed -i "s/#'database_password' => ''/'database_password' => '$DB_PASSWORD '/" .config.php sed -i "s/#'database_charset' => 'utf8'/'database_charset' => 'utf8mb4'/" .config.php sed -i "s/#'database_collation' => 'utf8_unicode_ci'/'database_collation' => 'utf8mb4_unicode_ci'/" .config.php echo "==========================================" echo "安装完成!请继续以下步骤:" echo "1. 访问 http://$DOMAIN 完成安装" echo "2. 配置数据库连接" echo "3. 运行数据库迁移" echo "==========================================" echo "================= 重要信息 =================" echo "MySQL root 密码: $MYSQL_ROOT_PASSWORD " echo "SSPanel 数据库名: $DB_NAME " echo "SSPanel 数据库用户: $DB_USER " echo "SSPanel 数据库密码: $DB_PASSWORD " echo "应用密钥: $APP_KEY " echo "网站根目录: /www/wwwroot/$DOMAIN " echo "==========================================" echo "" echo "后续步骤:" echo "1. 运行数据库迁移:" echo " cd /www/wwwroot/$DOMAIN && php xcat Migration latest" echo "2. 创建管理员账户:" echo " cd /www/wwwroot/$DOMAIN && php xcat User createAdmin" echo "3. 设置定时任务:" echo " crontab -u www-data -e" echo " 添加:" echo " * * * * * php /www/wwwroot/$DOMAIN /xcat Job CheckJob" echo " 0 * * * * php /www/wwwroot/$DOMAIN /xcat Job DailyJob"
替代方案:如果wget也失败 如果GitHub下载仍然有问题,可以使用这个替代版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #!/bin/bash cd /www/wwwroot/$DOMAIN echo "尝试使用git浅克隆..." git clone https://github.com/sspanel-uim/SSPanel-Uim.git . --depth=1 if [ $? -eq 0 ]; then git checkout v$PANEL_VERSION else echo "Git克隆失败,使用备用下载链接..." wget https://ghproxy.com/https://github.com/sspanel-uim/SSPanel-Uim/archive/refs/tags/v$PANEL_VERSION .zip -O sspanel.zip unzip sspanel.zip mv SSPanel-Uim-$PANEL_VERSION /* . mv SSPanel-Uim-$PANEL_VERSION /.* . 2>/dev/null || true rm -rf SSPanel-Uim-$PANEL_VERSION sspanel.zip fi
手动下载方法 如果脚本仍然无法下载,您可以手动操作:
手动下载SSPanel :
1 2 3 4 5 6 cd /www/wwwroot/yuebin.ukwget https://github.com/sspanel-uim/SSPanel-Uim/releases/download/v2024.10.0/SSPanel-Uim-2024.10.0.zip unzip SSPanel-Uim-2024.10.0.zip
然后继续运行脚本的后续部分 。
重要提示
保存生成的密码 :脚本运行后会显示MySQL root密码和SSPanel数据库密码,请务必保存
完成安装后 :需要运行数据库迁移命令:
1 2 3 cd /www/wwwroot/yuebin.ukphp xcat Migration latest php xcat User createAdmin
修改后的脚本使用wget直接下载发布版压缩包,避免了Git认证问题。如果还有问题,请告诉我,我可以提供更多替代方案。
时间 : 2025-09-16T22:26:30
👤 用户 配置MySQL… ERROR 1045 (28000): Access denied for user ‘root‘@’localhost’ (using password: NO)
时间 : 2025-09-16T22:44:45
🤖 DeepSeek (deepseek-chat) 这个错误是因为MySQL在Debian 12上的默认安装方式已经改变了。让我提供一个修正版的脚本:
修正版安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 #!/bin/bash set -eDOMAIN="yuebin.uk" DB_NAME="sspanel" DB_USER="sspanel_user" DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) PANEL_VERSION="2024.10.0" echo "==========================================" echo "SSPanel 安装脚本" echo "域名: $DOMAIN " echo "==========================================" echo "更新系统包..." apt update && apt upgrade -y echo "安装必要软件..." apt install -y curl wget git unzip nginx mariadb-server redis-server php8.2-fpm \ php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl \ php8.2-bcmath php8.2-zip php8.2-intl php8.2-redis echo "配置MySQL..." systemctl start mysql systemctl enable mysql echo "检查MySQL认证方式..." if mysql -u root -e "SELECT 1" 2>/dev/null; then echo "MySQL root无需密码访问" mysql -u root <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD'; FLUSH PRIVILEGES; EOF else echo "MySQL需要密码或使用sudo访问" sudo mysql -u root <<EOF 2>/dev/null || \ mysql -u root -p$(sudo grep -oP 'temporary password.*: \K.*' /var/log/mysql/error.log | tail -1) --connect-expired-password <<EOF ALTER USER 'root' @'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD' ; FLUSH PRIVILEGES; EOF fi mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; EOF mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF CREATE DATABASE IF NOT EXISTS $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES; EOF echo "安装Composer..." curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer echo "创建网站目录..." mkdir -p /www/wwwroot/$DOMAIN cd /www/wwwroot/$DOMAIN echo "下载SSPanel..." wget https://github.com/sspanel-uim/SSPanel-Uim/archive/refs/tags/v$PANEL_VERSION .zip -O sspanel.zip if [ $? -eq 0 ]; then unzip sspanel.zip mv SSPanel-Uim-$PANEL_VERSION /* . mv SSPanel-Uim-$PANEL_VERSION /.* . 2>/dev/null || true rm -rf SSPanel-Uim-$PANEL_VERSION sspanel.zip else echo "下载失败,使用git克隆..." git clone https://github.com/sspanel-uim/SSPanel-Uim.git . --depth=1 git checkout v$PANEL_VERSION fi echo "安装PHP依赖..." composer install --no-dev --optimize-autoloader --ignore-platform-reqs chown -R www-data:www-data /www/wwwroot/$DOMAIN chmod -R 755 /www/wwwroot/$DOMAIN chmod -R 777 /www/wwwroot/$DOMAIN /storagechmod -R 777 /www/wwwroot/$DOMAIN /publicecho "配置Nginx..." cat > /etc/nginx/sites-available/$DOMAIN <<EOF server { listen 80; server_name $DOMAIN; root /www/wwwroot/$DOMAIN/public; index index.php index.html; location / { try_files \$uri \$uri/ /index.php?\$query_string; } location ~ \.php\$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } EOF ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/rm -f /etc/nginx/sites-enabled/defaultnginx -t systemctl reload nginx echo "配置PHP..." sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.2/fpm/php.ini sed -i 's/^max_execution_time = .*/max_execution_time = 300/' /etc/php/8.2/fpm/php.ini sed -i 's/^memory_limit = .*/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 100M/' /etc/php/8.2/fpm/php.ini sed -i 's/^post_max_size = .*/post_max_size = 100M/' /etc/php/8.2/fpm/php.ini systemctl restart php8.2-fpm cp .config.example.php .config.phpcp .env.example .env APP_KEY=$(php -r "echo 'base64:' . base64_encode(random_bytes(32));" ) sed -i "s/#'app_key' => ''/'app_key' => '$APP_KEY '/" .config.php sed -i "s/#'database_driver' => 'mysql'/'database_driver' => 'mysql'/" .config.php sed -i "s/#'database_host' => 'localhost'/'database_host' => 'localhost'/" .config.php sed -i "s/#'database_database' => ''/'database_database' => '$DB_NAME '/" .config.php sed -i "s/#'database_username' => ''/'database_username' => '$DB_USER '/" .config.php sed -i "s/#'database_password' => ''/'database_password' => '$DB_PASSWORD '/" .config.php sed -i "s/#'database_charset' => 'utf8'/'database_charset' => 'utf8mb4'/" .config.php sed -i "s/#'database_collation' => 'utf8_unicode_ci'/'database_collation' => 'utf8mb4_unicode_ci'/" .config.php echo "==========================================" echo "安装完成!请继续以下步骤:" echo "1. 访问 http://$DOMAIN 完成安装" echo "2. 运行数据库迁移:cd /www/wwwroot/$DOMAIN && php xcat Migration latest" echo "3. 创建管理员:cd /www/wwwroot/$DOMAIN && php xcat User createAdmin" echo "==========================================" echo "================= 重要信息 =================" echo "MySQL root 密码: $MYSQL_ROOT_PASSWORD " echo "SSPanel 数据库名: $DB_NAME " echo "SSPanel 数据库用户: $DB_USER " echo "SSPanel 数据库密码: $DB_PASSWORD " echo "应用密钥: $APP_KEY " echo "网站根目录: /www/wwwroot/$DOMAIN " echo "=========================================="
如果仍然有问题,请尝试这个手动MySQL配置方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 sudo systemctl status mysqlsudo grep 'temporary password' /var/log/mysql/error.logsudo mysql -u rootALTER USER 'root' @'localhost' IDENTIFIED BY '你的新密码' ; FLUSH PRIVILEGES; exit
备用MySQL配置脚本 如果上面的脚本还是有问题,可以使用这个更简单的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo systemctl stop mysqlsudo mysqld_safe --skip-grant-tables --skip-networking &mysql -u root FLUSH PRIVILEGES; ALTER USER 'root' @'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD' ; FLUSH PRIVILEGES; exit sudo pkill mysqldsudo systemctl start mysql
重要提示
Debian 12的MySQL :默认使用auth_socket插件,需要先设置root密码
保存密码 :脚本运行后会显示所有生成的密码,请务必保存
完成安装后 :需要运行:
1 2 3 cd /www/wwwroot/yuebin.ukphp xcat Migration latest php xcat User createAdmin
请运行修正后的脚本,它应该能够正确处理Debian 12的MySQL认证问题。如果还有问题,请告诉我具体的错误信息。
时间 : 2025-09-16T22:44:45
👤 用户 我修改你的一些程序的细微错误,你给出的地址不存在了。 #!/bin/bash
SSPanel 安装脚本 for Debian 12 域名: yuebin.uk set -e
配置变量 DOMAIN=”yuebin.uk” DB_NAME=”sspanel” DB_USER=”sspanel_user” DB_PASSWORD=$(openssl rand -base64 16 | tr -d ‘/+’ | cut -c1-16) MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16 | tr -d ‘/+’ | cut -c1-16) PANEL_VERSION=”25.1.0” # 最新稳定版本
echo “==========================================” echo “SSPanel 安装脚本” echo “域名: $DOMAIN” echo “==========================================”
更新系统 echo “更新系统包…” apt update && apt upgrade -y
安装必要软件 echo “安装必要软件…” apt install -y curl wget git unzip nginx mariadb-server redis-server php8.2-fpm php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-bcmath php8.2-zip php8.2-intl php8.2-redis
配置MySQL echo “配置MySQL…” systemctl start mysql systemctl enable mysql
安全设置MySQL mysql -u root <<EOF ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘$MYSQL_ROOT_PASSWORD’; DELETE FROM mysql.user WHERE User=’’; DELETE FROM mysql.user WHERE User=’root’ AND Host NOT IN (‘localhost’, ‘127.0.0.1’, ‘::1’); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db=’test’ OR Db=’test\_%’; FLUSH PRIVILEGES; EOF
创建SSPanel数据库 mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF CREATE DATABASE $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER ‘$DB_USER‘@’localhost’ IDENTIFIED BY ‘$DB_PASSWORD’; GRANT ALL PRIVILEGES ON $DB_NAME.* TO ‘$DB_USER‘@’localhost’; FLUSH PRIVILEGES; EOF
安装Composer echo “安装Composer…” curl -sS https://getcomposer.org/installer | php – –install-dir=/usr/local/bin –filename=composer
创建网站目录 echo “创建网站目录…” mkdir -p /www/wwwroot/$DOMAIN cd /www/wwwroot/$DOMAIN
下载SSPanel (使用无需认证的方式) echo “下载SSPanel…”
方法1: 直接下载发布版压缩包 wget https://github.com/Anankke/SSPanel-UIM/archive/refs/tags/$PANEL_VERSION.zip -O sspanel.zip unzip sspanel.zip mv SSPanel-UIM-$PANEL_VERSION/* . mv SSPanel-UIM-$PANEL_VERSION/.* . 2>/dev/null || true rm -rf SSPanel-UIM-$PANEL_VERSION sspanel.zip
或者方法2: 使用无需认证的git下载(如果上面的方法失败) git checkout $PANEL_VERSION 安装PHP依赖 echo “安装PHP依赖…” composer install –no-dev –optimize-autoloader –ignore-platform-reqs
设置文件权限 chown -R www-data:www-data /www/wwwroot/$DOMAIN chmod -R 755 /www/wwwroot/$DOMAIN chmod -R 777 /www/wwwroot/$DOMAIN/storage chmod -R 777 /www/wwwroot/$DOMAIN/public
配置Nginx echo “配置Nginx…” cat > /etc/nginx/sites-available/$DOMAIN <<EOF server { listen 80; server_name $DOMAIN; root /www/wwwroot/$DOMAIN/public; index index.php index.html;
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
} EOF
ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/ rm -f /etc/nginx/sites-enabled/default
测试Nginx配置 nginx -t systemctl reload nginx
配置PHP echo “配置PHP…” sed -i ‘s/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/‘ /etc/php/8.2/fpm/php.ini sed -i ‘s/^max_execution_time = ./max_execution_time = 300/‘ /etc/php/8.2/fpm/php.ini sed -i ‘s/^memory_limit = . /memory_limit = 256M/‘ /etc/php/8.2/fpm/php.ini sed -i ‘s/^upload_max_filesize = ./upload_max_filesize = 100M/‘ /etc/php/8.2/fpm/php.ini sed -i ‘s/^post_max_size = . /post_max_size = 100M/‘ /etc/php/8.2/fpm/php.ini
systemctl restart php8.2-fpm
创建环境配置文件 cp .config.example.php .config.php cp .env.example .env
生成密钥 APP_KEY=$(php -r “echo ‘base64:’ . base64_encode(random_bytes(32));”)
配置环境文件 sed -i “s/#’app_key’ => ‘’/‘app_key’ => ‘$APP_KEY’/“ .config.php sed -i “s/#’database_driver’ => ‘mysql’/‘database_driver’ => ‘mysql’/“ .config.php sed -i “s/#’database_host’ => ‘localhost’/‘database_host’ => ‘localhost’/“ .config.php sed -i “s/#’database_database’ => ‘’/‘database_database’ => ‘$DB_NAME’/“ .config.php sed -i “s/#’database_username’ => ‘’/‘database_username’ => ‘$DB_USER’/“ .config.php sed -i “s/#’database_password’ => ‘’/‘database_password’ => ‘$DB_PASSWORD’/“ .config.php sed -i “s/#’database_charset’ => ‘utf8’/‘database_charset’ => ‘utf8mb4’/“ .config.php sed -i “s/#’database_collation’ => ‘utf8_unicode_ci’/‘database_collation’ => ‘utf8mb4_unicode_ci’/“ .config.php
echo “==========================================” echo “安装完成!请继续以下步骤:” echo “1. 访问 http://$DOMAIN 完成安装” echo “2. 配置数据库连接” echo “3. 运行数据库迁移” echo “==========================================”
输出重要信息 echo “================= 重要信息 =================” echo “MySQL root 密码: $MYSQL_ROOT_PASSWORD” echo “SSPanel 数据库名: $DB_NAME” echo “SSPanel 数据库用户: $DB_USER” echo “SSPanel 数据库密码: $DB_PASSWORD” echo “应用密钥: $APP_KEY” echo “网站根目录: /www/wwwroot/$DOMAIN” echo “==========================================”
显示后续步骤 echo “” echo “后续步骤:” echo “1. 运行数据库迁移:” echo “ cd /www/wwwroot/$DOMAIN && php xcat Migration latest” echo “2. 创建管理员账户:” echo “ cd /www/wwwroot/$DOMAIN && php xcat User createAdmin” echo “3. 设置定时任务:” echo “ crontab -u www-data -e” echo “ 添加:” echo “ * * * * * php /www/wwwroot/$DOMAIN/xcat Job CheckJob” echo “ 0 * * * * php /www/wwwroot/$DOMAIN/xcat Job DailyJob”
时间 : 2025-09-16T23:03:31
🤖 DeepSeek (deepseek-chat) 我看到您修改了脚本,使用了正确的仓库地址和版本号。您做得很好!不过我发现下载链接可能还是有问题,让我为您提供一个完全修正的版本:
修正版安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 #!/bin/bash set -eDOMAIN="yuebin.uk" DB_NAME="sspanel" DB_USER="sspanel_user" DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16 | tr -d '/+' | cut -c1-16) PANEL_VERSION="25.1.0" echo "==========================================" echo "SSPanel 安装脚本" echo "域名: $DOMAIN " echo "==========================================" echo "更新系统包..." apt update && apt upgrade -y echo "安装必要软件..." apt install -y curl wget git unzip nginx mariadb-server redis-server php8.2-fpm \ php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl \ php8.2-bcmath php8.2-zip php8.2-intl php8.2-redis echo "配置MySQL..." systemctl start mysql systemctl enable mysql echo "设置MySQL root密码..." if mysql -u root -e "SELECT 1" 2>/dev/null; then mysql -u root <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD'; FLUSH PRIVILEGES; EOF else sudo mysql -u root <<EOF 2>/dev/null || \ mysql -u root -p$(sudo grep -oP 'temporary password.*: \K.*' /var/log/mysql/error.log 2>/dev/null | tail -1) --connect-expired-password <<EOF ALTER USER 'root' @'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD' ; FLUSH PRIVILEGES; EOF fi mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; EOF mysql -u root -p$MYSQL_ROOT_PASSWORD <<EOF CREATE DATABASE IF NOT EXISTS $DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES; EOF echo "安装Composer..." curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer echo "创建网站目录..." mkdir -p /www/wwwroot/$DOMAIN cd /www/wwwroot/$DOMAIN echo "下载SSPanel..." if wget https://github.com/Anankke/SSPanel-Uim/archive/refs/tags/$PANEL_VERSION .tar.gz -O sspanel.tar.gz; then tar -xzf sspanel.tar.gz mv SSPanel-Uim-$PANEL_VERSION /* . mv SSPanel-Uim-$PANEL_VERSION /.* . 2>/dev/null || true rm -rf SSPanel-Uim-$PANEL_VERSION sspanel.tar.gz elif wget https://github.com/Anankke/SSPanel-Uim/releases/download/$PANEL_VERSION /SSPanel-Uim-$PANEL_VERSION .tar.gz -O sspanel.tar.gz; then tar -xzf sspanel.tar.gz mv SSPanel-Uim-$PANEL_VERSION /* . mv SSPanel-Uim-$PANEL_VERSION /.* . 2>/dev/null || true rm -rf SSPanel-Uim-$PANEL_VERSION sspanel.tar.gz else echo "使用git克隆..." git clone https://github.com/Anankke/SSPanel-Uim.git . --depth=1 git checkout $PANEL_VERSION fi echo "安装PHP依赖..." composer install --no-dev --optimize-autoloader --ignore-platform-reqs chown -R www-data:www-data /www/wwwroot/$DOMAIN chmod -R 755 /www/wwwroot/$DOMAIN chmod -R 777 /www/wwwroot/$DOMAIN /storagechmod -R 777 /www/wwwroot/$DOMAIN /publicecho "配置Nginx..." cat > /etc/nginx/sites-available/$DOMAIN <<EOF server { listen 80; server_name $DOMAIN; root /www/wwwroot/$DOMAIN/public; index index.php index.html; location / { try_files \$uri \$uri/ /index.php?\$query_string; } location ~ \.php\$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } EOF ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/rm -f /etc/nginx/sites-enabled/defaultnginx -t systemctl reload nginx echo "配置PHP..." sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.2/fpm/php.ini sed -i 's/^max_execution_time = .*/max_execution_time = 300/' /etc/php/8.2/fpm/php.ini sed -i 's/^memory_limit = .*/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini sed -i 's/^upload_max_filesize = .*/upload_max_filesize = 100M/' /etc/php/8.2/fpm/php.ini sed -i 's/^post_max_size = .*/post_max_size = 100M/' /etc/php/8.2/fpm/php.ini systemctl restart php8.2-fpm if [ -f .config.example.php ]; then cp .config.example.php .config.php else echo "找不到.config.example.php,请检查下载的文件" exit 1 fi if [ -f .env.example ]; then cp .env.example .env else echo "找不到.env.example,继续安装..." fi APP_KEY=$(php -r "echo 'base64:' . base64_encode(random_bytes(32));" ) sed -i "s/#'app_key' => ''/'app_key' => '$APP_KEY '/" .config.php sed -i "s/#'database_driver' => 'mysql'/'database_driver' => 'mysql'/" .config.php sed -i "s/#'database_host' => 'localhost'/'database_host' => 'localhost'/" .config.php sed -i "s/#'database_database' => ''/'database_database' => '$DB_NAME '/" .config.php sed -i "s/#'database_username' => ''/'database_username' => '$DB_USER '/" .config.php sed -i "s/#'database_password' => ''/'database_password' => '$DB_PASSWORD '/" .config.php sed -i "s/#'database_charset' => 'utf8'/'database_charset' => 'utf8mb4'/" .config.php sed -i "s/#'database_collation' => 'utf8_unicode_ci'/'database_collation' => 'utf8mb4_unicode_ci'/" .config.php echo "==========================================" echo "安装完成!请继续以下步骤:" echo "1. 访问 http://$DOMAIN 完成安装" echo "2. 运行数据库迁移:cd /www/wwwroot/$DOMAIN && php xcat Migration latest" echo "3. 创建管理员:cd /www/wwwroot/$DOMAIN && php xcat User createAdmin" echo "==========================================" echo "================= 重要信息 =================" echo "MySQL root 密码: $MYSQL_ROOT_PASSWORD " echo "SSPanel 数据库名: $DB_NAME " echo "SSPanel 数据库用户: $DB_USER " echo "SSPanel 数据库密码: $DB_PASSWORD " echo "应用密钥: $APP_KEY " echo "网站根目录: /www/wwwroot/$DOMAIN " echo "==========================================" echo "" echo "后续步骤:" echo "1. 运行数据库迁移:" echo " cd /www/wwwroot/$DOMAIN && php xcat Migration latest" echo "2. 创建管理员账户:" echo " cd /www/wwwroot/$DOMAIN && php xcat User createAdmin" echo "3. 设置定时任务:" echo " crontab -u www-data -e" echo " 添加:" echo " * * * * * php /www/wwwroot/$DOMAIN /xcat Job CheckJob" echo " 0 * * * * php /www/wwwroot/$DOMAIN /xcat Job DailyJob"
主要修正:
MySQL配置 :添加了Debian 12的MySQL认证处理逻辑
下载链接 :修正了下载地址,使用.tar.gz格式和多个备用链接
错误处理 :添加了文件存在性检查
仓库名称 :使用正确的 SSPanel-Uim(不是SSPanel-UIM)
如果下载仍然失败,可以手动下载: 1 2 3 4 5 6 7 cd /www/wwwroot/yuebin.ukwget https://github.com/Anankke/SSPanel-Uim/releases/download/25.1.0/SSPanel-Uim-25.1.0.tar.gz tar -xzf SSPanel-Uim-25.1.0.tar.gz mv SSPanel-Uim-25.1.0/* .mv SSPanel-Uim-25.1.0/.* . 2>/dev/null || true rm -rf SSPanel-Uim-25.1.0 SSPanel-Uim-25.1.0.tar.gz
安装完成后运行: 1 2 3 cd /www/wwwroot/yuebin.ukphp xcat Migration latest php xcat User createAdmin
这个修正版脚本应该能够正确处理所有问题。如果还有任何错误,请告诉我具体的错误信息,我会帮您进一步调整。
时间 : 2025-09-16T23:03:31
👤 用户 创建环境配置文件 cp .config.example.php .config.php cp .env.example .env
出现错误,只帮我修改这部分: 配置PHP… cp: cannot stat ‘.config.example.php’: No such file or directory
时间 : 2025-09-16T23:13:54
🤖 DeepSeek (deepseek-chat) 这个错误说明下载的SSPanel文件结构可能有所变化。让我为您修正这部分代码:
修正环境配置文件创建部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 echo "创建环境配置文件..." if [ -f ".config.example.php" ]; then cp .config.example.php .config.php echo "已创建 .config.php" elif [ -f "config/.config.example.php" ]; then cp config/.config.example.php .config.php echo "已从 config/ 目录创建 .config.php" else echo "警告: 找不到 .config.example.php,请手动创建配置文件" cat > .config.php <<EOF <?php return [ 'app_key' => '$APP_KEY', 'database_driver' => 'mysql', 'database_host' => 'localhost', 'database_database' => '$DB_NAME', 'database_username' => '$DB_USER', 'database_password' => '$DB_PASSWORD', 'database_charset' => 'utf8mb4', 'database_collation' => 'utf8mb4_unicode_ci', ]; EOF echo "已创建基础 .config.php 文件" fi if [ -f ".env.example" ]; then cp .env.example .env echo "已创建 .env" elif [ -f "config/.env.example" ]; then cp config/.env.example .env echo "已从 config/ 目录创建 .env" else echo "信息: 找不到 .env.example,跳过创建 .env 文件" fi
完整的修正版本(只替换相关部分) 如果您只想替换有问题的部分,请用以下代码替换原来的创建环境配置文件部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 echo "创建环境配置文件..." CONFIG_EXAMPLE=$(find . -name ".config.example.php" -type f | head -n 1) if [ -n "$CONFIG_EXAMPLE " ]; then cp "$CONFIG_EXAMPLE " .config.php echo "已从 $(dirname "$CONFIG_EXAMPLE " ) 创建 .config.php" else echo "警告: 找不到 .config.example.php,创建基础配置文件" cat > .config.php <<EOF <?php return [ 'app_key' => '$APP_KEY', 'database_driver' => 'mysql', 'database_host' => 'localhost', 'database_database' => '$DB_NAME', 'database_username' => '$DB_USER', 'database_password' => '$DB_PASSWORD', 'database_charset' => 'utf8mb4', 'database_collation' => 'utf8mb4_unicode_ci', 'redis_scheme' => 'tcp', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, ]; EOF fi ENV_EXAMPLE=$(find . -name ".env.example" -type f | head -n 1) if [ -n "$ENV_EXAMPLE " ]; then cp "$ENV_EXAMPLE " .env echo "已从 $(dirname "$ENV_EXAMPLE " ) 创建 .env" else echo "信息: 找不到 .env.example,跳过创建 .env 文件" fi
手动检查文件结构 如果仍然有问题,您可以手动检查下载的文件结构:
1 2 3 cd /www/wwwroot/yuebin.ukls -lafind . -name "*.example*" -type f
如果文件确实不存在,可以手动创建: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 cat > .config.php <<'EOF' <?php return [ 'app_key' => '<?php echo $APP_KEY ?>' , 'database_driver' => 'mysql' , 'database_host' => 'localhost' , 'database_database' => '<?php echo $DB_NAME ?>' , 'database_username' => '<?php echo $DB_USER ?>' , 'database_password' => '<?php echo $DB_PASSWORD ?>' , 'database_charset' => 'utf8mb4' , 'database_collation' => 'utf8mb4_unicode_ci' , 'redis_scheme' => 'tcp' , 'redis_host' => '127.0.0.1' , 'redis_port' => 6379, 'base_url' => 'https://yuebin.uk' , ]; EOF sed -i "s/<?php echo \$APP_KEY ?>/$APP_KEY /" .config.php sed -i "s/<?php echo \$DB_NAME ?>/$DB_NAME /" .config.php sed -i "s/<?php echo \$DB_USER ?>/$DB_USER /" .config.php sed -i "s/<?php echo \$DB_PASSWORD ?>/$DB_PASSWORD /" .config.php
请使用第一个修正版代码替换原来的创建环境配置文件部分。这个版本会智能查找配置文件,如果找不到会自动创建基础配置。
时间 : 2025-09-16T23:13:54
👤 用户 确实文件目录已经更改。
时间 : 2025-09-16T23:17:40
🤖 DeepSeek (deepseek-chat) 看到了!文件结构确实发生了变化,配置文件现在在 config 目录下。让我为您修正这部分代码:
修正环境配置文件创建部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 echo "创建环境配置文件..." if [ -d "config" ]; then echo "找到 config 目录,从该目录复制配置文件" if [ -f "config/.config.example.php" ]; then cp config/.config.example.php .config.php echo "已从 config/ 目录创建 .config.php" else echo "警告: 在 config/ 目录中找不到 .config.example.php,创建基础配置文件" cat > .config.php <<EOF <?php return [ 'app_key' => '$APP_KEY', 'database_driver' => 'mysql', 'database_host' => 'localhost', 'database_database' => '$DB_NAME', 'database_username' => '$DB_USER', 'database_password' => '$DB_PASSWORD', 'database_charset' => 'utf8mb4', 'database_collation' => 'utf8mb4_unicode_ci', 'redis_scheme' => 'tcp', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, ]; EOF fi if [ -f "config/appprofile.example.php" ]; then cp config/appprofile.example.php config/appprofile.php echo "已创建 config/appprofile.php" fi if [ -f "config/clients.json" ]; then cp config/clients.json ./ echo "已复制 clients.json" fi if [ -f "config/settings.json" ]; then cp config/settings.json ./ echo "已复制 settings.json" fi else echo "错误: 找不到 config 目录,创建基础配置文件" cat > .config.php <<EOF <?php return [ 'app_key' => '$APP_KEY', 'database_driver' => 'mysql', 'database_host' => 'localhost', 'database_database' => '$DB_NAME', 'database_username' => '$DB_USER', 'database_password' => '$DB_PASSWORD', 'database_charset' => 'utf8mb4', 'database_collation' => 'utf8mb4_unicode_ci', 'redis_scheme' => 'tcp', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, ]; EOF fi if [ -f ".env.example" ]; then cp .env.example .env echo "已创建 .env" elif [ -f "config/.env.example" ]; then cp config/.env.example .env echo "已从 config/ 目录创建 .env" else echo "信息: 找不到 .env.example,跳过创建 .env 文件" fi if [ -f ".config.php" ]; then echo "配置 .config.php 文件..." sed -i "s/#'app_key' => ''/'app_key' => '$APP_KEY '/" .config.php sed -i "s/#'database_driver' => 'mysql'/'database_driver' => 'mysql'/" .config.php sed -i "s/#'database_host' => 'localhost'/'database_host' => 'localhost'/" .config.php sed -i "s/#'database_database' => ''/'database_database' => '$DB_NAME '/" .config.php sed -i "s/#'database_username' => ''/'database_username' => '$DB_USER '/" .config.php sed -i "s/#'database_password' => ''/'database_password' => '$DB_PASSWORD '/" .config.php sed -i "s/#'database_charset' => 'utf8'/'database_charset' => 'utf8mb4'/" .config.php sed -i "s/#'database_collation' => 'utf8_unicode_ci'/'database_collation' => 'utf8mb4_unicode_ci'/" .config.php else echo "错误: .config.php 文件不存在,无法配置" fi
完整的修正版本(替换原来的创建环境配置部分) 用以下代码完全替换原来的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 echo "创建环境配置文件..." if [ -d "config" ]; then echo "使用 config 目录中的配置文件" if [ -f "config/.config.example.php" ]; then cp config/.config.example.php .config.php echo "已创建 .config.php" sed -i "s/#'app_key' => ''/'app_key' => '$APP_KEY '/" .config.php sed -i "s/#'database_driver' => 'mysql'/'database_driver' => 'mysql'/" .config.php sed -i "s/#'database_host' => 'localhost'/'database_host' => 'localhost'/" .config.php sed -i "s/#'database_database' => ''/'database_database' => '$DB_NAME '/" .config.php sed -i "s/#'database_username' => ''/'database_username' => '$DB_USER '/" .config.php sed -i "s/#'database_password' => ''/'database_password' => '$DB_PASSWORD '/" .config.php sed -i "s/#'database_charset' => 'utf8'/'database_charset' => 'utf8mb4'/" .config.php sed -i "s/#'database_collation' => 'utf8_unicode_ci'/'database_collation' => 'utf8mb4_unicode_ci'/" .config.php else echo "创建基础 .config.php" cat > .config.php <<EOF <?php return [ 'app_key' => '$APP_KEY', 'database_driver' => 'mysql', 'database_host' => 'localhost', 'database_database' => '$DB_NAME', 'database_username' => '$DB_USER', 'database_password' => '$DB_PASSWORD', 'database_charset' => 'utf8mb4', 'database_collation' => 'utf8mb4_unicode_ci', 'redis_scheme' => 'tcp', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, ]; EOF fi [ -f "config/appprofile.example.php" ] && cp config/appprofile.example.php config/appprofile.php [ -f "config/clients.json" ] && cp config/clients.json ./ [ -f "config/settings.json" ] && cp config/settings.json ./ else echo "创建基础配置文件结构" mkdir -p config cat > .config.php <<EOF <?php return [ 'app_key' => '$APP_KEY', 'database_driver' => 'mysql', 'database_host' => 'localhost', 'database_database' => '$DB_NAME', 'database_username' => '$DB_USER', 'database_password' => '$DB_PASSWORD', 'database_charset' => 'utf8mb4', 'database_collation' => 'utf8mb4_unicode_ci', 'redis_scheme' => 'tcp', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, ]; EOF fi echo "环境配置文件创建完成"
这个修正版会正确处理新版本的文件结构,从 config 目录中复制所需的配置文件。如果 config 目录不存在或缺少某些文件,它会自动创建基础配置。
时间 : 2025-09-16T23:17:40
👤 用户 你这样配置是不对的。我看了说明文档,他的配置文件本身就放在站点目录的config目录下。
置目录权限 安全最佳实践 只给必要的目录写权限,避免使用 777 权限。以下设置遵循最小权限原则。
设置基础权限 chown -R www-data:www-data /var/www/sspanel find /var/www/sspanel -type d -exec chmod 755 {} ; find /var/www/sspanel -type f -exec chmod 644 {} ;
设置需要写权限的目录 chmod -R 777 /var/www/sspanel/storage chmod 775 /var/www/sspanel/public/clients
确保 storage 子目录存在且可写 mkdir -p /var/www/sspanel/storage/framework/smarty/{cache,compile} mkdir -p /var/www/sspanel/storage/framework/twig/cache chmod -R 777 /var/www/sspanel/storage/framework
配置文件权限(初次安装) chmod 664 /var/www/sspanel/config/.config.php chmod 664 /var/www/sspanel/config/appprofile.php
权限说明 755/644:标准的目录/文件权限,所有者可读写执行,其他用户只读 775/664:组用户也可写,适用于需要 Web 服务器写入的目录/文件 777:storage 目录需要此权限,因为 PHP 进程和定时任务可能以不同用户运行 storage/:存储缓存、编译模板、日志等运行时文件 public/clients/:存储客户端下载文件 config/:仅在初次安装时需要写权限,之后可改为只读
步骤 7:配置 SSPanel 编辑配置文件 /var/www/sspanel/config/.config.php:
$_ENV[‘baseUrl’] = ‘https://your-domain.com ‘; // 修改为你的域名
// 数据库配置 $_ENV[‘db_host’] = ‘127.0.0.1’; $_ENV[‘db_database’] = ‘sspanel’; $_ENV[‘db_username’] = ‘sspanel’; $_ENV[‘db_password’] = ‘上面生成的数据库密码’;
时间 : 2025-09-16T23:48:57
🤖 DeepSeek (deepseek-chat) 您说得对!我理解了正确的配置方式。让我根据官方文档修正脚本:
修正的环境配置文件部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 echo "创建环境配置文件..." if [ -f "config/.config.example.php" ]; then cp config/.config.example.php config/.config.php echo "已创建 config/.config.php" sed -i "s|https://your-domain.com|https://$DOMAIN |g" config/.config.php sed -i "s|$_ENV \['db_host'\] = '127.0.0.1';|$_ENV ['db_host'] = 'localhost';|g" config/.config.php sed -i "s|$_ENV \['db_database'\] = 'sspanel';|$_ENV ['db_database'] = '$DB_NAME ';|g" config/.config.php sed -i "s|$_ENV \['db_username'\] = 'sspanel';|$_ENV ['db_username'] = '$DB_USER ';|g" config/.config.php sed -i "s|$_ENV \['db_password'\] = 'password';|$_ENV ['db_password'] = '$DB_PASSWORD ';|g" config/.config.php chmod 664 config/.config.php else echo "错误: 找不到 config/.config.example.php,创建基础配置" cat > config/.config.php <<EOF <?php \$_ENV['baseUrl'] = 'https://$DOMAIN'; \$_ENV['db_host'] = 'localhost'; \$_ENV['db_database'] = '$DB_NAME'; \$_ENV['db_username'] = '$DB_USER'; \$_ENV['db_password'] = '$DB_PASSWORD'; \$_ENV['db_charset'] = 'utf8mb4'; \$_ENV['db_collation'] = 'utf8mb4_unicode_ci'; \$_ENV['redis_scheme'] = 'tcp'; \$_ENV['redis_host'] = '127.0.0.1'; \$_ENV['redis_port'] = 6379; EOF chmod 664 config/.config.php fi if [ -f "config/appprofile.example.php" ]; then cp config/appprofile.example.php config/appprofile.php chmod 664 config/appprofile.php echo "已创建 config/appprofile.php" fi if [ -f "config/clients.json" ]; then chmod 644 config/clients.json echo "已设置 clients.json 权限" fi if [ -f "config/settings.json" ]; then chmod 644 config/settings.json echo "已设置 settings.json 权限" fi
修正的文件权限设置部分 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 echo "设置文件权限..." chown -R www-data:www-data /www/wwwroot/$DOMAIN find /www/wwwroot/$DOMAIN -type d -exec chmod 755 {} \; find /www/wwwroot/$DOMAIN -type f -exec chmod 644 {} \; chmod -R 777 /www/wwwroot/$DOMAIN /storagechmod 775 /www/wwwroot/$DOMAIN /public/clientsmkdir -p /www/wwwroot/$DOMAIN /storage/framework/smarty/{cache,compile}mkdir -p /www/wwwroot/$DOMAIN /storage/framework/twig/cachechmod -R 777 /www/wwwroot/$DOMAIN /storage/frameworkchmod 664 /www/wwwroot/$DOMAIN /config/.config.php[ -f "/www/wwwroot/$DOMAIN /config/appprofile.php" ] && chmod 664 /www/wwwroot/$DOMAIN /config/appprofile.php echo "权限设置完成"
完整的修正版本 如果您需要替换整个相关部分,请使用以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 echo "创建环境配置文件..." mkdir -p configif [ -f "config/.config.example.php" ]; then cp config/.config.example.php config/.config.php sed -i "s|https://your-domain.com|https://$DOMAIN |g" config/.config.php sed -i "s|'127.0.0.1'|'localhost'|g" config/.config.php sed -i "s|'sspanel'|'$DB_NAME '|g" config/.config.php sed -i "s|'sspanel'|'$DB_USER '|g" config/.config.php sed -i "s|'password'|'$DB_PASSWORD '|g" config/.config.php echo "已配置 config/.config.php" else cat > config/.config.php <<EOF <?php \$_ENV['baseUrl'] = 'https://$DOMAIN'; \$_ENV['db_host'] = 'localhost'; \$_ENV['db_database'] = '$DB_NAME'; \$_ENV['db_username'] = '$DB_USER'; \$_ENV['db_password'] = '$DB_PASSWORD'; \$_ENV['db_charset'] = 'utf8mb4'; \$_ENV['db_collation'] = 'utf8mb4_unicode_ci'; \$_ENV['redis_scheme'] = 'tcp'; \$_ENV['redis_host'] = '127.0.0.1'; \$_ENV['redis_port'] = 6379; ?> EOF echo "已创建基础 config/.config.php" fi [ -f "config/appprofile.example.php" ] && cp config/appprofile.example.php config/appprofile.php [ -f "config/clients.json" ] && echo "clients.json 已存在" [ -f "config/settings.json" ] && echo "settings.json 已存在" echo "设置文件权限..." chown -R www-data:www-data /www/wwwroot/$DOMAIN find /www/wwwroot/$DOMAIN -type d -exec chmod 755 {} \; find /www/wwwroot/$DOMAIN -type f -exec chmod 644 {} \; chmod -R 777 storagemkdir -p storage/framework/smarty/{cache,compile}mkdir -p storage/framework/twig/cachechmod -R 777 storage/frameworkmkdir -p public/clientschmod 775 public/clientschmod 664 config/.config.php 2>/dev/null || true [ -f "config/appprofile.php" ] && chmod 664 config/appprofile.php echo "环境配置和权限设置完成"
这样配置就符合官方文档的要求了:
配置文件保持在 config/ 目录中
使用正确的 $_ENV 数组格式进行配置
按照最小权限原则设置文件权限
确保必要的目录有写权限
时间 : 2025-09-16T23:48:57
对话统计