423 lines
6.4 KiB
Markdown
423 lines
6.4 KiB
Markdown
|
|
# 部署指南
|
|||
|
|
|
|||
|
|
本文档提供了ArticleReplaceBatch项目的部署指南。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 目录
|
|||
|
|
|
|||
|
|
- [环境要求](#环境要求)
|
|||
|
|
- [本地部署](#本地部署)
|
|||
|
|
- [服务器部署](#服务器部署)
|
|||
|
|
- [容器化部署](#容器化部署)
|
|||
|
|
- [常见问题](#常见问题)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 环境要求
|
|||
|
|
|
|||
|
|
### 系统要求
|
|||
|
|
|
|||
|
|
- **操作系统**: Windows 10+, Linux (Ubuntu 20.04+), macOS 10.15+
|
|||
|
|
- **Python版本**: 3.10 或更高版本
|
|||
|
|
- **内存**: 最低 2GB,推荐 4GB+
|
|||
|
|
- **磁盘空间**: 最低 1GB
|
|||
|
|
|
|||
|
|
### 依赖要求
|
|||
|
|
|
|||
|
|
见 `requirements.txt` 文件。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 本地部署
|
|||
|
|
|
|||
|
|
### 1. 获取代码
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone <repository-url>
|
|||
|
|
cd ArticleReplaceBatch
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 创建虚拟环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python -m venv venv
|
|||
|
|
|
|||
|
|
# Windows
|
|||
|
|
venv\Scripts\activate
|
|||
|
|
|
|||
|
|
# Linux/Mac
|
|||
|
|
source venv/bin/activate
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 安装依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 配置环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
# 编辑 .env 文件,填写必要的配置
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 初始化配置
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python -c "from config import CONFIG; print('配置初始化完成')"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 运行应用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# GUI模式
|
|||
|
|
python ArticleReplace.py
|
|||
|
|
|
|||
|
|
# 命令行模式
|
|||
|
|
python cli.py --help
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 服务器部署
|
|||
|
|
|
|||
|
|
### 1. 安装系统依赖
|
|||
|
|
|
|||
|
|
**Ubuntu/Debian:**
|
|||
|
|
```bash
|
|||
|
|
sudo apt update
|
|||
|
|
sudo apt install -y python3 python3-venv python3-pip
|
|||
|
|
sudo apt install -y xvfb # 无GUI运行需要
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**CentOS/RHEL:**
|
|||
|
|
```bash
|
|||
|
|
sudo yum install -y python3 python3-venv python3-pip
|
|||
|
|
sudo yum install -y xorg-x11-server-Xvfb
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 创建部署目录
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo mkdir -p /opt/article-replace
|
|||
|
|
sudo chown $USER:$USER /opt/article-replace
|
|||
|
|
cd /opt/article-replace
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 部署应用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制代码到部署目录
|
|||
|
|
git clone <repository-url> .
|
|||
|
|
git checkout main
|
|||
|
|
|
|||
|
|
# 创建虚拟环境
|
|||
|
|
python3 -m venv venv
|
|||
|
|
source venv/bin/activate
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 配置环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cp .env.example .env
|
|||
|
|
# 编辑 .env 文件
|
|||
|
|
nano .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 创建服务文件
|
|||
|
|
|
|||
|
|
**创建 systemd 服务文件:**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo nano /etc/systemd/system/article-replace.service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**服务文件内容:**
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
[Unit]
|
|||
|
|
Description=Article Replace Batch Service
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
User=www-data
|
|||
|
|
WorkingDirectory=/opt/article-replace
|
|||
|
|
Environment="PATH=/opt/article-replace/venv/bin"
|
|||
|
|
ExecStart=/opt/article-replace/venv/bin/python cli.py --excel /path/to/articles.xlsx --threads 3
|
|||
|
|
Restart=always
|
|||
|
|
RestartSec=10
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 启动服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 重新加载systemd
|
|||
|
|
sudo systemctl daemon-reload
|
|||
|
|
|
|||
|
|
# 启动服务
|
|||
|
|
sudo systemctl start article-replace
|
|||
|
|
|
|||
|
|
# 设置开机自启
|
|||
|
|
sudo systemctl enable article-replace
|
|||
|
|
|
|||
|
|
# 查看状态
|
|||
|
|
sudo systemctl status article-replace
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
sudo journalctl -u article-replace -f
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 容器化部署
|
|||
|
|
|
|||
|
|
### 1. 创建 Dockerfile
|
|||
|
|
|
|||
|
|
```dockerfile
|
|||
|
|
FROM python:3.11-slim
|
|||
|
|
|
|||
|
|
# 设置工作目录
|
|||
|
|
WORKDIR /app
|
|||
|
|
|
|||
|
|
# 安装系统依赖
|
|||
|
|
RUN apt-get update && apt-get install -y \
|
|||
|
|
xvfb \
|
|||
|
|
&& rm -rf /var/lib/apt/lists/*
|
|||
|
|
|
|||
|
|
# 复制依赖文件
|
|||
|
|
COPY requirements.txt .
|
|||
|
|
|
|||
|
|
# 安装Python依赖
|
|||
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|||
|
|
|
|||
|
|
# 复制应用代码
|
|||
|
|
COPY . .
|
|||
|
|
|
|||
|
|
# 创建必要目录
|
|||
|
|
RUN mkdir -p logs backups articles picture
|
|||
|
|
|
|||
|
|
# 暴露端口(如果需要)
|
|||
|
|
# EXPOSE 8000
|
|||
|
|
|
|||
|
|
# 设置环境变量
|
|||
|
|
ENV PYTHONUNBUFFERED=1
|
|||
|
|
|
|||
|
|
# 默认命令
|
|||
|
|
CMD ["python", "cli.py", "--help"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 创建 .dockerignore
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
.git
|
|||
|
|
.gitignore
|
|||
|
|
__pycache__
|
|||
|
|
*.pyc
|
|||
|
|
*.pyo
|
|||
|
|
*.pyd
|
|||
|
|
venv
|
|||
|
|
.env
|
|||
|
|
logs/
|
|||
|
|
backups/
|
|||
|
|
archive/
|
|||
|
|
build/
|
|||
|
|
dist/
|
|||
|
|
*.spec
|
|||
|
|
.DS_Store
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 构建镜像
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker build -t article-replace:latest .
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 运行容器
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 交互式运行
|
|||
|
|
docker run -it --rm \
|
|||
|
|
-v $(pwd)/data:/app/data \
|
|||
|
|
-v $(pwd)/logs:/app/logs \
|
|||
|
|
article-replace:latest \
|
|||
|
|
python cli.py --excel /app/data/articles.xlsx --threads 3
|
|||
|
|
|
|||
|
|
# 后台运行
|
|||
|
|
docker run -d \
|
|||
|
|
--name article-replace \
|
|||
|
|
-v $(pwd)/data:/app/data \
|
|||
|
|
-v $(pwd)/logs:/app/logs \
|
|||
|
|
article-replace:latest \
|
|||
|
|
python cli.py --excel /app/data/articles.xlsx --threads 3
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker logs -f article-replace
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 使用 Docker Compose
|
|||
|
|
|
|||
|
|
**创建 docker-compose.yml:**
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
version: '3.8'
|
|||
|
|
|
|||
|
|
services:
|
|||
|
|
article-replace:
|
|||
|
|
build: .
|
|||
|
|
container_name: article-replace
|
|||
|
|
volumes:
|
|||
|
|
- ./data:/app/data
|
|||
|
|
- ./logs:/app/logs
|
|||
|
|
- ./config:/app/config
|
|||
|
|
environment:
|
|||
|
|
- PYTHONUNBUFFERED=1
|
|||
|
|
command: python cli.py --excel /app/data/articles.xlsx --threads 3
|
|||
|
|
restart: unless-stopped
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**启动服务:**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker-compose logs -f
|
|||
|
|
|
|||
|
|
# 停止服务
|
|||
|
|
docker-compose down
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 监控和维护
|
|||
|
|
|
|||
|
|
### 日志管理
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看应用日志
|
|||
|
|
tail -f logs/article_replace.log
|
|||
|
|
|
|||
|
|
# 清理旧日志
|
|||
|
|
find logs/ -name "*.log" -mtime +7 -delete
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 备份管理
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 备份配置
|
|||
|
|
cp config.ini backups/config_$(date +%Y%m%d).ini
|
|||
|
|
|
|||
|
|
# 备份数据
|
|||
|
|
tar -czf backups/data_$(date +%Y%m%d).tar.gz articles/ picture/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 性能监控
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看进程状态
|
|||
|
|
ps aux | grep ArticleReplace
|
|||
|
|
|
|||
|
|
# 查看内存使用
|
|||
|
|
top -p $(pgrep -f ArticleReplace)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 安全建议
|
|||
|
|
|
|||
|
|
1. **环境变量**: 不要将敏感信息提交到版本控制系统
|
|||
|
|
2. **文件权限**: 确保 `.env` 文件权限设置为 600
|
|||
|
|
3. **防火墙**: 如果暴露端口,配置防火墙规则
|
|||
|
|
4. **更新**: 定期更新依赖包以修复安全漏洞
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q: 无GUI环境下如何运行?
|
|||
|
|
|
|||
|
|
A: 使用命令行模式或 xvfb。
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用命令行模式
|
|||
|
|
python cli.py --excel articles.xlsx --threads 3
|
|||
|
|
|
|||
|
|
# 或使用 xvfb (Linux)
|
|||
|
|
xvfb-run -a python ArticleReplace.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q: 如何处理依赖冲突?
|
|||
|
|
|
|||
|
|
A: 使用虚拟环境隔离依赖。
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python -m venv venv
|
|||
|
|
source venv/bin/activate
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q: 如何设置开机自启?
|
|||
|
|
|
|||
|
|
A: 使用 systemd 服务(Linux)或任务计划程序(Windows)。
|
|||
|
|
|
|||
|
|
### Q: 内存不足怎么办?
|
|||
|
|
|
|||
|
|
A: 增加系统内存或减少并发线程数。
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 减少线程数
|
|||
|
|
python cli.py --excel articles.xlsx --threads 1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 升级指南
|
|||
|
|
|
|||
|
|
### 1. 备份数据
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 备份配置和数据
|
|||
|
|
cp config.ini backups/
|
|||
|
|
tar -czf backups/data_backup_$(date +%Y%m%d).tar.gz articles/ picture/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 获取新版本
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git pull origin main
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 更新依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt --upgrade
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 验证升级
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python dev.py test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 重启服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo systemctl restart article-replace
|
|||
|
|
# 或
|
|||
|
|
docker-compose restart
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**文档版本**: v1.0
|
|||
|
|
**最后更新**: 2026-03-07
|
|||
|
|
**维护者**: opencode
|