版本: v1.0 最后更新: 2026-04-03 受众: DevOps 工程师、系统管理员 阅读时间: 15 分钟
本文档详细说明了如何在生产服务器上部署 PostWaver。
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 18+
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# 安装 pnpm
npm install -g pnpm
# 安装 PM2
npm install -g pm2
# 安装 Nginx
sudo apt install -y nginx
# 安装 Git
sudo apt install -y git
# 创建应用目录
sudo mkdir -p /var/www/postwaver
sudo chown $USER:$USER /var/www/postwaver
# Clone 仓库
cd /var/www/postwaver
git clone https://github.com/YOUR_USERNAME/post_waver.git .
# 安装依赖
pnpm install
# 初始化数据库
pnpm prisma generate
pnpm db:migrate:prisma
# 创建生产环境配置
cp .env.example .env
# 编辑配置
nano .env
生产环境配置示例:
# 数据库(使用 PostgreSQL)
DATABASE_URL="postgresql://postwaver:password@localhost:5432/postwaver"
# API 配置
API_PORT=3001
API_HOST=0.0.0.0
NODE_ENV=production
# Hexo 配置
HEXO_BLOG_PATH=/var/www/hexo-blog
# 构建所有包
pnpm build
创建 ecosystem.config.js:
module.exports = {
apps: [{
name: 'postwaver',
script: './packages/engine/dist/index.js',
instances: 2,
exec_mode: 'cluster',
env: {
NODE_ENV: 'production',
PORT: 3001
},
error_file: './logs/error.log',
out_file: './logs/out.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss',
merge_logs: true,
max_memory_restart: '1G'
}]
}
启动应用:
# 启动应用
pm2 start ecosystem.config.js
# 保存 PM2 配置
pm2 save
# 设置开机自启
pm2 startup
创建配置文件 /etc/nginx/sites-available/postwaver:
server {
listen 80;
server_name postwaver.yourdomain.com;
# API 服务器
location /api/ {
proxy_pass http://localhost:3001/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
# Web UI(静态文件)
location / {
root /var/www/postwaver/packages/web-ui/dist;
try_files $uri $uri/ /index.html;
}
}
启用配置:
# 创建软链接
sudo ln -s /etc/nginx/sites-available/postwaver /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx
# 安装 Certbot
sudo apt install -y certbot python3-certbot-nginx
# 获取 SSL 证书
sudo certbot --nginx -d postwaver.yourdomain.com
# 自动续期
sudo certbot renew --dry-run
创建 scripts/deploy.sh:
#!/bin/bash
# 备份数据库
pnpm db:backup
# 拉取最新代码
git pull origin main
# 安装依赖
pnpm install
# 运行迁移
pnpm prisma migrate deploy
# 构建项目
pnpm build
# 重启服务
pm2 restart postwaver
# 清理缓存
pm2 flush
使用:
chmod +x scripts/deploy.sh
./scripts/deploy.sh
# 查看状态
pm2 status
# 查看日志
pm2 logs postwaver
# 查看监控
pm2 monit
# CPU 使用率
top
# 内存使用
free -h
# 磁盘使用
df -h
# 网络连接
netstat -tulpn
# 查看 PM2 日志
pm2 logs postwaver --lines 100
# 检查端口占用
lsof -i :3001
# 检查数据库连接
pnpm db:test
# 检查 API 服务器是否运行
pm2 status
# 检查 Nginx 配置
sudo nginx -t
# 查看 Nginx 日志
sudo tail -f /var/log/nginx/error.log
# 检查数据库服务
sudo systemctl status postgresql
# 检查连接字符串
echo $DATABASE_URL
# 测试连接
psql $DATABASE_URL
最后更新: 2026-04-03 维护者: PostWaver Team 反馈: GitHub Issues