最近更新于 2024-09-22 22:05
环境:
- 树莓派 Debian 12
- Nextcloud 30.0.0
- PHP 8.2.20
我在按照 Nextcloud (后简称 NC)官方文档的指引配置 redis 后,在访问后台设置的时候会出现“服务器内部错误”,但是访问前台网盘没有问题
后面发现问题是出在套接字文件的权限上,官方文档没有给详细的配置说明,遗漏的地方就造成了问题
安装 redis 后,默认是提供的 tcp 访问的方式,但是 NC 文档又建议如果 NC 和 redis 部署在同一台服务器上就使用套接字的方式
就需要修改 redis 的配置文件,启用套接字,配置文件中是写好模板的,解开注释就行,其中有一个配置指定了套接字文件的权限,模板是给的 700,redis 套接字文件的用户和用户组是 redis。
而我这边 Nextcloud 是基于 Nginx 和 PHP 运行,用户和用户组是 www-data。redis 用户下 700 权限则只有 redis 用户可以访问套接字,也就是 Nextcloud 此时的权限是不能访问 redis 套接字,但是配置里又写了连接这个套接字,所以就出现了标题说的问题。
还有一种可能的情况是,权限都配置正确了,但是套接字路径给错了,访问不到给的套接字文件也会出现这个问题。
解决思路有两种:
第一种,只改 redis 配置,设置权限 700 改成 777,这样其它用户也能拥有 redis 套接字完整的权限,但是安全性不好,谁都能碰这个套接字,不建议。
第二种,先改 redis 配置,设置权限 700 改为 770,不给其它用户组权限,但给 redis 同组用户权限,然后把 www-data 用户添加到 redis 用户组,这样 www-data 用户也能访问 redis 套接字文件。参考我这里的实践步骤:https://blog.iyatt.com/?p=17296#%E9%85%8D%E7%BD%AE%E5%86%85%E5%AD%98%E7%BC%93%E5%AD%98