本次更新包含以下主要改进: ## 新功能 - 添加quickstart.sh脚本帮助用户快速使用模板项目 - 添加simple_deploy.sh便于部署 - 新增院系管理功能(DeptAdmin),支持增删改查院系管理员信息 - 用户可以在header中切换管理的院系 - 添加zustand全局状态管理 - 添加DEFAULT_USER_PASSWORD环境变量,作为创建用户时的默认密码 - 添加p-limit库和DB_PARALLEL_LIMIT环境变量控制数据库批次操作并发数 ## 安全修复 - 修复Next.js CVE-2025-66478漏洞 - 限制只有超级管理员才能创建超级管理员用户 ## 开发环境优化 - 开发终端兼容云端环境 - MinIO客户端直传兼容云端环境 - 开发容器增加vim和Claude Code插件 - 编程代理改用Claude - docker-compose.yml添加全局name属性 ## Bug修复与代码优化 - 删除用户时级联删除SelectionLog - 手机端关闭侧边栏后刷新页面延迟调整(300ms=>350ms) - instrumentation.ts移至src内部以适配生产环境 - 删除部分引发类型错误的无用代码 - 优化quickstart.sh远程仓库推送相关配置 ## 文件变更 - 新增49个文件,修改多个配置和源代码文件 - 重构用户管理模块目录结构 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
69 lines
2.1 KiB
Bash
69 lines
2.1 KiB
Bash
#!/bin/bash
|
||
# 此脚本用来一键部署到生产服务器
|
||
# 需事先配置好ssh免密登录,目标服务器需要安装好node、pnpm、tsx、pm2来运行容器
|
||
set -e
|
||
|
||
# 配置
|
||
REMOTE_USER=""
|
||
REMOTE_HOST=""
|
||
REMOTE_PORT=""
|
||
PROJECT_NAME=""
|
||
REMOTE_DIR="~/$PROJECT_NAME"
|
||
|
||
pnpm run lint
|
||
echo "🔨 开始构建项目..."
|
||
pnpm run build
|
||
|
||
echo "📦 准备部署文件..."
|
||
# 创建临时目录
|
||
TEMP_DIR=$(mktemp -d)
|
||
trap "rm -rf $TEMP_DIR" EXIT
|
||
|
||
# 复制必要文件
|
||
cp -r .next $TEMP_DIR/
|
||
cp -r public $TEMP_DIR/
|
||
cp -r prisma $TEMP_DIR/
|
||
cp package.json $TEMP_DIR/
|
||
cp pnpm-lock.yaml $TEMP_DIR/
|
||
cp next.config.ts $TEMP_DIR/
|
||
|
||
echo "🚀 上传文件到服务器..."
|
||
ssh ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_DIR}"
|
||
rsync -avz --delete \
|
||
--exclude=node_modules \
|
||
--exclude=.git \
|
||
$TEMP_DIR/ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/
|
||
|
||
# 上传环境变量文件
|
||
echo "📝 上传环境变量文件..."
|
||
[ -f .env ] && scp .env ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/.env
|
||
[ -f .env.production ] && scp .env.production ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/.env.production
|
||
|
||
echo "⚙️ 在服务器上配置和启动服务..."
|
||
ssh ${REMOTE_USER}@${REMOTE_HOST} << ENDSSH
|
||
cd ${REMOTE_DIR}
|
||
|
||
# 安装生产依赖(包括prisma用于数据库迁移和pm2用于进程管理)
|
||
echo "📥 安装依赖..."
|
||
pnpm install --prod
|
||
|
||
# 运行数据库迁移
|
||
echo "🗄️ 运行数据库迁移..."
|
||
npx prisma migrate deploy
|
||
npx prisma generate
|
||
|
||
# 使用PM2管理Next.js服务
|
||
echo "🔄 使用PM2重启服务..."
|
||
/home/user/.local/share/pnpm/pm2 delete $PROJECT_NAME || true
|
||
/home/user/.local/share/pnpm/pm2 start pnpm --name $PROJECT_NAME -- start -p ${REMOTE_PORT}
|
||
# 保存当前 PM2 进程列表的快照,使其在系统重启后能自动恢复
|
||
/home/user/.local/share/pnpm/pm2 save
|
||
|
||
echo "✅ 部署完成!服务运行在端口 ${REMOTE_PORT}"
|
||
echo "📊 查看服务状态: pm2 status"
|
||
echo "📝 查看日志: pm2 logs $PROJECT_NAME"
|
||
echo "❌ 关闭服务: pm2 delete $PROJECT_NAME"
|
||
ENDSSH
|
||
|
||
echo "🎉 部署成功!"
|
||
echo "访问地址: http://${REMOTE_HOST}:${REMOTE_PORT}" |