一、部署环境
系统版本:CentOS Linux release 7.9.2009 (Core)
配置:16C 16G
MySQL:5.7.20
二、部署过程
1、安装docker和docker-compose
请百度
2、创建数据库和用户,并授权
因为我使用外置MySQL,所以需要先创建数据库和授权
create database nextcloud;
grant all on nextcloud.* to nextcloud@'%' identified by '123456';
注意:因为用的是docker安装,所以授权最好授权%。
3、安装nextcloud
[root@云盘 nextcloud]# mkdir /data/nextcloud/nextcloud
[root@云盘 nextcloud]# cd /data/nextcloud
[root@云盘 nextcloud]# cat docker-compose.yml
version: '2'
services:
app:
container_name: "nextcloud"
image: nextcloud:27.0.1 # 安装的版本号,这个是我装的时候最新版的版号
restart: always
ports:
- 8080:80 # 映射到服务器端口
volumes:
- /data/nextcloud/nextcloud:/var/www/html # 将代码挂载出来,方便以后修改
environment: # 我使用的是外置数据库,所以要配置下面账密,nextcloud提示要MySQL8.0 以上版本的,我用的是MySQL5.7.20 不过使用好像没啥问题
- MYSQL_PASSWORD=123456
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=192.168.2.204
[root@云盘 nextcloud]# docker-compose up -d # 执行之后会拉取镜像,并运行容器。
[root@云盘 nextcloud]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3930bc2768d nextcloud:27.0.1 "/entrypoint.sh apac…" 14 hours ago Up 55 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp nextcloud
使用浏览器打开nextcloud,http://192.168.204:8080
设置管理员账号,程序会自动创建库表。但是如果报错的话会提示你选择哪些数据库。
可能报错的原因:
docker容器连不上MySQL数据库,上面配置的MySQL数据库没有授权。
如果都没问题,等几分钟就可以配置好了。
4、安装onlyoffice
把docker-compose.yml改成下面内容
[root@云盘 nextcloud]# cat docker-compose.yml
version: '3'
services:
only-office:
image: onlyoffice/documentserver
container_name: onlyoffice
ports:
- 8081:80
volumes:
- /data/nextcloud/onlyoffice:/var/www/onlyoffice/Data
- /data/nextcloud/onlyoffice/logs:/var/log/onlyoffice
restart: always
privileged: true
[root@云盘 nextcloud]# docker-compose up -d
[root@云盘 nextcloud]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44be2cd04717 onlyoffice/documentserver "/app/ds/run-documen…" 14 hours ago Up 14 hours 443/tcp, 0.0.0.0:8081->80/tcp, :::8081->80/tcp onlyoffice
c3930bc2768d nextcloud:27.0.1 "/entrypoint.sh apac…" 14 hours ago Up 55 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp nextcloud
使用浏览器打开:http://192.168.2.204:8081 没问题即可。
5、nextcloud接入onlyoffice
【应用】
Ctrl+F搜索onlyoffice,下载并启用
新版本需要输入管理员密码:
管理应用:
服务器执行生成密钥的命令:否则会报系统内部错误
[root@云盘 nextcloud]# docker exec 你onlyoffice容器ID /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
rCxhmpEAL05VqWyfbqyUh5p9j53RT4EM # 会输出一个密钥
添加成功之后我新增了下面哪些文件后缀,再往下拉点击保存即可。
接入成功之后多了下面选项:
6、接入onlyoffice可能会遇到的报错:
1)报错1:打开应用转了很久之后,打开之后发现找不到 onlyoffice应用,无法下载和启动。
点击【个人设置】--【日志】看到日志报错:
Could not connect to appstore: cURL error 28: Operation timed out after 60000 milliseconds with 3035136 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://apps.nextcloud.com/api/v1/apps.json
解决方法:
应用要请求海外的的接口。要降超时时间调长一点。
修改文件:/data/nextcloud/nextcloud/lib/private/Installer.php timeout那行代码
上面是将容器代码挂在出来服务器的路径,每个人的都不一样!但是lib/private/Installer.php 是一样的。
修改之后重启容器。
如果改了超时时间之后还是一样刷不出来,日志还是报超时的错。可以清理浏览器缓存,先用浏览器打开这个应用接口URL(https://apps.nextcloud.com/api/v1/apps.json)。
再重新登录打开应用。
$tempFile = $this->tempManager->getTemporaryFile('.tar.gz');
$timeout = $this->isCLI ? 0 : 360; # 默认是120,改成360,如果不行再继续调大,甚至要连VPN才可以获取到onlyoffice应用。
$client = $this->clientService->newClient();
接口请求异常,页面是这样的:无法加载出来其他的应用
正常应该是这样的:
2)报错2:nextcloud添加onlyoffice 报错连接是发生异常 (文档服务内部发生异常: Invalid token)
解决:
打开onlyoffice server首页,复制执行这个命令,容器ID改成你的onlyoffice容器ID。