我装的是社区服务器 + 文件服务器(这样才能实现多人在线同时编辑文件)
这个是我虚拟机的配置,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
启用docker 服务
查看状态
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"
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语句表示分配权限的时候认证的密码
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';
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 :表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
因为长时间的卡在这里,服务要想正常的工作,肯定需要数据的支持,数据库里面有数据,就怀疑是不是容器之间网络不通的原因。
因为容器之间我创建的时候是通过网桥进行创建的,这里测试一下通过 容器名 能够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 这个时候关闭防火墙是可以解决问题的,可能是之前我测试的时候出现了一点问题。
或者修改 防火墙的配置文件
获得容器的网关地址
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 重启
保存成功之后,系统需要一段时间进行配置,这个时候系统会变的很卡,CPU的使用率也会变高
过一段时间,使用不同的浏览器,用不同的账号进行登录,就可以对文件同时进行编辑,并且编辑的内容是实时显示的。
数据文件的保存位置在 CommunityServer 上面,/app/onlyoffice/CommunityServer/data
没有在 DocumentServer上面/app/onlyoffice/DocumentServer/data