Skip to content

24.9 OnlyOffice 部署(基于 PostgreSQL)

本节说明在 FreeBSD 上通过 pkg 部署 OnlyOffice,并与 Nginx + Nextcloud 协同的完整步骤。

24.9.1 安装 Nextcloud 和 Nginx

OnlyOffice 需与 Nextcloud 配合使用,首先在另一台机器上安装 Nextcloud 和 Nginx。安装完成后,方可开始部署 OnlyOffice 文档服务器。

24.9.2 安装 OnlyOffice

使用 pkg 包管理器安装 OnlyOffice 是最快捷的方式,执行以下命令完成安装:

sh
# pkg install onlyoffice-documentserver

或者使用 Ports 方式安装 OnlyOffice:

sh
# cd /usr/ports/www/onlyoffice-documentserver/
# make install clean

24.9.3 查看 OnlyOffice 安装信息

目录结构:

sh
/
├── usr
   └── local
       ├── etc
   ├── onlyoffice
   └── documentserver
       ├── local.json                      # OnlyOffice 本地配置文件
       ├── default.json                    # OnlyOffice 默认配置文件
       ├── nginx
   └── ds.conf                     # OnlyOffice Nginx 配置
       └── supervisor
           └── *.conf                      # OnlyOffice supervisord 配置
   └── supervisord.conf                        # supervisord 主配置文件
       ├── bin
   ├── documentserver-pluginsmanager.sh       # 插件管理器脚本
   └── documentserver-update-securelink.sh    # 安全链接更新脚本
       └── www
           └── onlyoffice
               └── documentserver
                   └── server
                       └── schema
                           ├── postgresql
   ├── createdb.sql      # PostgreSQL 数据库创建脚本
   └── upgrade           # PostgreSQL 升级脚本
                           └── mysql
                               ├── createdb.sql      # MySQL 数据库创建脚本
                               └── upgrade           # MySQL 升级脚本
└── var
    ├── log
   └── onlyoffice
       └── documentserver
           └── converter
               └── out.log                        # OnlyOffice 日志文件
    └── db
        └── rabbitmq
            └── .erlang.cookie                          # RabbitMQ Erlang Cookie

安装完成后,查看安装包的说明文档,了解必要的配置和注意事项:

sh
# pkg info -D onlyoffice-documentserver

24.9.4 配置服务

了解完安装信息后,需配置 OnlyOffice 相关服务的开机自启。

sh
# service nginx enable
# service rabbitmq enable
# service supervisord enable

24.9.5 配置数据库

OnlyOffice 需要数据库存储数据,本节使用 PostgreSQL 作为数据库。请自行参照本书其他章节,完成 PostgreSQL 数据库的安装、初始化和服务自启。

然后执行以下命令使用数据库:

sh
# psql -U postgres -c "CREATE DATABASE onlyoffice;"
# psql -U postgres -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
# psql -U postgres -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
# psql -U postgres -c "ALTER DATABASE onlyoffice OWNER to onlyoffice;"
# psql -hlocalhost -Uonlyoffice -d onlyoffice -f /usr/local/www/onlyoffice/documentserver/server/schema/postgresql/createdb.sql

24.9.6 配置 rabbitmq

OnlyOffice 需使用 RabbitMQ 作为消息队列服务。启动服务:

sh
# service rabbitmq start

第一步:

sh
# rabbitmqctl --erlang-cookie `cat /var/db/rabbitmq/.erlang.cookie` add_user onlyoffice password  # 注意:该步骤可能耗时数分钟,下同

……此处省略部分内容……

attempted to contact: [rabbit@ykla]

rabbit@ykla:
  * connected to epmd (port 4369) on ykla
  * epmd reports node 'rabbit' uses port 25672 for inter-node and CLI tool traffic
  * can't establish TCP connection to the target node, reason: timeout (timed out)
  * suggestion: check if host 'ykla' resolves, is reachable and ports 25672, 4369 are not blocked by firewall

Current node details:
 * node name: 'rabbitmqcli-719-rabbit@ykla'
 * effective user's home directory: /root
 * Erlang cookie hash: mmhdcv/DKEfjrCrCEaZMvQ==

第二步:

sh
# rabbitmqctl --erlang-cookie `cat /var/db/rabbitmq/.erlang.cookie` set_user_tags onlyoffice administrator
Error: unable to perform an operation on node 'rabbit@ykla'. Please see diagnostics information and suggestions below.

……此处省略部分内容……

第三步:

sh
# rabbitmqctl --erlang-cookie `cat /var/db/rabbitmq/.erlang.cookie` set_permissions -p / onlyoffice ".*" ".*" ".*"
Error: unable to perform an operation on node 'rabbit@ykla'. Please see diagnostics information and suggestions below.

……此处省略部分内容……

24.9.7 允许局域网访问

OnlyOffice 默认配置不允许私有 IP 地址访问,需修改配置以允许局域网访问。将以下片段加入 /usr/local/etc/onlyoffice/documentserver/local.json 文件:

json
  "request-filtering-agent" : {
				"allowPrivateIPAddress": true,
				"allowMetaIPAddress": true
			},

即:

json
{
  "services": {
    "CoAuthoring": {
      "sql": {
        "type": "postgres",
        "dbHost": "localhost",
        "dbPort": "5432",
        "dbName": "onlyoffice",
        "dbUser": "onlyoffice",
        "dbPass": "onlyoffice"
      },
  "request-filtering-agent" : {
				"allowPrivateIPAddress": true,
				"allowMetaIPAddress": true
			},
      "token": {
        "enable": {
          "request": {
            "inbox": false,
            "outbox": false
          },
          "browser": false

//……此处省略其他配置……

24.9.8 配置 Nginx

需配置 Nginx 提供 OnlyOffice 的 Web 访问服务。编辑 /usr/local/etc/nginx/nginx.conf 文件,将

nginx
include /usr/local/etc/onlyoffice/documentserver/nginx/ds.conf;

添加至 http 配置块内:

示例:

nginx

# ……省略其他配置……

http {
    include       mime.types;
    default_type  application/octet-stream;
    include /usr/local/etc/onlyoffice/documentserver/nginx/ds.conf;

# ……省略其他配置……

24.9.9 配置 supervisord

OnlyOffice 使用 supervisord 来管理其服务进程。编辑 /usr/local/etc/supervisord.conf 文件,找到末尾的 ;[include],删除行首的分号:

即:

ini
[include]
;files = relative/directory/*.ini
files = /usr/local/etc/onlyoffice/documentserver/supervisor/*.conf
sh
# service supervisord start

24.9.10 启动文档

所有配置完成后,可启动 OnlyOffice 文档服务。

sh
# documentserver-update-securelink.sh
ds:docservice: stopped
ds:docservice: started
ds:converter: stopped
ds:converter: started
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

直接打开 IP 地址,如下图所示:

Document Server is running

24.9.11 配置 Nextcloud

OnlyOffice 文档服务启动后,需在 Nextcloud 中配置 OnlyOffice 插件。打开 Nextcloud:

安装 OnlyOffice 插件,可访问 ip/nextcloud/index.php/settings/apps/office/onlyoffice

onlyoffice

点击头像,然后进入管理设置,找到 OnlyOffice,设置如下(注意确认密钥是否为空):

onlyoffice

24.9.12 完成

所有配置完成后,可测试 OnlyOffice 功能,预览几个文件:

onlyoffice

onlyoffice

onlyoffice

24.9.13 故障排除与未竟事宜

如在使用 OnlyOffice 时遇到问题,可查看相关日志文件排查。本节还列出了有待完善的事项。

OnlyOffice 的日志位于 /var/log/onlyoffice/documentserver/converter/out.log

24.9.14 参考文献