You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.2 KiB
93 lines
3.2 KiB
# 一键部署脚本 - Windows PowerShell
|
|
# 使用方法: .\deploy.ps1
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
Write-Host "🚀 开始部署 Just-Demo 项目..." -ForegroundColor Cyan
|
|
|
|
# 1. 检查 Node.js
|
|
Write-Host "`n📦 检查 Node.js..." -ForegroundColor Blue
|
|
if (-not (Get-Command node -ErrorAction SilentlyContinue)) {
|
|
Write-Host "❌ Node.js 未安装,请先安装 Node.js (v16+)" -ForegroundColor Red
|
|
Write-Host "下载地址: https://nodejs.org/" -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
Write-Host "✅ Node.js 版本: $(node -v)" -ForegroundColor Green
|
|
|
|
# 2. 检查 pnpm,如果没有则安装
|
|
Write-Host "`n📦 检查 pnpm..." -ForegroundColor Blue
|
|
if (-not (Get-Command pnpm -ErrorAction SilentlyContinue)) {
|
|
Write-Host "pnpm 未安装,正在安装..." -ForegroundColor Yellow
|
|
npm install -g pnpm
|
|
}
|
|
Write-Host "✅ pnpm 版本: $(pnpm -v)" -ForegroundColor Green
|
|
|
|
# 3. 检查 PM2,如果没有则安装
|
|
Write-Host "`n📦 检查 PM2..." -ForegroundColor Blue
|
|
if (-not (Get-Command pm2 -ErrorAction SilentlyContinue)) {
|
|
Write-Host "PM2 未安装,正在安装..." -ForegroundColor Yellow
|
|
npm install -g pm2
|
|
npm install -g pm2-windows-startup
|
|
pm2-startup install
|
|
}
|
|
Write-Host "✅ PM2 已安装" -ForegroundColor Green
|
|
|
|
# 4. 安装依赖
|
|
Write-Host "`n📦 安装项目依赖..." -ForegroundColor Blue
|
|
pnpm install:all
|
|
|
|
# 5. 构建项目
|
|
Write-Host "`n🔨 构建项目..." -ForegroundColor Blue
|
|
pnpm build
|
|
|
|
# 6. 创建生产环境配置
|
|
Write-Host "`n⚙️ 创建生产环境配置..." -ForegroundColor Blue
|
|
if (-not (Test-Path "backend\.env")) {
|
|
# 生成随机密钥
|
|
$bytes = New-Object byte[] 32
|
|
$rng = [System.Security.Cryptography.RandomNumberGenerator]::Create()
|
|
$rng.GetBytes($bytes)
|
|
$jwtSecret = [Convert]::ToBase64String($bytes)
|
|
|
|
@"
|
|
NODE_ENV=production
|
|
PORT=3000
|
|
JWT_SECRET=$jwtSecret
|
|
FRONTEND_URL=http://localhost:5500
|
|
UPLOAD_DIR=uploads
|
|
"@ | Out-File -FilePath "backend\.env" -Encoding UTF8
|
|
Write-Host "✅ 已创建 backend\.env" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "✅ backend\.env 已存在" -ForegroundColor Green
|
|
}
|
|
|
|
# 7. 运行数据库迁移
|
|
Write-Host "`n🗄️ 运行数据库迁移..." -ForegroundColor Blue
|
|
Set-Location backend
|
|
pnpm migrate:prod
|
|
Set-Location ..
|
|
|
|
# 8. 使用 PM2 启动服务
|
|
Write-Host "`n🚀 使用 PM2 启动服务..." -ForegroundColor Blue
|
|
pm2 delete just-demo-backend 2>$null
|
|
pm2 start ecosystem.config.js
|
|
|
|
# 9. 保存 PM2 配置
|
|
Write-Host "`n💾 保存 PM2 配置..." -ForegroundColor Blue
|
|
pm2 save
|
|
|
|
# 10. 显示服务状态
|
|
Write-Host "`n📊 服务状态:" -ForegroundColor Cyan
|
|
pm2 status
|
|
|
|
Write-Host "`n🎉 部署成功!" -ForegroundColor Green
|
|
Write-Host "`n访问地址:" -ForegroundColor Cyan
|
|
Write-Host " - 前端: http://localhost:5500" -ForegroundColor White
|
|
Write-Host " - 后端: http://localhost:3000" -ForegroundColor White
|
|
Write-Host "`n常用命令:" -ForegroundColor Cyan
|
|
Write-Host " pm2 status # 查看服务状态" -ForegroundColor White
|
|
Write-Host " pm2 logs # 查看日志" -ForegroundColor White
|
|
Write-Host " pm2 restart all # 重启所有服务" -ForegroundColor White
|
|
Write-Host " pm2 stop all # 停止所有服务" -ForegroundColor White
|
|
Write-Host ""
|
|
|
|
|