NextCloud疑难杂症

更新系统软件包后

NextCloud输入正确的账号密码都登录不上去

原因是webphp nginx/.../php/session/不是同一个用户

解决芳芳就是切换成统一用户即可

find / -name session
/var/lib/php/session
/usr/include/php/ext/session
/usr/include/php-zts/php/ext/session

查找到三个session,/var/lib/php/session 是用于存储 PHP 会话文件的目录,而 /usr/include/php/ext/session 和 /usr/include/php-zts/php/ext/session 是用于 PHP session 扩展的头文件目录,分别适用于非多线程和多线程安全的 PHP 环境。

ls -l /var/lib/php/
drwxrwx---. 3 root  apache   46 Oct 25 03:00 opcache
drwxr-xr-x. 2 root  root    171 Oct 27 10:15 peclxml
drwxrwx---. 2 root apache  4096 Oct 27 20:53 session
drwxrwx---. 2 root  apache    6 Oct 25 03:00 wsdlcache

修改 /var/lib/php/session 所属权限

chmod nginx:nginx /var/lib/php/session

ls -l /var/lib/php/
drwxrwx---. 3 root  apache   46 Oct 25 03:00 opcache
drwxr-xr-x. 2 root  root    171 Oct 27 10:15 peclxml
drwxrwx---. 2 nginx nginx  4096 Oct 27 20:53 session

Nginx服务启动不了

系统更新后Nginx启动失败

journalctl -u nginx.service 中的日志为:

Starting The nginx HTTP and reverse proxy server...
nginx[2505]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx[2505]: nginx: [emerg] open() "/var/log/onlyoffice/documentserver/nginx.error.log" failed (13: Permission denied)
nginx[2505]: nginx: configuration file /etc/nginx/nginx.conf test failed
systemd[1]: nginx.service: Control process exited, code=exited status=1
systemd[1]: nginx.service: Failed with result 'exit-code'.
systemd[1]: Failed to start The nginx HTTP and reverse proxy server.

是由于 Nginx 没有足够的权限来访问日志文件 /var/log/onlyoffice/documentserver/nginx.error.log 导致的。

检查日志文件权限:ls -l /var/log/onlyoffice/documentserver/nginx.error.log 正常

检查SELinux 上下文:ls -Z /var/log/onlyoffice/documentserver/nginx.error.log

发现没有 httpd_log_t 类型标记

使用命令更正为正确的上下文:sudo restorecon -v /var/log/onlyoffice/documentserver/nginx.error.log

为能修正,尝试添加一个自定义的 SELinux 策略来允许 Nginx 访问日志文件

sudo semanage fcontext -a -t httpd_log_t "/var/log/onlyoffice(/.*)?"
sudo restorecon -R -v /var/log/onlyoffice

再次检查SELinux 上下文:ls -Z /var/log/onlyoffice/documentserver/nginx.error.log

已设置 httpd_log_t 类型标记

sudo systemctl restart nginx 成功重启Nginx服务

OnlyOffice更新后连接失败

使用自签证书时,更新 OnlyOffice 后会覆盖 /etc/onlyoffice/documentserver/default.json 的配置,导致 禁用证书验证 的配置失效,需要从新配置。

OnlyOffice关闭证书验证(NextCloud使用自签证书时)

修改配置关闭证书验证

vim /etc/onlyoffice/documentserver/default.json
# 修改如下
"rejectUnauthorized": false

重启服务器

reboot