OnlyOffice安装部署(CentOS8)

安装Nginx

CentOS_8安装Nginx

首先添加 EPEL 存储库

sudo dnf install -y epel-release

安装Nginx

sudo dnf install -y nginx

验证安装

sudo nginx -v

配置开启启动并直接启动

sudo systemctl enable nginx --now

检查 Nginx 是否运行

curl -I 127.0.0.1

输出类似到内容

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Sun, 02 Apr 2023 06:15:41 GMT
Content-Type: text/html
Content-Length: 3429
Last-Modified: Thu, 10 Jun 2021 09:09:03 GMT
Connection: keep-alive
ETag: "60c1d6af-d65"
Accept-Ranges: bytes

配置防火墙策略,允许Web访问

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

安装配置PostgreSQL

安装PostgreSQL

启用 PostgreSQL 官方存储库

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

从 CentOS 默认库中禁用 PostgreSQL

sudo dnf module -qy disable postgresql

安装 PostgreSQL 12

sudo dnf install -y postgresql12 postgresql12-server

初始化PostgreSQL

初始化数据库,然后配置开机启动并直接启动

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
sudo systemctl enable postgresql-12 --now

设置 postgres 用户的密码

sudo passwd postgres

登录到 postgres 用户

su -l postgres

进入 Postgres 数据库

psql

配置数据库本地连接

为 IPv4 和 IPv6 本地主机配置身份验证方法

# METHOD 可以是 "trust", "reject", "md5", "password", "scram-sha-256", "gss", "sspi", "ident", "peer", "pam", "ldap", "radius" 或 "cert"
# 注意 "password" 是以明文方式发送; "md5" 或 "scram-sha-256" 是将密码加密后发送
sudo vim /var/lib/pgsql/12/data/pg_hba.conf

找到 host IPv4 和 IPv6 线路,配置本地连接的验证方法

host all all 127.0.0.1/32 md5
host all all ::1/128 md5

重启服务启用配置

sudo systemctl restart postgresql-12

配置PostgreSQL

创建 OnlyOffce 的 PostgreSQL 数据库和用户
先切换到目录 /tmp 下,这样命令历史将会在重启后消除

cd /tmp

创建用户

sudo -i -u postgres psql -c "CREATE USER onlyofficeuser WITH PASSWORD 'onlyofficepassword';"

创建数据库,并授予权限

sudo -i -u postgres psql -c "CREATE DATABASE onlyofficedb OWNER onlyofficeuser;"

安装 RabbitMQ

CentOS_8安装RabbitMQ

安装 EPEL 存储库

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

在 CentOS 8 上,建议同时启用 PowerTools 存储库,因为 EPEL 包可能依赖于它的包

sudo dnf config-manager --set-enabled powertools

可以通过运行以下命令来确认 EPEL 存储库的添加和功能

sudo dnf repolist epel

添加 PackageCloud 存储库

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

同时添加 Erlang 存储库

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

配置 RabbitMQ 存储库后,通过运行以下命令安装 RabbitMQ Server

sudo yum makecache -y --disablerepo='*' --enablerepo='rabbitmq_rabbitmq-server'
sudo yum -y install rabbitmq-server

启动并启用该服务以在系统启动时启动

echo "127.0.0.1 $(hostname -s)" | sudo tee -a /etc/hosts
sudo systemctl enable --now rabbitmq-server

检查 RabbitMQ 的状态

sudo systemctl status rabbitmq-server

# 查看细节
sudo rabbitmqctl status

可以选择启用 RabbitMQ 管理 Web 仪表板以便于管理,Web 服务在 TCP 端口 15672 上侦听

sudo rabbitmq-plugins enable rabbitmq_management

如果 Firewalld 服务,需要允许端口 5672 和 15672

sudo firewall-cmd --add-port={5672,15672}/tcp --permanent sudo firewall-cmd --reload

安装OnlyOffice

添加 ONLYOFFICE Docs 存储库

sudo yum install -y https://download.onlyoffice.com/repo/centos/main/noarch/onlyoffice-repo.noarch.rpm

安装 cabextract 和 xorg-x11-font-utils 包

sudo dnf install -y cabextract xorg-x11-font-utils

安装 msttcore 字体包

sudo rpm -i https://sourceforge.net/projects/mscorefonts2/files/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

安装 ONLYOFFICE Docs

sudo dnf install -y onlyoffice-documentserver

更改默认的 ONLYOFFICE Docs 端口,默认情况下,ONLYOFFICE Docs 使用端口 80 ,从 4.3 版本开始可以更改 ONLYOFFICE Docs 的端口,ONLYOFFICE Docs 使用的端口的完整列表

通过修改环境变量 DS_PORT 到值来修改默认端口

export DS_PORT=8181

如果您想将 ONLYOFFICE Docs 协议更改为 HTTPS,不是直接将端口更改为 443,而是需要配置

停止Nginx服务

不停止,后面直接重启也可

sudo systemc stop nginx

复制模板覆盖原有配置

v5.3 及更高版本切换到 HTTPS ,复制 ds-ssl.conf.tmpl 模板文件覆盖 ds.conf 配置文件

sudo cp -f /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds.conf

其他版本参考: Switching ONLYOFFICE Docs to HTTPS protocol

修改配置

修改 /etc/onlyoffice/documentserver/nginx/ds.conf{{...}} 参数信息

sudo vim /etc/onlyoffice/documentserver/nginx/ds.conf 
  • {{SSL_CERTIFICATE_PATH}} 证书路径
  • {{SSL_KEY_PATH}} 证书私钥路径
  • {{SSL_VERIFY_CLIENT}} 是否启用客户端证书验证,可选值:onoffoptionaloptional_no_ca
  • {{CA_CERTIFICATES_PATH}} 客户端证书路径
  • {{ONLYOFFICE_HTTPS_HSTS_MAXAGE}} 设置 HSTS max-age 的高级配置选项,仅在使用 SSL 时适用(通常默认为 31536000 ,这被认为足够安全
  • {{SSL_DHPARAM_PATH}} Diffie-Hellman (密钥交换协议) 参数的路径

更多Ngeinx的SSL参数配置信息参考; Module ngx_http_ssl_module

重启Nginx

sudo systemctl restart nginx

运行升级脚本

运行命令将配置将http请求重定向到https

sudo bash /usr/bin/documentserver-update-securelink.sh 

默认情况下使用 PostgreSQL 用作数据库。如果想使用 MySQL 而不是 PostgreSQL,请在运行 documentserver-configure.sh 脚本之前添加两个环境变量来定义数据库类型和端口:
export DB_TYPE=mysql
export DB_PORT=6443

运行 documentserver-configure.sh 脚本开始部署

documentserver-configure.sh

系统将要求您指定 PostgreSQL 和 RabbitMQ 连接参数,使用以下数据
PostgreSQL:

添加防火墙规则

sudo firewall-cmd --zone=public --add-port=8181/tcp --permanent
sudo firewall-cmd --reload

查看 http 使用到的端口的 SELinux 安全上下文

semanage port -l | grep http

查询到类似到内容

http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      3000, 8000, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988

修改 SELinux 标记类型,使其与端口 80 匹配

semanage port -a -t http_port_t -p tcp 8181

# ValueError: Port tcp/8181 already defined 使用以下
sudo semanage port -m -t http_port_t -p tcp 8181

学习笔记/Linux/SELinux上下文策略管理

重启 Nginx

sudo systemctl restart nginx