Nextcloudfpm版在Dokcer下安装踩坑

博客 分享
0 236
张三
张三 2022-03-25 21:57:08
悬赏:0 积分 收藏

Nextcloud fpm 版在 Dokcer 下安装踩坑

Nextcloud fpm 版在 Dokcer 下安装踩坑 Nextcloud fpm 版在 Dokcer 下安装踩坑,主要是 Docker 下如何配置 Nextcloud 的 cron 任务。

安装

首先到 https://registry.hub.docker.com/_/nextcloud 获取 Nextcloud 的示例 docker-compose

version: '2'volumes:  nextcloud:  db:services:  db:    image: mariadb    restart: always    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW    volumes:      - db:/var/lib/mysql    environment:      - MYSQL_ROOT_PASSWORD=      - MYSQL_PASSWORD=      - MYSQL_DATABASE=nextcloud      - MYSQL_USER=nextcloud  app:    image: nextcloud:fpm    restart: always    links:      - db    volumes:      - nextcloud:/var/www/html    environment:      - MYSQL_PASSWORD=      - MYSQL_DATABASE=nextcloud      - MYSQL_USER=nextcloud      - MYSQL_HOST=db  web:    image: nginx    restart: always    ports:      - 8080:80    links:      - app    volumes:      - ./nginx.conf:/etc/nginx/nginx.conf:ro    volumes_from:      - app

修改其为适合自己使用的版本,如我是这么修改的

version: '2'volumes:  nextcloud:  db:services:  db:    image: mariadb    restart: always    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --skip-innodb-read-only-compressed    volumes:      - /home/puzhiwei/docker/nextcloud/mysql/lib:/var/lib/mysql      - /home/puzhiwei/docker/nextcloud/mysql/etc:/etc/mysql    environment:      - MYSQL_ROOT_PASSWORD=      - MYSQL_PASSWORD=      - MYSQL_DATABASE=nextcloud      - MYSQL_USER=nextcloud  app:    image: nextcloud:fpm    restart: always    links:      - db    volumes:      - /home/puzhiwei/docker/nextcloud/config:/var/www/html/config      - /home/puzhiwei/docker/nextcloud/data:/var/www/html/data      - /home/puzhiwei/docker/nextcloud/apps:/var/www/html/custom_apps    environment:      - MYSQL_PASSWORD=      - MYSQL_DATABASE=      - MYSQL_USER=nextcloud      - MYSQL_HOST=db  web:    image: nginx    restart: always    ports:      - 81:80    links:      - app    volumes:      - /home/puzhiwei/docker/nextcloud/nginx/nginx.conf:/etc/nginx/nginx.conf:ro    volumes_from:      - app

mariadb 配置

我主要添加了 Docker 容器到本地文件的映射,为 mariadb 添加了 --skip-innodb-read-only-compressed 启动命令,如果没有这段启动命令,会出现

nextcloud install Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.

的异常。

Nginx 配置

此处首先要到 https://github.com/nextcloud/docker/blob/master/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf 获取需要的Ningx 配置文件,之后设定相应的文件映射。

启动

直接使用 docker-compose up -d 等待镜像下载运行完成即可。

然后访问 http://ip:81 设置管理员账号,完成安装。

踩坑

如何配置 cron 任务

首先在容器中安装需要的软件

# 安装 cronapt updateapt install cron# 安装 vimapt install vim# 启动 cronservice cron start

由于是在 Docker 容器中运行的 Nextcloud,进入docker 容器默认是 root 用户,此时执行 php -f /var/www/html/cron.php 会出现

Console has to be executed with the user that owns the file config/config.phpCurrent user id: 0Owner id of config.php: 33

的异常,因为 cron.php 需要使用 www-data 用户来执行

而 docker 容器中又缺少相应的权限管理工具。

此时我们需要在进入 Nextcloud 镜像之后执行

root@50ce68418e44:/var/www/html# chsh -s /bin/bash www-dataroot@50ce68418e44:/var/www/html# su - www-data

将自己切换到 www-data 用户

然后执行

php -d memory_limit=-1 -f /var/www/html/cron.php --define apc.enable_cli=1

注意此处不加 memory_limit=-1 会出现

Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 438272 bytes) in /var/www/html/3rdparty/composer/autoload_real.php on line 37

的异常。

运行成功后我们就可以配置定时任务了

运行

# 设置 crontab crontab -e

然后添加

*/5 * * * * chsh -s /bin/bash www-data && su - www-data -c "php -d memory_limit=-1 -f /var/www/html/cron.php --define apc.enable_cli=1"

即可完成 Nextcloud 的 cron 配置

更多 cron 配置请参照 Nextcloud 文档:https://docs.nextcloud.com/server/23/admin_manual/configuration_server/background_jobs_configuration.html

版权

本文首发于 https://www.buguagaoshu.com/archives/nextcloudfpmban-zai-dokcerxia-an-zhuang-cai-keng

转载请注明来源

posted @ 2022-03-25 21:15 陕西颜值扛把子 阅读(6) 评论(0) 编辑 收藏 举报
回帖
    张三

    张三 (王者 段位)

    821 积分 (2)粉丝 (41)源码

     

    温馨提示

    亦奇源码

    最新会员