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

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

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第1张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第2张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第3张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第4张图片

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

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

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

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

启用docker 服务 

查看状态 

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第5张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第6张图片

社区服务器的数据和日志

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第7张图片

文档服务器数据和日志

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第8张图片

邮件服务器数据和日志

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第9张图片

创建onlyoffice网络 

docker network create --driver bridge onlyoffice

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

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

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

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

docker network ls

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第10张图片

添加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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第11张图片

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执行语句。

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第12张图片

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

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

 

查找communityserver 的容器

docker search communityserver

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第13张图片

下载镜像

docker pull onlyoffice/communityserver 

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第14张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第15张图片

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

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第16张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第17张图片

 多人同步在线编辑文档(onlyoffice)服务器部署-测试_第18张图片

先关闭docker容器中的服务 

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第19张图片

 多人同步在线编辑文档(onlyoffice)服务器部署-测试_第20张图片

启动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

 多人同步在线编辑文档(onlyoffice)服务器部署-测试_第21张图片

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所以在进入页面的时候需要指明端口

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第22张图片

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第23张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第24张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第25张图片

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

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

 

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第26张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第27张图片

 

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

docker pull onlyoffice/documentserver

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第28张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第29张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第30张图片

安装文档服务器(这边如果你台服务器,还运行了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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第31张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第32张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第33张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第34张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第35张图片

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

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

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

 

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第36张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第37张图片

文档服务器,集成

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

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第38张图片

查看日志信息

cat out.log

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第39张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第40张图片

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第41张图片

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第42张图片

获得容器的网关地址 

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第43张图片



  Public
  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.
  
  
  
       
       
  

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

systemctl restart firewalld.service      重启 

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第44张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第45张图片

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第46张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第47张图片

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

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

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第48张图片

多人同步在线编辑文档(onlyoffice)服务器部署-测试_第49张图片

 

你可能感兴趣的:(linux,docker)