要两次都得触发
This commit is contained in:
@@ -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.
Reference in New Issue
Block a user