Files
gongxue-base/deploy.sh
wangziqi a87f26a915 feat: 移除 Docker 部署,添加 Gitea CI/CD workflows
- 删除 docker-compose.yml、Dockerfile、.dockerignore、docker/ 目录
- 更新 deploy.sh:移除 Docker Compose MySQL 启动,改为 systemd 检查
- 新增 .gitea/workflows/deploy.yml:手动触发、rsync + SSH + PM2 部署
- 新增 .gitea/workflows/ci.yml:PR lint + typecheck + test 自动检查
2026-07-20 15:33:46 +08:00

62 lines
1.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# 恭学教育 — PM2 部署脚本
# 用法: ./deploy.sh [ssh_host]
set -euo pipefail
SSH_HOST="${1:-tencent}"
REMOTE_DIR="/opt/gongxue"
echo "=== 1/5 本地构建后端 ==="
npm run build -w @gongxue/server
echo "=== 2/5 本地构建前端 ==="
npm run build -w @gongxue/admin
echo "=== 3/5 同步到 ${SSH_HOST} ==="
rsync -avz --delete \
--exclude='node_modules' \
--exclude='.git' \
--exclude='*.db' \
--exclude='.DS_Store' \
--exclude='logs/' \
--exclude='.turbo/' \
./ "${SSH_HOST}:${REMOTE_DIR}/"
echo "=== 4/5 检查 MySQL + 安装依赖 ==="
ssh "${SSH_HOST}" "
cd ${REMOTE_DIR}
mkdir -p logs
# 确保 MySQL 已启动systemd 或手动启动)
if systemctl is-active --quiet mysqld 2>/dev/null || systemctl is-active --quiet mysql 2>/dev/null; then
echo 'MySQL 已运行'
else
echo '⚠ MySQL 未运行,请确保 MySQL 已启动'
fi
if [ ! -d node_modules ]; then
echo '首次部署,安装依赖...'
npm ci --omit=dev
fi
"
echo "=== 5/5 PM2 重载 ==="
ssh "${SSH_HOST}" "
cd ${REMOTE_DIR}
pm2 startOrReload ecosystem.config.cjs --update-env
pm2 save
pm2 status
"
echo ""
echo "部署完成!"
echo "访问: http://$(ssh "${SSH_HOST}" 'hostname -I 2>/dev/null | awk "{print \$1}" || curl -s ifconfig.me')"
echo ""
echo "══════ 首次部署/数据迁移 ══════"
echo "1) 上传旧数据库:"
echo " scp ~/Downloads/dorm_billing_*.sql.gz ${SSH_HOST}:${REMOTE_DIR}/"
echo "2) 服务器上执行:"
echo " ssh ${SSH_HOST}"
echo " cd ${REMOTE_DIR}"
echo " cp .env.example .env && vim .env # 改密码"
echo " sudo setcap 'cap_net_bind_service=+ep' \$(which node)"
echo " ./migrate.sh dorm_billing_*.sql.gz # 迁移旧数据"