保姆级教程:用CentOS 7和特定RPM包离线搭建OnlyOffice文档服务器(v7.5.1)
在企业级文档协作场景中,OnlyOffice凭借其高度兼容Office格式和实时协作能力,已成为许多组织的首选方案。但对于需要在内网环境部署的用户来说,离线安装往往成为技术实施的最大障碍。本文将基于CentOS 7.x系统,通过经过验证的特定版本RPM包组合,带您完成一次可复现的离线部署全流程。
1. 环境准备与版本锁定策略
1.1 系统基础环境校验
部署前请确认您的CentOS 7系统满足以下条件:
- 最小化安装的纯净环境(建议选择
Minimal Install) - 磁盘空间≥20GB(实际占用约15GB)
- 内存≥4GB(8GB以上可获得更好性能)
# 验证系统版本 cat /etc/redhat-release # 输出应类似:CentOS Linux release 7.9.2009 (Core)1.2 关键组件版本清单
以下版本组合经过严格测试,任何替换都可能导致不可预知的问题:
| 组件 | 指定版本 | 兼容性说明 |
|---|---|---|
| Node.js | 9.11.2-1nodesource | 仅此版本支持文档转换服务 |
| Nginx | 1.24.0-1.el7.ngx | 必需支持HTTP/2协议 |
| PostgreSQL | 9.2.24-8.el7_9 | 官方认证的稳定版本组合 |
| RabbitMQ | 3.3.5-34.el7 | 消息队列核心依赖 |
注意:高版本组件看似功能更强,但会导致OnlyOffice服务异常。例如Node.js 10+会引发文档渲染崩溃。
2. 离线仓库构建与依赖安装
2.1 RPM包获取方案
对于无法联网的机器,推荐以下两种方式获取安装包:
- 同版本在线机器缓存:
yum install --downloadonly --downloaddir=./onlyoffice_rpms \ nodejs-9.11.2 nginx-1.24.0 postgresql-9.2.24 - 手动下载校验:
- 访问 PKGS.org 搜索对应版本
- 通过SHA256校验文件完整性
2.2 本地YUM源配置
将所有RPM包放入/opt/onlyoffice_rpms后:
# 创建本地仓库 createrepo /opt/onlyoffice_rpms # 添加仓库配置 cat > /etc/yum.repos.d/onlyoffice.repo <<EOF [onlyoffice] name=OnlyOffice Local Repo baseurl=file:///opt/onlyoffice_rpms enabled=1 gpgcheck=0 EOF3. 核心服务部署详解
3.1 数据库层配置优化
PostgreSQL需要特殊配置以保证文档服务稳定性:
# 初始化数据库后修改配置 vim /var/lib/pgsql/data/postgresql.conf # 关键参数调整 max_connections = 200 shared_buffers = 256MB work_mem = 4MB提示:生产环境建议将
shared_buffers设置为物理内存的25%
3.2 消息队列调优
RabbitMQ需要开启持久化以防止文档协作数据丢失:
# 启用持久化插件 rabbitmq-plugins enable rabbitmq_persistence # 创建专用虚拟主机 rabbitmqctl add_vhost onlyoffice rabbitmqctl set_permissions -p onlyoffice guest ".*" ".*" ".*"4. 文档服务安装与安全加固
4.1 字体兼容性处理
Office文档渲染依赖Windows字体,需特殊处理:
# 安装核心字体包 rpm -ivh msttcore-fonts-installer-2.6-1.noarch.rpm # 刷新字体缓存 fc-cache -f -v4.2 安全防护配置
在离线环境中仍需注意基础安全:
# SELinux策略调整(临时生效) setsebool -P httpd_can_network_connect 1 # 防火墙规则(如果启用) firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload5. 服务集成与验证
5.1 启动顺序与依赖检查
正确的服务启动顺序至关重要:
- PostgreSQL → 2. RabbitMQ → 3. Redis → 4. Nginx → 5. DocumentServer
# 批量检查服务状态 for service in postgresql rabbitmq-server redis nginx ds-*; do systemctl is-active $service || echo "$service 未正常运行" done5.2 健康状态诊断
通过API端点验证各组件状态:
curl -s http://localhost/healthcheck | python -m json.tool预期输出应包含所有服务"status": "OK"。若出现JWT相关错误,需检查:
// 修改配置文件 vim /etc/onlyoffice/documentserver/local.json { "services": { "CoAuthoring": { "token": { "enable": { "request": false } } } } }6. 性能优化实战技巧
6.1 文档转换资源分配
通过调整Xvfb参数提升大文档处理能力:
# 修改服务配置 vim /etc/onlyoffice/documentserver/production.ini # 关键参数 [server] XvfbOptions = "-screen 0 1920x1080x24 -ac +extension RANDR"6.2 Nginx缓存优化
在/etc/nginx/nginx.conf中添加以下配置:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=doc_cache:10m inactive=24h; server { location ~* \.(docx|xlsx|pptx)$ { proxy_cache doc_cache; proxy_cache_valid 200 302 1h; proxy_cache_use_stale error timeout updating; } }7. 常见故障排除指南
7.1 版本冲突解决方案
当出现libssl.so.10等依赖错误时:
# 查找已安装版本 rpm -qa | grep openssl # 强制降级方案 rpm -ivh --replacefiles --replacepkgs openssl-1.0.2k-26.el7.x86_64.rpm7.2 内存泄漏处理
发现文档服务占用内存持续增长时:
# 定期重启服务(加入crontab) 0 3 * * * systemctl restart ds-*8. 高级部署模式扩展
对于需要高可用的场景,可考虑以下架构:
+-----------------+ | 负载均衡层 | | (Nginx/Haproxy)| +--------+--------+ | +---------------+---------------+ | | +-------+-------+ +-------+-------+ | 文档服务器A | | 文档服务器B | | (DS+Redis) | | (DS+Redis) | +-------+-------+ +-------+-------+ | | +-------+-------+ +-------+-------+ | PostgreSQL | | PostgreSQL | | (主从复制) | | (热备) | +---------------+ +---------------+实现要点:
- 使用
pgpool-II实现数据库读写分离 - 配置Redis Sentinel实现缓存高可用
- 文档存储目录通过NFS共享
# NFS共享配置示例 vim /etc/exports /var/www/onlyoffice 192.168.1.0/24(rw,sync,no_root_squash)