宝塔面板配合docker部署nextcloud并使用php-fpm方式
宝塔面板配置
- 新建网站和数据库(字符集选utf8mb4),php随便选个就行随后会替换配置。
- 修改新建的数据库访问权限为所有人或指定IP并开放防火墙端口,否则一会从容器内无法访问。
- 在
/www/server/nginx/conf
新建php-fpm.conf
文件内容为:location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; include fastcgi.conf; include pathinfo.conf; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; }
- 在网站管理,站点设置
替换:
为:#PHP-INFO-START PHP引用配置,可以注释或修改 include enable-php-74.conf; #PHP-INFO-END
并添加:#PHP-INFO-START PHP引用配置,可以注释或修改 include php-fpm.conf; #PHP-INFO-END
rewrite /.well-known/carddav /remote.php/dav permanent; rewrite /.well-known/caldav /remote.php/dav permanent;
部署容器
- 执行
nextcloud_fpm与nc19fpm可以自定义docker run -itd -p 9001:9000 \ -v nextcloud_fpm:/var/www/html \ --restart=always \ --name nc19fpm nextcloud:19-fpm
- 挂载容器卷到网站根目录
mount -B 容器卷目录/nextcloud_fpm/_data /www/wwwroot/网站目录
完成部署
- 访问网站
- 填写管理员账户名称与密码
- 数据库选择mysql,用户名,密码,数据库名称按添加网站时的设置填写,数据库地址可以填主机IP或172.17.0.1。
- 进入nextcloud后查看设置->概览->安全与设置警告,根据提示修复数据库错误。
- 如果提示无法访问外网是因为宿主机没有打开网络转发,通过以下操作打开:
firewall-cmd --zone=public --add-masquerade --permanent firewall-cmd --reload systemctl restart docker
配置ssl使用https访问
宝塔很容易可以配置证书实现https访问,只是如果非80,443端口访问需要配置:
- 宝塔网站管理->设置->配置文件修改:
listen 443 ssl http2;
为listen 你ssl使用的端口 ssl http2;
- 修改
容器卷目录下/config/config.php
文件添加可信url或删除原url指定端口。
可信url配置项为:'trusted_domains' => array ( 0 => 'your_url:your_port', ),
配置使用宿主机redis
宿主机配置:
- 使用宝塔安装redis。
- redis设置->性能调整,修改绑定IP为
127.0.0.1 172.17.0.1
可以同时被本机和容器使用。(这里注意绑定IP不是使用者IP是redis本机IP,没有被绑定的本机IP不能被连接。) - 开放防火墙
6379
端口。
nextcloud配置:
- 找到容器卷下的
config
目录,这里不要修改config.php
因为redis配置项会被apcu.config.php
文件内容覆盖,所以直接修改apcu.config.php
文件内容为:
保存不需要重启刷新测试一下是不是快了很多:)<?php $CONFIG = array ( 'memcache.local' => '\OC\Memcache\Redis', 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array ( 'host' => '172.17.0.1', 'port' => 6379, ), );
修改最大上传文件大小
如果上传文件出错就尝试上传1M以内文件,如果1M以内文件可以正常上传说明出错原因大概率是限制了最大上传文件大小。
- 修改nginx配置文件在
server {
块添加client_max_body_size 1024m;
。 - 新建
upload.ini
文件内容如下:
然后执行(内容自行替换):upload_max_filesize=1024M post_max_size=1024M
docker cp 文件路径/upload.ini 容器名称或ID:/usr/local/etc/php/conf.d/
- 重启容器和nginx。