Linux服务器部署ONLYOFFICE Docs:从零搭建到安全配置
1. 环境准备与依赖安装在开始部署ONLYOFFICE Docs之前我们需要确保服务器满足基本运行条件。以CentOS 7为例以下是关键依赖的安装步骤Node.js安装作为文档渲染的核心引擎建议安装Node.js 14版本。执行以下命令添加官方源并安装curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash - sudo yum install -y nodejs验证安装是否成功node -v # 应输出v14.x或更高版本数据库配置ONLYOFFICE依赖PostgreSQL存储文档元数据。安装后需调整认证方式sudo yum install -y postgresql-server sudo postgresql-setup initdb sudo systemctl start postgresql修改/var/lib/pgsql/data/pg_hba.conf将ident改为trusthost all all 127.0.0.1/32 trust host all all ::1/128 trust重启服务后创建专用数据库sudo -u postgres psql -c CREATE DATABASE onlyoffice; sudo -u postgres psql -c CREATE USER onlyoffice WITH PASSWORD StrongPassword123; sudo -u postgres psql -c GRANT ALL ON DATABASE onlyoffice TO onlyoffice;消息队列服务RabbitMQ用于处理实时协作消息sudo yum install -y rabbitmq-server sudo systemctl start rabbitmq-server sudo rabbitmq-plugins enable rabbitmq_management # 启用监控面板2. 核心服务部署与配置字体库安装确保系统包含常用字体以避免排版异常sudo yum install -y cabextract xorg-x11-font-utils sudo rpm -ivh https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpmONLYOFFICE主程序安装添加官方仓库并安装文档服务sudo yum install -y https://download.onlyoffice.com/repo/centos/main/noarch/onlyoffice-repo.noarch.rpm sudo yum install -y onlyoffice-documentserver安装完成后会自动生成Nginx配置文件位置在/etc/onlyoffice/documentserver/nginx/ds.conf。服务端口调整若需修改默认80端口例如改为8080sudo sed -i s/listen 0.0.0.0:80/listen 0.0.0.0:8080/g /etc/onlyoffice/documentserver/nginx/ds.conf sudo systemctl restart nginx3. 安全加固策略防火墙规则配置开放必要端口并限制访问来源sudo firewall-cmd --permanent --add-port8080/tcp sudo firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 port port8080 protocoltcp accept sudo firewall-cmd --reloadSELinux策略调整临时禁用或设置为宽松模式sudo setenforce 0 # 临时生效 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config # 永久生效JWT安全认证编辑配置文件/etc/onlyoffice/documentserver/local.json启用密钥验证{ services: { CoAuthoring: { token: { enable: { request: { inbox: true, outbox: true }, browser: true }, inbox: { header: Authorization }, outbox: { header: Authorization }, secret: YourSecretKey123! } } } }重启服务使配置生效sudo supervisorctl restart all4. 生产环境优化建议资源隔离方案对PostgreSQL和RabbitMQ单独部署服务器使用Cgroups限制文档服务CPU/内存占用sudo systemctl set-property onlyoffice-documentserver.service CPUQuota200% MemoryLimit4G高可用架构通过Nginx实现负载均衡upstream documentserver { server 192.168.1.10:8080; server 192.168.1.11:8080; keepalive 15; } server { listen 80; location / { proxy_pass http://documentserver; proxy_http_version 1.1; proxy_set_header Connection ; } }监控与日志配置日志轮转防止磁盘爆满sudo tee /etc/logrotate.d/onlyoffice EOF /var/log/onlyoffice/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 onlyoffice onlyoffice sharedscripts postrotate /usr/bin/supervisorctl restart onlyoffice-documentserver /dev/null endscript } EOF5. 故障排查指南常见问题处理文档加载失败检查浏览器控制台报错常见原因包括JWT密钥不匹配需检查集成系统配置字体缺失运行fc-list查看已安装字体端口冲突使用ss -tulnp确认端口占用协作不同步验证RabbitMQ状态sudo rabbitmqctl list_queues name messages_ready messages_unacknowledged若队列堆积可能需要调整消费者数量。性能优化对于大型文档处理建议增加SWAP空间至少4GB调整V8引擎内存限制echo NODE_OPTIONS--max_old_space_size4096 | sudo tee -a /etc/onlyoffice/documentserver/production-linux.json日志分析技巧关键日志文件位置服务日志/var/log/onlyoffice/documentserver/*.logNginx访问日志/var/log/nginx/onlyoffice.access.logPostgreSQL慢查询日志/var/lib/pgsql/data/pg_log/使用实时监控命令tail -f /var/log/onlyoffice/documentserver/docservice.log | grep -E ERROR|WARN