Nextcloud|Nextcloud fpm 版在 Dokcer 下安装踩坑
安装
首先到 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=nextcloudapp:
image: nextcloud:fpm
restart: always
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=dbweb:
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=nextcloudapp:
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=dbweb:
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 任务 首先在容器中安装需要的软件
# 安装 cron
apt update
apt install cron# 安装 vim
apt install vim# 启动 cron
service 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.php
Current user id: 0
Owner id of config.php: 33
的异常,因为 cron.php 需要使用 www-data 用户来执行
而 docker 容器中又缺少相应的权限管理工具。
此时我们需要在进入 Nextcloud 镜像之后执行
root@50ce68418e44:/var/www/html# chsh -s /bin/bash www-data
root@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
【Nextcloud|Nextcloud fpm 版在 Dokcer 下安装踩坑】然后添加
*/5 * * * * chsh -s /bin/bash www-data && su - www-data && 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
转载请注明来源
推荐阅读
- 运维|拥有自己的私有云盘-使用Docker安装nextcloud云盘
- Nginx+PHP-FPM报An|Nginx+PHP-FPM报An error occurred错误
- CGI,FastCGI,PHP-CGI与PHP-FPM
- PHP动态模式和静态模式区别
- 关于php-fpm配置慢日志的问题
- mac|Mac php-fpm启动失败解决
- nginx|nginx php-fpm 运行原理
- php-fpm启动不起来,php-fpm无法启动的一种情况
- 构建lamp(php-fpm方式)
- 烂泥(nginx、php-fpm、mysql用户权限解析)