我装的是社区服务器 + 文件服务器(这样才能实现多人在线同时编辑文件)
这个是我虚拟机的配置,onlyoffice 官网建议
后面发现配置有点低,又添加增加了一点配置,反正就是尽可能的增加 内存 和 处理器。
就这样,有时候还是很卡。
(由于我的虚拟机分配了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
我这边在拉取镜像的时候卡在哪里不动了
决定使用阿里云的加速服务(免费的)
后面还要设置一个容器的单独密码。
先关闭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