一、部署环境

系统版本: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。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐