SSPanel 安装脚本 for Debian 12
我将根据您提供的Debian 12系统和域名yuebin.uk,创建一个SSPanel手动安装脚本。以下是完整的安装脚本和必要的配置信息。
安装脚本
#!/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="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
# 配置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..."
git clone https://github.com/sspanel-uim/SSPanel-Uim.git .
git checkout v$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 "=========================================="
使用说明
- 保存脚本:
nano install_sspanel.sh
chmod +x install_sspanel.sh
- 运行脚本:
./install_sspanel.sh
- 完成安装:
- 访问
http://yuebin.uk - 按照网页指引完成安装
- 运行数据库迁移命令:
cd /www/wwwroot/yuebin.uk
php xcat Migration latest
重要安全信息
脚本会自动生成以下凭据,请妥善保存:
- MySQL root 密码: 随机生成(脚本运行后显示)
- SSPanel 数据库密码: 随机生成(脚本运行后显示)
- 应用密钥: 随机生成(用于加密会话)
后续步骤
- 配置SSL证书(推荐):
apt install certbot python3-certbot-nginx
certbot --nginx -d yuebin.uk
- 设置定时任务:
crontab -u www-data -e
添加:
* * * * * php /www/wwwroot/yuebin.uk/xcat Job CheckJob
0 * * * * php /www/wwwroot/yuebin.uk/xcat Job DailyJob
- 防火墙配置:
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
这个脚本会自动处理大部分安装步骤,并在完成后显示所有重要的配置信息。请确保保存好生成的密码和密钥!
主要改进内容:
完整的错误处理和日志记录
自动SSL证书配置(使用Let's Encrypt)
更安全的随机密钥生成
完整的Nginx安全配置(包含安全头和缓存设置)
安装信息备份文件
更好的权限管理
Redis配置集成
版本验证检查
使用方法:
bash
给予执行权限
chmod +x install_sspanel.sh
运行脚本
./install_sspanel.sh
或者直接运行
bash install_sspanel.sh
这个脚本现在包含了完整的生产环境配置,包括SSL证书、安全头、错误处理等。安装完成后记得按照提示完成数据库迁移和管理员账户创建。
