Files
huangjingfen/docs/deploy.md

6.5 KiB
Raw Blame History

CRMEB Pro v3.5 简化发布部署方案

云端 .env、数据库、Nginx、Swoole 等已配置完成。本方案将服务器 API管理后台前端H5 前端拆分为三个子项目,可独立执行对应的发布部署。


一、部署信息

项目
服务器 root@182.92.142.158,密码 A@123456
部署根目录 /www/wwwroot/hjf.suzhouyuqi.com
域名 hjf.suzhouyuqi.com
本地项目路径 /Users/apple/scott2026/huangjingfen/pro_v3.5.1
子项目 本地路径 服务器目标路径
服务器 API pro_v3.5.1/(排除 view、public/admin /www/wwwroot/hjf.suzhouyuqi.com/
管理后台前端 pro_v3.5.1/view/admin/dist/ /www/wwwroot/hjf.suzhouyuqi.com/public/admin/
H5 前端 pro_v3.5.1/view/uniapp/unpackage/dist/build/h5/ /www/wwwroot/hjf.suzhouyuqi.com/public/

二、子项目一:服务器 API

仅部署后端 PHP 代码app、crmeb、config、route、vendor、public 等),不覆盖管理后台和 H5 前端。

方式一:全量同步(先整站备份,再覆盖)

2.1.1 备份(服务器)

ssh root@182.92.142.158

mkdir -p /www/backup
tar -czvf /www/backup/hjf_api_$(date +%Y%m%d_%H%M%S).tar.gz \
  -C /www/wwwroot hjf.suzhouyuqi.com

2.1.2 上传(本地)

cd /Users/apple/scott2026/huangjingfen

rsync -avz --delete \
  --exclude='.env' \
  --exclude='.git' \
  --exclude='node_modules' \
  --exclude='view' \
  --exclude='public/admin' \
  --exclude='public/uploads' \
  --exclude='runtime/cache' \
  --exclude='runtime/log' \
  --exclude='.cursor' \
  --exclude='.cursor-cli' \
  pro_v3.5.1/ \
  root@182.92.142.158:/www/wwwroot/hjf.suzhouyuqi.com/

方式二:按 Git 版本增量部署(仅上传 git 中有变更的文件)

对比 origin/main 与本地工作区,先列出将要上传的文件,再通过 SSH 执行「先备份再上传覆盖」。

2.2.1 步骤一:列出将要上传的文件

cd /Users/apple/scott2026/huangjingfen

git fetch origin
git diff --name-only origin/main -- pro_v3.5.1/ \
  | sed 's|^pro_v3.5.1/||' \
  | grep -v '^view' \
  | grep -v '^public/admin' \
  | grep -v '^public/uploads' \
  | grep -v '^runtime/cache' \
  | grep -v '^runtime/log' \
  | grep -v '\.env$' \
  | grep -v '/\.' \
  | tee /tmp/hjf_api_changed.txt

确认列表无误后,执行步骤二。

2.2.2 步骤二:通过 SSH 发布部署

cd /Users/apple/scott2026/huangjingfen

# 若无变更则退出
if [ ! -s /tmp/hjf_api_changed.txt ]; then
  echo "无 API 相关文件变更,跳过部署"
  exit 0
fi

# 创建备份目录SSH 执行)
BACKUP_SUFFIX=$(date +%Y%m%d_%H%M%S)
ssh root@182.92.142.158 "mkdir -p /www/backup/hjf_api_git_${BACKUP_SUFFIX}"

# 通过 rsync over SSH 上传变更文件(覆盖前自动备份到 backup-dir
rsync -avz --backup --backup-dir=/www/backup/hjf_api_git_${BACKUP_SUFFIX} \
  --files-from=/tmp/hjf_api_changed.txt \
  pro_v3.5.1/ \
  root@182.92.142.158:/www/wwwroot/hjf.suzhouyuqi.com/

说明:

  • 步骤一用 tee 同时输出到屏幕和 /tmp/hjf_api_changed.txt,步骤二复用该文件。
  • origin/main 为基准;可改为 origin/其他分支标签名
  • --backup --backup-dir=...:覆盖前将服务器上的旧文件移动到备份目录。
  • 增量备份目录示例:/www/backup/hjf_api_git_20260117_143022/

2.3 上传后(服务器)

ssh root@182.92.142.158

supervisorctl restart hjfshop-swoole
cd /www/wwwroot/hjf.suzhouyuqi.com && php think clear

三、子项目二:管理后台前端

仅部署管理后台 Vue 构建产物到 public/admin/

3.1 本地构建

cd /Users/apple/scott2026/huangjingfen/pro_v3.5.1/view/admin

npm install   # 依赖有变更时执行
npm run build

构建产物在 view/admin/dist/

3.2 备份(服务器)

ssh root@182.92.142.158

mkdir -p /www/backup
tar -czvf /www/backup/hjf_admin_$(date +%Y%m%d_%H%M%S).tar.gz \
  -C /www/wwwroot/hjf.suzhouyuqi.com/public admin

3.3 上传(本地)

cd /Users/apple/scott2026/huangjingfen

rsync -avz --delete \
  pro_v3.5.1/view/admin/dist/ \
  root@182.92.142.158:/www/wwwroot/hjf.suzhouyuqi.com/public/admin/

3.4 上传后修改权限(服务器)

ssh root@182.92.142.158

chown -R www:www /www/wwwroot/hjf.suzhouyuqi.com/public/admin
chmod -R 775 /www/wwwroot/hjf.suzhouyuqi.com/public/admin

3.5 验证

浏览器访问 http://hjf.suzhouyuqi.com/admin/login,确认页面正常。


四、子项目三H5 前端

仅部署 H5 构建产物到 public/(站点根目录)。

4.1 本地构建

cd /Users/apple/scott2026/huangjingfen/pro_v3.5.1/view/uniapp

npm install   # 依赖有变更时执行
npm run build:h5

构建产物在 view/uniapp/unpackage/dist/build/h5/

4.2 备份(服务器)

ssh root@182.92.142.158

mkdir -p /www/backup
tar -czvf /www/backup/hjf_public_$(date +%Y%m%d_%H%M%S).tar.gz \
  -C /www/wwwroot/hjf.suzhouyuqi.com public

4.3 上传(本地)

cd /Users/apple/scott2026/huangjingfen

rsync -avz \
  pro_v3.5.1/view/uniapp/unpackage/dist/build/h5/ \
  root@182.92.142.158:/www/wwwroot/hjf.suzhouyuqi.com/public/

不使用 --delete,避免覆盖或删除 admin/index.php 等文件。

4.4 验证

浏览器访问 http://hjf.suzhouyuqi.com/,确认 H5 页面正常。


五、发布检查汇总

子项目 检查项
API supervisorctl status hjfshop-swoole 为 RUNNINGcurl http://hjf.suzhouyuqi.com/adminapi/login/info 返回 JSON
管理后台 http://hjf.suzhouyuqi.com/admin/login 可打开;登录后无「暂未授权」提示
H5 http://hjf.suzhouyuqi.com/ 可打开

六、回滚

按备份文件名中的时间戳选择对应子项目备份恢复:

ssh root@182.92.142.158

# 回滚 API整站
cd /www/wwwroot
rm -rf hjf.suzhouyuqi.com
tar -xzvf /www/backup/hjf_api_YYYYMMDD_HHMMSS.tar.gz
supervisorctl restart hjfshop-swoole

# 回滚管理后台(仅 public/admin
rm -rf /www/wwwroot/hjf.suzhouyuqi.com/public/admin
tar -xzvf /www/backup/hjf_admin_YYYYMMDD_HHMMSS.tar.gz -C /www/wwwroot/hjf.suzhouyuqi.com/public

# 回滚 H5恢复 public/ 目录)
rm -rf /www/wwwroot/hjf.suzhouyuqi.com/public
tar -xzvf /www/backup/hjf_public_YYYYMMDD_HHMMSS.tar.gz -C /www/wwwroot/hjf.suzhouyuqi.com