ops-manual.md 3.9 KB

支付平台运维手册

服务器信息

  • IP: 172.20.205.37
  • 域名: qcsj88888.comapi.qcsj88888.com
  • 系统: Ubuntu (Alibaba Cloud ECS)

容器拓扑

容器 镜像 端口 网络
java-backend xjz/java-backend:1.0.0 8001 app-tier, deploy_app-tier
frontend xjz/frontend:2.5.4 5173→80 app-tier
postgres postgres:18.3 127.0.0.1:5432 宿主机, deploy_app-tier
redis redis:8.6.2-alpine 6379 deploy_app-tier
nginx-proxy-manager jc21/nginx-proxy-manager 80/443/81 deploy_app-tier
gogs gogs/gogs 3000/2222 deploy_app-tier
qcsj88888.com (HTTPS)
    ↓ NPM
    ├── /api/v1/* → java-backend:8001
    └── 其余 → frontend:5173

项目路径

  • 代码: /root/payments/code/payment-platform
  • Compose: /root/payments/code/payment-platform/docker-compose.yml
  • NPM 数据: /root/payments/deploy/nginx-proxy-manager/data

常用操作

查看容器状态

cd /root/payments/code/payment-platform
docker compose ps
docker stats --no-stream

查看日志

docker compose logs java-backend --tail 50       # 最近50行
docker compose logs java-backend -f               # 实时跟踪
docker compose logs java-backend --since 5m       # 最近5分钟

重启后端

docker compose restart java-backend

停止/启动

docker compose stop java-backend
docker compose start java-backend

健康检查

curl http://localhost:8001/api/v1/payment/notify/health
# 预期返回: {"code":0,"data":{"status":"ok"}}

升级部署

# === 本地 ===
cd D:\project2\payment-platform\java
mvn clean package -DskipTests
scp target/payment-platform-1.0.0.jar root@172.20.205.37:/root/payments/code/payment-platform/java/target/

# === 服务器 ===
cd /root/payments/code/payment-platform/java
docker build -t xjz/java-backend:1.0.0 .
cd ..
docker compose up -d java-backend
docker compose logs java-backend --tail 20 -f

数据库迁移

新增 SQL 脚本放在 java/sql/,服务器执行:

docker exec -i postgres psql -U admin -d payment_platform_prod < /root/payments/code/payment-platform/java/sql/xxx.sql

回滚到 Python

docker stop java-backend
docker rm java-backend
cd /root/payments/code/payment-platform
git checkout master
docker compose up -d backend

配置说明

JVM 参数

JAVA_OPTS: "-Xms128m -Xmx256m -XX:+UseSerialGC -XX:MaxRAMPercentage=50 -XX:TieredStopAtLevel=1"
  • -Xms128m: 初始堆 128MB
  • -Xmx256m: 最大堆 256MB
  • -XX:+UseSerialGC: 单线程 GC(2C 服务器避免并发 GC 开销)
  • -XX:MaxRAMPercentage=50: JVM 最多用 50% 物理内存
  • -XX:TieredStopAtLevel=1: 减少 JIT 编译层级,启动更快

环境变量(数据库/Redis)

SPRING_DATASOURCE_DRUID_URL: jdbc:postgresql://postgres:5432/payment_platform_prod?currentSchema=public
SPRING_DATASOURCE_DRUID_USERNAME: admin
SPRING_DATASOURCE_DRUID_PASSWORD: 'xjz#123321'
SPRING_DATA_REDIS_HOST: redis
SPRING_DATA_REDIS_PORT: 6379
SPRING_DATA_REDIS_DATABASE: 0
SPRING_DATA_REDIS_PASSWORD: '123456#xjz'

故障排查

后端起不来

docker compose logs java-backend --tail 100

常见原因:

  • Connection refused: postgres:5432 → postgres 没加入 deploy_app-tier,执行 docker network connect deploy_app-tier postgres
  • OutOfMemoryError → 调大 -Xmx 到 384m
  • 端口占用 → lsof -i:8001,停掉占用进程

页面访问 502

检查后端是否正常:

curl http://localhost:8001/api/v1/payment/notify/health

后端正常则查 NPM 是否在线:docker ps | grep nginx-proxy-manager

磁盘空间

docker system prune -a --filter "until=72h"  # 清理72小时前的旧镜像

备份

# 数据库
docker exec postgres pg_dump -U admin payment_platform_prod > /root/backup/payment_$(date +%Y%m%d).sql