多人同步在线编辑文档(onlyoffice)服务器部署-测试

我装的是社区服务器 + 文件服务器(这样才能实现多人在线同时编辑文件)

这个是我虚拟机的配置,onlyoffice 官网建议

官方网址 :https://helpcenter.onlyoffice.com/server/docker/community/docker-installation.aspx?_ga=2.241152007.523411100.1584064999-567909688.1584064999

后面发现配置有点低,又添加增加了一点配置,反正就是尽可能的增加 内存 和 处理器。

就这样,有时候还是很卡。 

(由于我的虚拟机分配了20G的内存空间,之前装的就有东西,在装onlyoffice文件服务器的时候出现磁盘内存不足,又增加了磁盘的容量)

增加磁盘根分区的容量  https://blog.csdn.net/yang_zzu/article/details/104916275 

我用的centos7 的虚拟机 (使用docker的时候好像是有系统内核的要求的)

启用docker 服务 

查看状态 

mysql服务器 

 mkdir -p "/app/onlyoffice/mysql/conf.d"

mkdir -p "/app/onlyoffice/mysql/data"

mkdir -p "/app/onlyoffice/mysql/initdb"

mkdir -p "/app/onlyoffice/mysql/logs"

chown 999:999 /app/onlyoffice/mysql/logs

社区服务器的数据和日志

mkdir -p "/app/onlyoffice/CommunityServer/data"

mkdir -p "/app/onlyoffice/CommunityServer/logs"

文档服务器数据和日志

mkdir -p "/app/onlyoffice/DocumentServer/data"

mkdir -p "/app/onlyoffice/DocumentServer/logs"

邮件服务器数据和日志

mkdir -p "/app/onlyoffice/MailServer/data/certs"

mkdir -p "/app/onlyoffice/MailServer/logs"

创建onlyoffice网络 

docker network create --driver bridge onlyoffice

网桥适用于在同一个Docker守护程下的容器。

bridge是docker默认的网络模式,如果不指定类型,则这是您正在创建的网络类型,bridge模式会为每一个容器分配一个Network Namespace、IP等,并将容器的网络连接到一个网桥(docker0)上。

特点:同一个宿主机上所有容器默认会在同一个网段(默认网段:172.17.0.0/16)下,且相互之间可以通信以及访问外部网络(前提是宿主机可以访问外部网络)。

以我的理解网桥模式类似于,虚拟机的桥接模式

docker network ls

添加onlyoffice.cnf 文件 /app/onlyoffice/mysql/conf.d/onlyoffice.cnf 

echo "[mysqld] sql_mode = 'NO_ENGINE_SUBSTITUTION' max_connections = 1000 max_allowed_packet = 1048576000 group_concat_max_len = 2048 log-error = /var/log/mysql/error.log" > /app/onlyoffice/mysql/conf.d/onlyoffice.cnf

chmod 0644 /app/onlyoffice/mysql/conf.d/onlyoffice.cnf

创建用户并分配权限 

这个是使用mysql5.7的配置文件

echo "CREATE USER 'onlyoffice_user'@'%' IDENTIFIED BY '123456'; CREATE USER 'mail_admin'@'localhost' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON * . * TO 'onlyoffice_user'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON * . * TO 'mail_admin'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql

这个是,后面我再启动 Onlyoffice社区服务的时候使用的也是mysql8.0.19的配置(5.7)(主要是mysql创建的用户的名称,要和后面运行社区服务器的配置一样)

echo "create user onlyoffice@'%' identified by '123456'; create user mailadmin@'%' identified by '123456'; GRANT ALL PRIVILEGES ON *.* TO root@'%' ; GRANT ALL PRIVILEGES ON *.* TO onlyoffice@'%' ; GRANT ALL PRIVILEGES ON *.* TO mailadmin@'%' ; FLUSH PRIVILEGES;" > /app/onlyoffice/mysql/initdb/setup.sql

下划线加粗的都表示的是前面用户的密码,create语句是创建时候设置的密码,grant语句表示分配权限的时候认证的密码

启动mysql容器,我拉的mysql 镜像是8.0.19

docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server -p 3309:3306 -v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d -v /app/onlyoffice/mysql/data:/var/lib/mysql -v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d -v /app/onlyoffice/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=onlyoffice mysql

docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-mysql-server -p 3309:3306 -v /app/onlyoffice/mysql/conf.d:/etc/mysql/conf.d -v /app/onlyoffice/mysql/data:/var/lib/mysql -v /app/onlyoffice/mysql/initdb:/docker-entrypoint-initdb.d -v /app/onlyoffice/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=onlyoffice mysql 

 

这个时候使用远程连接工具进行连接的时候是连接不上的。(而Onlyoffice 服务连接服务器的时候应该也是使用远程连接的方式,所以建议还是修改一下加密规则) 

mysql8 之前的版本中加密规则是mysql_native_password,

mysql8之后,加密规则是caching_sha2_password,

解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password. 

进入到mysql 容器里面,登录mysql执行语句。

alter user 'mailadmin'@'%' identified with mysql_native_password by '123456';

alter user 'onlyoffice'@'%' identified with mysql_native_password by '123456';

 

查找communityserver 的容器

docker search communityserver

下载镜像

docker pull onlyoffice/communityserver 

 我这边在拉取镜像的时候卡在哪里不动了

决定使用阿里云的加速服务(免费的) 

阿里云注册地址:https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcr.console.aliyun.com%2Fcn-shanghai%2Finstances%2Frepositories

后面还要设置一个容器的单独密码。

 

先关闭docker容器中的服务 

 

启动onlyoffice/communityserver容器

docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-community-server -p 8081:80 -p 443:443 -p 5222:5222 -e MYSQL_SERVER_ROOT_PASSWORD=123456 -e MYSQL_SERVER_DB_NAME=onlyoffice -e MYSQL_SERVER_HOST=onlyoffice-mysql-server -e MYSQL_SERVER_USER=onlyoffice_user -e MYSQL_SERVER_PASS=123456 -v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice onlyoffice/communityserver

 

docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-community-server -p 8081:80 -p 443:443 -p 5222:5222 

-e MYSQL_SERVER_ROOT_PASSWORD=123456      root用户密码

-e MYSQL_SERVER_DB_NAME=onlyoffice         数据库的名称

-e MYSQL_SERVER_HOST=172.18.0.3      数据库主机地址(虽然说设置为同一个网桥,直接用容器名就可以访问)

-e MYSQL_SERVER_USER=onlyoffice_user             数据库用户,前面已经添加

-e MYSQL_SERVER_PASS=123456           onlyoffice_user 用户密码

-v /app/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data

-v /app/onlyoffice/CommunityServer/logs:/var/log/onlyoffice onlyoffice/communityserver

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

-t :表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

前面设置的端口是8081所以在进入页面的时候需要指明端口

因为长时间的卡在这里,服务要想正常的工作,肯定需要数据的支持,数据库里面有数据,就怀疑是不是容器之间网络不通的原因。

因为容器之间我创建的时候是通过网桥进行创建的,这里测试一下通过 容器名 能够ping通另外一个容器,这里使用的arping

由于 onlyoffice-mysql-server 容器中没有安装 arping 所以显示没有这个命令。 

各种方式都进行了尝试,但是在打开这个软件的时候打不开,数据库 onlyoffice 库里面没有创建任何的表,onlyofficecommunity作为一个服务,肯定需要数据的支持,

 

如果服务启动的话,查看数据库,里面会新建一个 数据库,并且里面有好多 onlyoffice服务运行的时候需要的表和初始数据。

可能是电脑的配置有点低,放在那里等了好长时间,在看电视剧的时候偶尔的访问访问,之前一直是502,大概经过了3个小时

 

下载文件服务器(是文档预览与编辑的中间件)

docker pull onlyoffice/documentserver

文档服务器的数据和文件,文件夹

安装文档服务器(这边如果你台服务器,还运行了httpd 服务的话,可以将端口指定为其他的端口, -p 10000:80)

我这太服务器没有运行 httpd 服务,所以指定了 -p 80:80

docker run --net onlyoffice -i -t -d --restart=always --name onlyoffice-document-server \
    -p 80:80 \
    -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
    -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql \
    onlyoffice/documentserver

 设置----》集成-----》文件服务

 实际上在这里关闭防火墙,可以正常的加载保存。(我测试的时候可能是一些原因没有成功,后面又测试的时候是可以的)

在点击保存的时候,要等待系统加载一段时间,这个时候如果使用的虚拟机电脑会很卡。

后面有在防火墙中加规则的方法,这样就不需要关闭防火墙就可以正常的使用。

 

当然要想实现同时在线编辑,必须要对(需要协同编辑的文件给予权限),才能进行协同的工作,给哪一个账号分配的权限,登录到那个账号,在“与我共享的文档”里面会有显示共享的文件列表。

其他的那些上传文件了,创建用户了,分配权限了,我就不演示了,在前端页面多点击点击看看。

文档服务器,集成

https://api.onlyoffice.com/editors/demopreview(貌似这个我看了没有什么帮助,但是如果想进一步研究的话可以看一下文档)

出现错误后,去服务中查看日志信息。

/app/onlyoffice/DocumentServer/logs/documentserver/converter 

查看日志信息

cat out.log

服务默认采用的国际时间 即时间中带有 T ,换算成上海时间要 + 8h 

 可以使用 docker logs onlyoffice-document-server 查看docker容器中启动的 onlyoffice-document-server 服务的日志信息

实际上,出现 No route to host 这个时候关闭防火墙是可以解决问题的,可能是之前我测试的时候出现了一点问题。

或者修改 防火墙的配置文件

获得容器的网关地址 

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <rule family="ipv4">
       <source address="172.18.0.1/16"/>
       <accept/>
  </rule>
</zone>

然后开启防火墙,如果之前服务器没有关闭的情况可以重启防火墙

systemctl restart firewalld.service      重启 

保存成功之后,系统需要一段时间进行配置,这个时候系统会变的很卡,CPU的使用率也会变高 

过一段时间,使用不同的浏览器,用不同的账号进行登录,就可以对文件同时进行编辑,并且编辑的内容是实时显示的。

数据文件的保存位置在 CommunityServer 上面,/app/onlyoffice/CommunityServer/data

没有在 DocumentServer上面/app/onlyoffice/DocumentServer/data

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值