1. 离线部署OnlyOffice Docs的必要性与挑战在企业级办公场景中文档协作平台已经成为刚需。OnlyOffice Docs作为一款开源的Office套件提供了与微软Office高度兼容的文档编辑体验同时支持多人实时协作。但在某些特殊环境下比如政府机构、金融机构或涉密单位的内部网络服务器往往处于完全隔离外网的状态这就使得常规的在线安装方式完全失效。我去年参与过一个军工企业的文档系统改造项目他们的服务器机房连USB接口都是物理封死的所有软件安装包必须经过安全部门审核后由专人通过内部介质传输系统导入。在这种环境下部署OnlyOffice前后折腾了将近一个月踩遍了所有能想到的坑。今天我就把这些实战经验系统整理出来帮你避开我当年走过的弯路。离线部署最大的三个难点在于依赖包完整性、安装顺序合理性、配置参数准确性。很多人在第一步准备rpm包时就漏掉了关键组件导致后续安装连环报错。更麻烦的是离线环境下你没法简单用yum install来自动解决依赖每个缺失的包都可能让你前功尽弃。2. 环境准备与依赖包收集2.1 基础系统要求在开始之前请确保你的Linux服务器满足以下最低配置操作系统CentOS/RHEL 7.x或8.x本文以CentOS 7.9为例CPU至少4核实测2核机器处理复杂文档会卡顿内存不小于8GB建议16GB以上磁盘空间系统分区剩余空间不小于50GB我曾经在虚拟机里测试时分配了4GB内存结果打开20页的PPT时直接OOM崩溃。后来发现OnlyOffice的后台服务相当吃资源特别是文档转换和渲染进程。2.2 离线包完整清单你需要提前准备好以下所有rpm安装包建议在相同版本的在线机器上用yumdownloader工具下载nodejs-14.x及以上版本 nginx-1.18 postgresql-server-12 rabbitmq-server-3.8 redis-6.x erlangRabbitMQ依赖 libstdc-devel glibc-devel fontconfig mscorefonts onlyoffice-documentserver这里有个血泪教训不同版本的OnlyOffice对Node.js有特定要求。比如Documentserver 7.1需要Node.js 14.x而6.x版本则要求Node.js 12.x。我曾经因为用了Node.js 16导致服务起不来排查了两天才发现版本不兼容。3. 分步安装核心组件3.1 Node.js与Nginx安装先安装Node.js环境# 安装Node.js rpm -ivh nodejs-14.21.3-1nodesource.x86_64.rpm npm install -g yarn # 验证安装 node -v # 应显示v14.x npm -v # 6.x接着部署Nginx作为前端代理# 安装Nginx rpm -ivh nginx-1.24.0-1.el7.ngx.x86_64.rpm # 关键配置调整 vim /etc/nginx/nginx.conf在nginx.conf中需要修改worker_processes auto; # 根据CPU核心数设置 keepalive_timeout 650; client_max_body_size 100m; # 大文件上传必备3.2 PostgreSQL数据库配置数据库是OnlyOffice的核心存储务必仔细配置# 安装PostgreSQL rpm -ivh postgresql12-libs-12.12-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql12-12.12-1PGDG.rhel7.x86_64.rpm rpm -ivh postgresql12-server-12.12-1PGDG.rhel7.x86_64.rpm # 初始化数据库 /usr/pgsql-12/bin/postgresql-12-setup initdb systemctl enable postgresql-12 systemctl start postgresql-12创建专用数据库用户CREATE USER onlyoffice WITH PASSWORD StrongPassword123; CREATE DATABASE onlyoffice OWNER onlyoffice; ALTER USER onlyoffice WITH SUPERUSER;注意生产环境一定要改密码我见过太多人直接用onlyoffice/onlyoffice这种弱密码结果被内网渗透的案例。4. 消息队列与缓存服务4.1 RabbitMQ安装消息队列服务是文档协作的关键组件# 先安装Erlang依赖 rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm # 安装RabbitMQ rpm -ivh rabbitmq-server-3.8.16-1.el7.noarch.rpm # 启动服务 systemctl enable rabbitmq-server systemctl start rabbitmq-server # 添加vhost rabbitmqctl add_vhost /onlyoffice rabbitmqctl set_permissions -p /onlyoffice onlyoffice .* .* .*4.2 Redis缓存配置缓存服务能显著提升文档加载速度rpm -ivh redis-6.2.6-1.el7.x86_64.rpm # 修改配置文件 vim /etc/redis.conf需要调整的关键参数maxmemory 2gb maxmemory-policy allkeys-lru5. OnlyOffice Documentserver安装5.1 字体与依赖安装中文文档显示需要额外字体支持# 安装字体包 rpm -ivh msttcore-fonts-installer-2.6-1.noarch.rpm # 安装Xvfb虚拟帧缓冲 rpm -ivh xorg-x11-server-Xvfb-1.20.4-24.el7_9.x86_64.rpm5.2 主程序安装终于来到核心步骤# 安装repo配置 rpm -ivh onlyoffice-repo.noarch.rpm # 安装主程序 rpm -ivh onlyoffice-documentserver-7.5.1.x86_64.rpm安装完成后需要运行配置脚本documentserver-configure.sh6. 系统配置与优化6.1 关闭JWT验证内网专用在完全隔离的内网环境中可以关闭JWT验证简化配置vim /etc/onlyoffice/documentserver/default.json修改以下参数token: { enable: { request: false, browser: false } }6.2 防火墙设置如果系统启用了firewalldfirewall-cmd --permanent --zonepublic --add-port80/tcp firewall-cmd --permanent --zonepublic --add-port443/tcp firewall-cmd --reload6.3 SELinux策略调整建议临时关闭SELinux测试setenforce 0如果必须开启SELinux需要配置详细策略规则这又是一个深坑建议参考官方文档。7. 验证与故障排查完成所有安装后访问http://服务器IP 应该能看到OnlyOffice的欢迎页面。如果遇到502错误按这个顺序排查检查Nginx是否正常运行systemctl status nginx查看Documentserver日志journalctl -u ds-* -f验证端口监听情况netstat -tulnp | grep -E 80|443常见问题解决方案出现Document Server is not responding通常是RabbitMQ服务没启动中文显示乱码检查是否安装了所有中文字体包文档保存失败查看PostgreSQL连接权限和磁盘空间最后提醒一点离线环境下的版本升级非常麻烦建议首次部署就选择长期支持版LTS。我在客户那见过因为升级失败导致整个文档系统瘫痪的惨剧最后只能重装系统。