Przeglądaj źródła

docs: 添加生产环境部署文档并修复调试参数

添加服务端生产环境部署文档,包含单机部署和Docker部署两种方案,详细说明环境配置、启动步骤和运维建议。同时修复Python服务的debug参数,使其能够通过命令行参数控制调试模式。
Ethanfly 23 godzin temu
rodzic
commit
438060a5e3
3 zmienionych plików z 113 dodań i 2 usunięć
  1. 112 0
      README.md
  2. BIN
      server/python/__pycache__/app.cpython-313.pyc
  3. 1 2
      server/python/app.py

+ 112 - 0
README.md

@@ -365,6 +365,118 @@ cd server/python
 python app.py
 ```
 
+---
+
+## 🧰 服务端部署(生产环境)
+
+服务端由两部分组成:
+- **Node.js 服务**(`server/`,端口默认 3000):提供 REST/WebSocket、任务调度、Playwright 自动化入口、数据库与队列。
+- **Python 发布服务**(`server/python/`,端口默认 5005):负责各平台发布/作品/评论等自动化能力,Node 会通过 `PYTHON_PUBLISH_SERVICE_URL` 调用它。
+
+生产环境推荐把 **Python 服务仅监听本机**(`127.0.0.1:5005`),对外只暴露 Node 的 3000 或经 Nginx 反代的 HTTPS 端口。
+
+### 方案一:单机部署(推荐)
+
+#### 1) 准备基础依赖
+- Node.js 20+、pnpm 8+
+- Python 3.8+
+- MySQL 8.0+(或使用 Docker)
+- Redis 7+(可选,启用任务队列/缓存时需要)
+- Playwright 依赖与浏览器(Node 与 Python 都需要安装 Chromium)
+
+#### 2) 初始化数据库
+```bash
+mysql -u root -p media_manager < database/schema.sql
+```
+
+#### 3) 配置服务端环境变量(Node)
+```bash
+cd server
+cp env.example .env   # Linux/macOS
+copy env.example .env # Windows
+```
+
+生产环境建议至少配置:
+```env
+NODE_ENV=production
+HOST=0.0.0.0
+PORT=3000
+
+DB_HOST=127.0.0.1
+DB_PORT=3306
+DB_USERNAME=media_manager
+DB_PASSWORD=********
+DB_DATABASE=media_manager
+
+REDIS_HOST=127.0.0.1
+REDIS_PORT=6379
+USE_REDIS_QUEUE=true
+
+JWT_SECRET=********
+ENCRYPTION_KEY=********************************
+
+INTERNAL_API_KEY=********
+PYTHON_PUBLISH_SERVICE_URL=http://127.0.0.1:5005
+NODEJS_API_URL=http://127.0.0.1:3000
+```
+
+#### 4) 部署并启动 Node 服务
+在项目根目录执行:
+```bash
+pnpm install
+pnpm --filter @media-manager/shared build
+pnpm --filter @media-manager/server build
+pnpm --filter @media-manager/server start
+```
+
+Linux 服务器若首次运行 Playwright,建议在 `server/` 目录执行一次:
+```bash
+cd server
+npx playwright install chromium
+npx playwright install-deps chromium
+```
+
+#### 5) 部署并启动 Python 发布服务
+```bash
+cd server/python
+python -m venv venv
+source venv/bin/activate      # Linux/macOS
+.\venv\Scripts\Activate.ps1   # Windows PowerShell
+
+pip install -r requirements.txt
+playwright install chromium
+```
+
+启动(生产建议监听本机):
+```bash
+python app.py --host 127.0.0.1 --port 5005 --headless true
+```
+
+验证:
+```bash
+curl http://127.0.0.1:5005/health
+curl http://127.0.0.1:3000/api/health
+```
+
+### 方案二:Docker 部署(Node + MySQL + Redis)
+
+仓库已提供 [docker-compose.yml](file:///e:/Workspace/multi-platform-media-manage/server/docker-compose.yml) 用于启动 Node/MySQL/Redis,但 **Python 服务仍需单独部署**(按上面的 Python 部署步骤运行在宿主机或另一个容器里)。
+
+在 `server/` 目录执行:
+```bash
+cd server
+docker compose up -d --build
+```
+
+若 Python 跑在宿主机,Node 容器需要能访问到宿主机的 5005:
+- Linux:可将 `PYTHON_PUBLISH_SERVICE_URL` 配置为 `http://host.docker.internal:5005`(Docker 版本需支持)或使用宿主机网络/网关地址
+- 或将 Python 也容器化并与 Node 同网络(自行扩展 compose)
+
+### 运维建议
+- 生产环境务必更换 `JWT_SECRET`、`ENCRYPTION_KEY`、`INTERNAL_API_KEY` 为强随机值
+- 建议使用 Nginx/Caddy 做 HTTPS 终止与反向代理,仅对外暴露 443
+- Python 服务尽量不要暴露到公网(包含浏览器自动化能力)
+
 ## ❓ 常见问题
 
 ### Q: 启动时报错 "Cannot find module '@media-manager/shared'"

BIN
server/python/__pycache__/app.cpython-313.pyc


+ 1 - 2
server/python/app.py

@@ -1545,8 +1545,7 @@ def main():
     print(f"启动服务: http://{args.host}:{args.port}")
     print("=" * 60)
     
-    # 启用 debug 模式以获取详细日志,使用 use_reloader=False 避免重复启动
-    app.run(host=args.host, port=args.port, debug=True, threaded=True, use_reloader=False)
+    app.run(host=args.host, port=args.port, debug=bool(args.debug), threaded=True, use_reloader=False)
 
 
 @app.route('/auto-reply', methods=['POST'])