GLM-OCR部署教程:Linux服务器后台常驻服务配置(systemd+日志轮转)
GLM-OCR部署教程:Linux服务器后台常驻服务配置(systemd+日志轮转)
1. 项目概述与环境准备
GLM-OCR是一个基于先进多模态架构的高性能OCR识别模型,专门针对复杂文档理解场景设计。它不仅能识别常规文本,还支持表格识别、公式识别等高级功能,在处理结构化文档方面表现出色。
在Linux服务器上部署GLM-OCR时,我们需要确保服务能够稳定运行、自动重启,并且日志得到妥善管理。本教程将手把手教你配置systemd服务和日志轮转,让你的OCR服务真正实现"部署即用"。
环境要求:
- Linux服务器(Ubuntu/CentOS均可)
- 已安装Miniconda/Anaconda
- 至少4GB GPU显存或8GB系统内存
- Python 3.10环境
2. 基础服务部署
2.1 项目结构与初始配置
首先进入项目目录并了解基本结构:
cd /root/GLM-OCR
ls -la
你应该看到以下文件结构:
GLM-OCR/
├── serve_gradio.py # 主要的Gradio服务脚本
├── start_vllm.sh # 启动脚本
├── USAGE.md # 使用文档
└── logs/ # 日志目录(需要手动创建)
创建日志目录以确保日志有地方存储:
mkdir -p logs
2.2 测试手动启动
在配置后台服务前,我们先手动测试服务是否能正常启动:
# 使用conda环境启动服务
/opt/miniconda3/envs/py310/bin/python serve_gradio.py
如果一切正常,你会看到服务启动日志,显示模型加载进度和服务的访问地址(通常是7860端口)。按Ctrl+C停止服务,我们继续配置后台运行。
3. systemd服务配置
3.1 创建systemd服务文件
使用你喜欢的编辑器创建systemd服务文件:
sudo nano /etc/systemd/system/glm-ocr.service
将以下内容复制到文件中:
[Unit]
Description=GLM-OCR Document Recognition Service
After=network.target
Wants=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root/GLM-OCR
Environment="PATH=/opt/miniconda3/envs/py310/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/opt/miniconda3/envs/py310/bin/python /root/GLM-OCR/serve_gradio.py
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=glm-ocr
[Install]
WantedBy=multi-user.target
关键配置说明:
Restart=always:服务异常退出时自动重启RestartSec=10:重启前等待10秒,避免频繁重启SyslogIdentifier:系统日志中的标识符,方便查找日志
3.2 启用并启动服务
保存文件后,执行以下命令启用服务:
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用开机自启动
sudo systemctl enable glm-ocr.service
# 启动服务
sudo systemctl start glm-ocr.service
# 查看服务状态
sudo systemctl status glm-ocr.service
如果配置正确,你会看到服务状态为"active (running)"。如果遇到问题,可以使用以下命令查看详细日志:
sudo journalctl -u glm-ocr.service -f
4. 日志轮转配置
4.1 配置logrotate
为了避免日志文件无限增长占用磁盘空间,我们需要配置日志轮转:
sudo nano /etc/logrotate.d/glm-ocr
添加以下内容:
/root/GLM-OCR/logs/glm_ocr_*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 root root
postrotate
systemctl kill -s USR1 glm-ocr.service >/dev/null 2>&1 || true
endscript
}
配置参数说明:
daily:每天轮转一次日志rotate 7:保留最近7天的日志compress:压缩旧的日志文件create 644 root root:创建新日志文件时设置权限
4.2 手动测试日志轮转
你可以手动测试日志轮转是否正常工作:
# 强制立即执行日志轮转
sudo logrotate -f /etc/logrotate.d/glm-ocr
# 检查日志文件
ls -la /root/GLM-OCR/logs/
应该能看到类似glm_ocr_20240101.log.gz这样的压缩日志文件。
5. 高级配置与优化
5.1 自定义日志格式
如果你想获得更详细的日志信息,可以修改服务脚本中的日志配置。在serve_gradio.py中添加:
import logging
import datetime
# 配置日志
log_filename = f"logs/glm_ocr_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_filename),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
5.2 资源限制配置
对于生产环境,建议设置资源限制以防止服务占用过多资源。修改systemd服务文件:
[Service]
# 在原有配置基础上添加以下内容
MemoryMax=8G
CPUQuota=200%
5.3 健康检查脚本
创建一个简单的健康检查脚本,确保服务正常运行:
nano /root/GLM-OCR/health_check.sh
添加以下内容:
#!/bin/bash
# 健康检查脚本
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:7860/ || true)
if [ "$response" = "200" ]; then
echo "GLM-OCR服务运行正常"
exit 0
else
echo "GLM-OCR服务异常,HTTP状态码: $response"
exit 1
fi
给脚本添加执行权限:
chmod +x /root/GLM-OCR/health_check.sh
6. 常见问题解决
6.1 服务启动失败
如果服务无法启动,首先检查日志:
# 查看最近的服务日志
sudo journalctl -u glm-ocr.service -n 50 --no-pager
# 或者查看具体的应用日志
tail -f /root/GLM-OCR/logs/glm_ocr_*.log
常见问题包括:
- 端口7860被占用:使用
lsof -i :7860查看并终止占用进程 - 显存不足:检查GPU内存使用情况,
nvidia-smi - 依赖缺失:确保所有Python包已正确安装
6.2 日志轮转不工作
如果日志轮转没有按预期工作,可以手动测试:
# 调试模式运行logrotate
sudo logrotate -d /etc/logrotate.d/glm-ocr
# 强制运行并查看详细输出
sudo logrotate -v -f /etc/logrotate.d/glm-ocr
6.3 服务自动重启过于频繁
如果服务频繁重启,可能需要调整重启策略:
[Service]
# 增加重启间隔
RestartSec=30
# 限制重启频率
StartLimitIntervalSec=300
StartLimitBurst=5
7. 总结
通过本教程,你已经成功将GLM-OCR配置为Linux系统下的后台常驻服务。现在你的OCR服务具备以下特性:
- 系统级管理:通过systemctl命令轻松启动、停止、重启服务
- 自动恢复:服务异常退出时自动重启,确保高可用性
- 日志管理:自动轮转和压缩日志,避免磁盘空间耗尽
- 开机自启:服务器重启后服务自动恢复运行
要验证服务是否正常运行,可以使用以下命令:
# 检查服务状态
sudo systemctl status glm-ocr.service
# 测试服务接口
curl http://localhost:7860/
# 查看最新日志
tail -f /root/GLM-OCR/logs/glm_ocr_*.log
现在你的GLM-OCR服务已经配置完毕,可以稳定地为你的应用程序提供OCR识别能力了。无论是文本提取、表格识别还是公式识别,都能通过简单的API调用实现。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐

所有评论(0)