要两次都得触发

This commit is contained in:
2026-08-08 21:06:29 +08:00
parent 4d36a284ff
commit ef02d3e9e4
2 changed files with 70 additions and 48 deletions
+70 -48
View File
@@ -1,54 +1,76 @@
#!/usr/bin/env bash #!/bin/bash
# ============================================================ # 部署脚本
# 酷冰甲官网 - 一键部署脚本(上传文件后运行一次) # 路径: /www/wwwroot/coolcoth.com/deploy.sh
# 用法:
# bash deploy.sh # 文件模式(默认,无需数据库)
# DB=1 bash deploy.sh # 先改好 config/config.php 的 mysql 段再跑
# ============================================================
set -e
echo "==> 检测 PHP 环境 ..." # 配置项
# 优先用 PATH 里的 php;找不到时自动探测宝塔等常见安装路径 SOURCE_DIR="/www/wwwroot/coolcoth.com"
PHP_BIN="$(command -v php || true)" PUBLIC_DIR="/www/wwwroot/coolcoth.com/public"
if [ -z "$PHP_BIN" ]; then LOG_FILE="/www/wwwroot/coolcoth.com/deploy.log"
for p in /www/server/php/74/bin/php /www/server/php/80/bin/php \
/www/server/php/81/bin/php /www/server/php/82/bin/php \ # 记录日志函数
/www/server/php/83/bin/php /usr/local/php/bin/php \ log_message() {
/usr/bin/php7.4 /usr/bin/php; do local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
if [ -x "$p" ]; then PHP_BIN="$p"; break; fi echo "[$timestamp] $1" >> "$LOG_FILE"
done }
fi
if [ -z "$PHP_BIN" ]; then # 主逻辑
echo "✗ 未找到 php 命令,请先安装 PHP 7.4+ 并将其加入 PATH" log_message("开始部署...")
# 进入源码目录
cd "$SOURCE_DIR" || {
log_message("错误: 无法进入源码目录 $SOURCE_DIR")
exit 1
}
# 拉取最新代码
log_message("拉取最新代码...")
git pull origin main
if [ $? -eq 0 ]; then
log_message("代码拉取成功")
else
log_message("错误: 代码拉取失败")
exit 1 exit 1
fi fi
"$PHP_BIN" -v | head -1
echo "==> 设置目录写权限 ..." # 安装依赖(如果需要)
# 关键点:宝塔/虚拟主机上 PHP 进程通常以 www 用户运行, # log_message("安装依赖...")
# 上传后的文件若归 root,则 www 无写权限,后台保存会被静默丢弃。 # npm install
# 这里把数据目录与生成 CSS 的目录一并 chown 给 www(仅 root 可执行 chown)。 # if [ $? -eq 0 ]; then
if [ "$(id -u)" -eq 0 ]; then # log_message("依赖安装成功")
chown -R www:www storage 2>/dev/null || true # else
chown -R www:www public/assets/css 2>/dev/null || true # log_message("错误: 依赖安装失败")
echo " 已将 storage / public/assets/css 属主改为 www" # exit 1
else # fi
echo " 当前非 root,跳过 chown(如保存失败请手动: chown -R www:www storage public/assets/css"
fi
chmod -R 755 storage 2>/dev/null || true
chmod -R 755 storage/data 2>/dev/null || true
chmod -R 755 public/assets 2>/dev/null || true
chmod -R 755 public/assets/css 2>/dev/null || true
echo "==> 初始化数据 (install/install.php) ..." # 构建项目(如果需要)
"$PHP_BIN" install/install.php # log_message("构建项目...")
# npm run build
# if [ $? -eq 0 ]; then
# log_message("项目构建成功")
# else
# log_message("错误: 项目构建失败")
# exit 1
# fi
echo "" # 复制到运行目录(如果需要)
echo "✓ 部署完成!" # log_message("复制到运行目录...")
echo " 前台: http://你的域名/" # cp -r dist/* "$PUBLIC_DIR"/
echo " 后台: http://你的域名/admin (默认账号 admin / admin888)" # if [ $? -eq 0 ]; then
echo "" # log_message("文件复制成功")
echo "安全建议(生产环境务必执行):" # else
echo " 1) 部署成功后删除安装目录: rm -rf install" # log_message("错误: 文件复制失败")
echo " 2) 修改后台密码: 后台 -> 设置 -> 管理员" # exit 1
echo " 3) 若用 MySQL: 确认 config/config.php 的 driver=mysql 且账号安全" # fi
# 重启服务(如果需要)
# log_message("重启服务...")
# systemctl restart nginx
# if [ $? -eq 0 ]; then
# log_message("服务重启成功")
# else
# log_message("错误: 服务重启失败")
# exit 1
# fi
log_message("部署完成!")
exit 0
Binary file not shown.