|
|
@@ -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'"
|