# 克隆仓库 info "克隆仓库..." if [ -d "$project_name" ]; then warning "目录 $project_name 已存在,将尝试使用现有目录" else git clone https://github.com/ifindev/fullstack-next-cloudflare.git $project_name fi
cd$project_name
# 检查是否克隆成功 if [ $? -ne 0 ]; then error "克隆仓库失败" exit 1 fi
# 安装依赖 info "安装依赖..." npm install
if [ $? -ne 0 ]; then error "安装依赖失败" exit 1 fi
# 设置环境变量 info "设置环境变量..."
# 创建环境变量文件 if [ ! -f .env.local ]; then cp .env.example .env.local info "已创建 .env.local 文件,请根据需要进行编辑" else info ".env.local 文件已存在" fi
# 克隆仓库 info "克隆仓库..." if [ -d "$project_name" ]; then warning "目录 $project_name 已存在,将尝试使用现有目录" else git clone https://github.com/ifindev/fullstack-next-cloudflare.git $project_name fi
cd$project_name
# 检查是否克隆成功 if [ $? -ne 0 ]; then error "克隆仓库失败" exit 1 fi
# 安装依赖 info "安装依赖..." npm install
if [ $? -ne 0 ]; then error "安装依赖失败" exit 1 fi
# 设置环境变量 info "设置环境变量..."
# 创建环境变量文件 if [ ! -f .env.local ]; then cp .env.example .env.local info "已创建 .env.local 文件,请根据需要进行编辑" else info ".env.local 文件已存在" fi
2025/09/17 09:20:58 [error] 71168#71168: *1312 FastCGI sent in stderr: “PHP message: PHP Warning: Attempt to read property “type” on null in /www/wwwroot/yuebin.uk/src/Models/Config.php on line 34; PHP message: PHP Warning: Attempt to read property “value” on null in /www/wwwroot/yuebin.uk/src/Models/Config.php on line 38” while reading response header from upstream, client: 49.66.100.43, server: yuebin.uk, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php8.2-fpm.sock:”, host: “yuebin.uk”, referrer: “https://yuebin.uk/sub/a39b5210d6f007a6/clash“
# 安装MariaDB (替代MySQL,支持Debian 12) install_mariadb() { log"安装MariaDB..." ifcommand -v mariadb &> /dev/null || command -v mysql &> /dev/null; then warning "MariaDB/MySQL 已经安装,跳过安装步骤" return fi if [[ "$OS_ID" == "ubuntu" ]] || [[ "$OS_ID" == "debian" ]]; then # 安装MariaDB Server apt install -y mariadb-server mariadb-client systemctl start mariadb systemctl enable mariadb # MariaDB安全设置 log"执行MariaDB安全设置..." 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 elif [[ "$OS_ID" == "centos" ]] || [[ "$OS_ID" == "rocky" ]]; then # CentOS/Rocky Linux 安装MariaDB yum install -y mariadb-server mariadb systemctl start mariadb systemctl enable mariadb # MariaDB安全设置 mysql -u root <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '$mysql_root_password'; FLUSH PRIVILEGES; EOF fi success "MariaDB安装完成" }
# 安装MariaDB (替代MySQL,支持Debian 12) install_mariadb() { log"安装MariaDB..." ifcommand -v mariadb &> /dev/null || command -v mysql &> /dev/null; then warning "MariaDB/MySQL 已经安装,跳过安装步骤" return fi # 安装MariaDB Server apt install -y mariadb-server mariadb-client systemctl start mariadb systemctl enable mariadb # MariaDB安全设置 log"执行MariaDB安全设置..." 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 success "MariaDB安装完成" }
# 安装MariaDB (支持Debian 12) install_mariadb() { log"安装MariaDB..." ifcommand -v mariadb &> /dev/null || command -v mysql &> /dev/null; then warning "MariaDB/MySQL 已经安装,跳过安装步骤" return fi # 安装MariaDB Server和客户端 apt install -y mariadb-server mariadb-client systemctl start mariadb systemctl enable mariadb # MariaDB安全设置 log"执行MariaDB安全设置..." 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 success "MariaDB安装完成" }
# 创建SSPanel数据库 create_database() { log"创建SSPanel数据库..." # 测试MariaDB连接 if ! mysql -u root -p"$mysql_root_password" -e "SELECT 1;" &> /dev/null; then error "无法连接到MariaDB,请检查root密码是否正确" exit 1 fi 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 # 检查数据库是否创建成功 if mysql -u root -p"$mysql_root_password" -e "USE $db_name;" 2>/dev/null; then success "数据库创建成功" else error "数据库创建失败" exit 1 fi }
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
# 或者连接到数据库后查看 mysql -u root -p -e "SELECT VERSION();"
这会显示类似 mariadb.org binary distribution 的信息,确认安装的是 MariaDB。
这个脚本选择 MariaDB 是正确的,因为在 Debian 12 上安装 MariaDB 比 MySQL 更简单且更稳定。
时间: 2025-09-17T21:23:22
👤 用户
[INFO] 2025-09-17 13:43:53 - 安装Composer… ./install_all.sh: line 221: php: command not found ./install_all.sh: line 222: php: command not found ./install_all.sh: line 223: php: command not found
# 备用PHP安装方法 install_php_fallback() { log"尝试备用PHP安装方法..." # 安装基础PHP包 apt install -y php8.2 php8.2-fpm php8.2-cli # 逐个安装可用的扩展 for ext in curl common mbstring mysql xml zip gd intl bcmath redis; do if apt-cache show "php8.2-${ext}" &> /dev/null; then apt install -y "php8.2-${ext}" else warning "php8.2-${ext} 不可用,跳过" fi done # 检查并启用扩展 php -m }
# 创建SSPanel数据库(修改后) create_database() { log"创建SSPanel数据库..." # 测试MariaDB连接 if ! mysql -u root -p"$mysql_root_password" -e "SELECT 1;" &> /dev/null; then error "无法连接到MariaDB,请检查root密码是否正确" exit 1 fi 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 # 检查数据库是否创建成功 if mysql -u root -p"$mysql_root_password" -e "USE $db_name;" 2>/dev/null; then success "数据库创建成功" else error "数据库创建失败" exit 1 fi }
# 初始化数据库(修改后) init_database() { log"初始化数据库..." cd /var/www/sspanel || exit # 首先确认 vendor 目录存在 if [ ! -f vendor/autoload.php ]; then error "vendor/autoload.php 不存在,请先运行 composer install" composer install --no-dev --optimize-autoloader fi # 导入基础SQL结构(官方文档要求) if [ -f "sql/glzjin_all.sql" ]; then mysql -u root -p"$mysql_root_password"$db_name < sql/glzjin_all.sql else warning "未找到 sql/glzjin_all.sql,尝试从GitHub下载..." wget -O sql/glzjin_all.sql https://github.com/Anankke/SSPanel-Uim/raw/master/sql/glzjin_all.sql if [ $? -eq 0 ]; then mysql -u root -p"$mysql_root_password"$db_name < sql/glzjin_all.sql else error "无法下载基础SQL文件" exit 1 fi fi # 执行数据库迁移(更新到最新版本) php xcat Migration latest # 导入配置项 php xcat Tool importSetting # 创建管理员账户 php xcat Tool createAdmin success "数据库初始化完成" }
Package php8.2-json is a virtual package provided by: php8.2-phpdbg 8.2.29-1deb12u1 php8.2-fpm 8.2.29-1deb12u1 php8.2-cli 8.2.29-1deb12u1 php8.2-cgi 8.2.29-1deb12u1 libphp8.2-embed 8.2.29-1deb12u1 libapache2-mod-php8.2 8.2.29-1deb12u1 You should explicitly select one to install.
E: Package ‘php8.2-json’ has no installation candidate E: Unable to locate package php8.2-openssl E: Couldn’t find any package by glob ‘php8.2-openssl’ [ERROR] 2025-09-17 13:54:09 - PHP安装失败,php命令未找到
# 备用PHP安装方法 install_php_fallback() { log"尝试备用PHP安装方法..." # 安装基础PHP包 apt install -y php8.2 php8.2-fpm php8.2-cli # 逐个安装可用的扩展 for ext in curl common mbstring mysql xml zip gd intl bcmath redis; do if apt-cache show "php8.2-${ext}" &> /dev/null; then apt install -y "php8.2-${ext}" else warning "php8.2-${ext} 不可用,跳过" fi done # 检查并启用扩展 php -m }
# 创建SSPanel数据库 create_database() { log"创建SSPanel数据库..." # 测试MySQL连接 if ! mysql -u root -p"$mysql_root_password" -e "SELECT 1;" &> /dev/null; then error "无法连接到MySQL,请检查root密码是否正确" exit 1 fi 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 # 检查数据库是否创建成功 if mysql -u root -p"$mysql_root_password" -e "USE $db_name;" 2>/dev/null; then success "数据库创建成功" else error "数据库创建失败" exit 1 fi }
# 下载SSPanel文件 download_sspanel() { log"下载SSPanel v${PANEL_VERSION}..." cd /var/www || exit if [ -d "sspanel" ]; then warning "SSPanel目录已存在,跳过下载" return fi # 方法1: 直接下载发布版压缩包 wget https://github.com/Anankke/SSPanel-UIM/archive/refs/tags/${PANEL_VERSION}.zip -O sspanel.zip if [ $? -ne 0 ]; then error "下载SSPanel失败,尝试方法2: git clone" # 方法2: 使用git clone git clone https://github.com/Anankke/SSPanel-Uim.git sspanel cd sspanel git checkout tags/${PANEL_VERSION} else # 解压文件 unzip sspanel.zip mv SSPanel-UIM-${PANEL_VERSION} sspanel rm sspanel.zip cd sspanel fi success "SSPanel下载完成" }
# 安装PHP依赖 install_php_dependencies() { log"安装PHP依赖..." cd /var/www/sspanel || exit # 尝试安装依赖,忽略imagick扩展如果不可用 composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-imagick # 检查vendor目录是否存在 if [ ! -f "vendor/autoload.php" ]; then error "vendor/autoload.php 不存在,Composer依赖安装失败" exit 1 fi success "PHP依赖安装完成" }
# 编译前端资源 build_frontend() { log"编译前端资源..." cd /var/www/sspanel || exit yarn install yarn run build:production success "前端资源编译完成" }
# 检查是否以root用户运行 check_root() { if [[ $EUID -ne 0 ]]; then error "此脚本必须以root权限运行" exit 1 fi }
# 检查系统类型 check_os() { if [ -f /etc/os-release ]; then . /etc/os-release OS=$NAME VER=$VERSION_ID else error "无法检测操作系统类型" exit 1 fi log"检测到操作系统: $OS$VER" }
# 安装必要的依赖 install_dependencies() { log"安装必要的依赖包..." if [[ "$OS" == "Ubuntu" ]] || [[ "$OS" == "Debian GNU/Linux" ]]; then apt update apt install -y curl wget git unzip zip software-properties-common elif [[ "$OS" == "CentOS Linux" ]]; then yum install -y curl wget git unzip zip epel-release else error "不支持的操作系统: $OS" exit 1 fi }
# 安装MySQL install_mysql() { log"安装MySQL..." ifcommand -v mysql &> /dev/null; then warning "MySQL 已经安装,跳过安装步骤" return fi if [[ "$OS" == "Ubuntu" ]] || [[ "$OS" == "Debian GNU/Linux" ]]; then apt install -y mysql-server systemctl start mysql systemctl enable mysql elif [[ "$OS" == "CentOS Linux" ]]; then yum install -y mysql-server systemctl start mysqld systemctl enable mysqld fi # MySQL安全设置 log"执行MySQL安全设置..." if [[ "$OS" == "CentOS Linux" ]]; then MYSQL_TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') mysql --connect-expired-password -u root -p"$MYSQL_TEMP_PASSWORD" <<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 else mysql_secure_installation fi }
# 安装Redis install_redis() { log"安装Redis..." ifcommand -v redis-server &> /dev/null; then warning "Redis 已经安装,跳过安装步骤" return fi if [[ "$OS" == "Ubuntu" ]] || [[ "$OS" == "Debian GNU/Linux" ]]; then apt install -y redis-server systemctl enable redis-server systemctl start redis-server elif [[ "$OS" == "CentOS Linux" ]]; then yum install -y redis systemctl enable redis systemctl start redis fi # 基本Redis安全设置 log"配置Redis..." sed -i 's/bind 127.0.0.1/bind 127.0.0.1 ::1/g' /etc/redis/redis.conf sed -i 's/protected-mode yes/protected-mode yes/g' /etc/redis/redis.conf systemctl restart redis }
# 创建SSPanel数据库 create_database() { log"创建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 }
# 创建SSPanel数据库 create_database() { log"创建SSPanel数据库..." 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 # 导入数据库结构 log"导入数据库结构..." mysql -u root -p"$mysql_root_password"$db_name < /var/www/sspanel/sql/glzjin_all.sql }
已执行 composer install 安装依赖 已配置好 .config.php 中的数据库连接信息 确保 vendor/autoload.php 文件存在 如果遇到 “Failed to open stream: No such file or directory” 错误,说明 Composer 依赖未安装。
# 创建SSPanel数据库 create_database() { log"创建SSPanel数据库..." 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 # 检查数据库是否创建成功 if mysql -u root -p"$mysql_root_password" -e "USE $db_name;" 2>/dev/null; then success "数据库创建成功" else error "数据库创建失败" exit 1 fi }
# 初始化数据库表结构 init_database() { log"初始化数据库表结构..." cd /var/www/sspanel || exit # 确保vendor存在 check_vendor # 导入数据库结构 if [ -f "sql/glzjin_all.sql" ]; then mysql -u root -p"$mysql_root_password"$db_name < sql/glzjin_all.sql success "数据库表结构导入完成" else error "找不到数据库初始化文件 sql/glzjin_all.sql" exit 1 fi # 运行数据库迁移 log"运行数据库迁移..." php xcat Migration latest }
# 创建SSPanel数据库 create_database() { log"创建SSPanel数据库..." 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 # 检查数据库是否创建成功 if mysql -u root -p"$mysql_root_password" -e "USE $db_name;" 2>/dev/null; then success "数据库创建成功" else error "数据库创建失败" exit 1 fi }
# 下载SSPanel文件 download_sspanel() { log"下载SSPanel v${PANEL_VERSION}..." cd /var/www || exit if [ -d "sspanel" ]; then warning "SSPanel目录已存在,跳过下载" return fi # 方法1: 直接下载发布版压缩包 wget https://github.com/Anankke/SSPanel-UIM/archive/refs/tags/${PANEL_VERSION}.zip -O sspanel.zip if [ $? -ne 0 ]; then error "下载SSPanel失败,尝试方法2: git clone" # 方法2: 使用git clone git clone https://github.com/Anankke/SSPanel-Uim.git sspanel cd sspanel git checkout tags/${PANEL_VERSION} else # 解压文件 unzip sspanel.zip mv SSPanel-UIM-${PANEL_VERSION} sspanel rm sspanel.zip cd sspanel fi success "SSPanel下载完成" }
# 安装PHP依赖 install_php_dependencies() { log"安装PHP依赖..." cd /var/www/sspanel || exit composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-imagick # 检查vendor目录是否存在 if [ ! -f "vendor/autoload.php" ]; then error "vendor/autoload.php 不存在,Composer依赖安装失败" exit 1 fi success "PHP依赖安装完成" }
# 编译前端资源 build_frontend() { log"编译前端资源..." cd /var/www/sspanel || exit yarn install yarn run build:production success "前端资源编译完成" }
# 创建SSPanel数据库 create_database() { log"创建SSPanel数据库..." # 测试MySQL连接 if ! mysql -u root -p"$mysql_root_password" -e "SELECT 1;" &> /dev/null; then error "无法连接到MySQL,请检查root密码是否正确" exit 1 fi 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 # 检查数据库是否创建成功 if mysql -u root -p"$mysql_root_password" -e "USE $db_name;" 2>/dev/null; then success "数据库创建成功" else error "数据库创建失败" exit 1 fi }
# 下载SSPanel文件 download_sspanel() { log"下载SSPanel v${PANEL_VERSION}..." cd /var/www || exit if [ -d "sspanel" ]; then warning "SSPanel目录已存在,跳过下载" return fi # 方法1: 直接下载发布版压缩包 wget https://github.com/Anankke/SSPanel-UIM/archive/refs/tags/${PANEL_VERSION}.zip -O sspanel.zip if [ $? -ne 0 ]; then error "下载SSPanel失败,尝试方法2: git clone" # 方法2: 使用git clone git clone https://github.com/Anankke/SSPanel-Uim.git sspanel cd sspanel git checkout tags/${PANEL_VERSION} else # 解压文件 unzip sspanel.zip mv SSPanel-UIM-${PANEL_VERSION} sspanel rm sspanel.zip cd sspanel fi success "SSPanel下载完成" }
# 安装PHP依赖 install_php_dependencies() { log"安装PHP依赖..." cd /var/www/sspanel || exit # 尝试安装依赖,忽略imagick扩展如果不可用 composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-imagick # 检查vendor目录是否存在 if [ ! -f "vendor/autoload.php" ]; then error "vendor/autoload.php 不存在,Composer依赖安装失败" exit 1 fi success "PHP依赖安装完成" }
# 编译前端资源 build_frontend() { log"编译前端资源..." cd /var/www/sspanel || exit yarn install yarn run build:production success "前端资源编译完成" }
# 配置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 check_command "MySQL安全配置"
# 创建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 check_command "数据库创建"
# 使用sed动态替换配置值,而不是手动编辑 sed -i "s|'ChangeMe'|'${APP_KEY}'|g" /var/www/sspanel/.config.php sed -i "s|https://example.com|https://yuebin.uk|g" /var/www/sspanel/.config.php sed -i "s|'sspanel'|'${DB_PASSWORD}'|g" /var/www/sspanel/.config.php
数据库安全设置:
1 2
# 建议在MySQL安装后运行安全脚本 mysql_secure_installation
PHP优化:
1 2 3
# 增加PHP内存限制和执行时间(SSPanel需要) sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini sed -i 's/max_execution_time = .*/max_execution_time = 300/' /etc/php/8.2/fpm/php.ini
# 配置MySQL mysql -e "CREATE DATABASE sspanel;" mysql -e "CREATE USER 'sspanel'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';" mysql -e "GRANT ALL PRIVILEGES ON sspanel.* TO 'sspanel'@'localhost';" mysql -e "FLUSH PRIVILEGES;"
# 使用sed动态更新配置 sed -i "s/'ChangeMe'/'${APP_KEY}'/g" /var/www/sspanel/.config.php sed -i "s|https://example.com|https://yuebin.uk|g" /var/www/sspanel/.config.php sed -i "s/'sspanel'/'${DB_PASSWORD}'/g" /var/www/sspanel/.config.php sed -i "s/'ChangeMe'/'${MU_KEY}'/g" /var/www/sspanel/.config.php
# 配置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 check_command "MySQL安全配置"
# 创建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 check_command "数据库创建"