17年开始使用Owncloud,18年换了Nextcloud。
今天发现最近一次安装的Nextcloud的设置概览页面有一个错误和几个警告及建议,于是填坑,强迫症简直不能忍,必须优化到已知的最好状态。分享几个问题的解决办法。



错误1、您的网页服务器未正确设置以解析“/.well-known/caldav”
您的网页服务器未正确设置以解析“/.well-known/carddav”



这个错误排查了很久,网上的很多文章对于我不适用。
确实是这两个路径的伪静态配置问题。最终查阅到了官方的文档:https://docs.nextcloud.com/server/13/admin_manual/installation/nginx.html,注意Nextcloud in the webroot of nginxNextcloud in a subdir of nginx,我的就是在子文件夹中配置的。所以我的解决办法在nextcloud绑定的配置文件中的location块插入以下location块:

location = /.well-known/carddav {
    return 301 $scheme://$host/subfolder_name/remote.php/dav;
}
location = /.well-known/caldav {
    return 301 $scheme://$host/subfolder_name/remote.php/dav;
}

配置好保存并退出,使用nginx -t检查语法有没有错误,出现syntax is oktest is successful的提示说明没问题可以放心大胆的重载nginx服务了:nginx -s reload。nginx不同于apache需要重启程序,nginx更为轻量高效,虽然在处理大型事务等等场景距离apache还有些距离,但是确实是建站首选web server

错误2、数据库中的一些列由于进行长整型转换而缺失。由于在较大的数据表重改变列类型会耗费一些时间,因此程序没有自动对其更改。您可以通过命令行手动执行 “occ db:convert-filecache-bigint” 命令以应用挂起的更改。该操作需要当整个实例变为离线状态后执行。查阅相关文档以获得更多详情。
filecache.mtime
filecache.storage_mtime



该问题的解决确实就是官方所说的那样执行一两个命令即可。但是我遇到了PHP parse error以及版本过低等等错误,最后经过排查小心翼翼卸载了php5.4,当时php7.1也已经安装,通过终端的php -vphpinfo();等函数输出的也都是php7.1,应该是一个很细微地方的配置不对,导致nextcloud使用了旧版本的php。在重新配置好php7.1后遇到了命令找不到的问题(环境变量问题),于是使用软连接ln -s /www/server/php/71/bin/php /usr/local/bin/php,再次执行还是不行,因为PATH中还没有包含这个路径,手动export下也可以。不过我再次设置了一个软连接,ln -s /usr/local/bin/php /usr/bin/php,这次成功执行了php命令。如下图,该问题解决。

数据库中的一些列由于进行长整型转换而缺失,occ db:convert-filecache-bigint 问题解决



错误3、Your web server is not properly set up to resolve “/ocm-provider/”. This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in “.htaccess” for Apache or the provided one in the documentation for Nginx at it’s documentation page. On Nginx those are typically the lines starting with “location ~” that need an update.
还有Your web server is not properly set up to resolve “/ocs-provider/”



这个问题花了最多的时间,中文检索不到多少资料。为配置文件设置location块不顶用。无论怎么配置location地址和return 301,始终无法消除警告。最终还是在官方的论坛找到一篇有用的帖子,解决了问题:

https://help.nextcloud.com/t/your-web-server-is-not-properly-set-up-to-resolve-ocm-provider/48530

图片中圈出来的是对我有效的解决办法。创建一个软链接

原帖的作者应该也写了一篇博客记录这个方法,同样贴出来:https://luvis.se/software/install-nextcloud-on-synology-dsm-6/,感谢这位友人!

在我这就是:

ln -s /www/wwwroot/example.com/subfolder_name/ocm-provider/ /www/wwwroot/example.com
ln -s /www/wwwroot/example.com/subfolder_name/ocs-provider/ /www/wwwroot/example.com

问题解决。回到网页刷新看到所有检测通过,强迫症终于被治愈了。

当时只是换成了英文字体,方便查看错误日志然后搜索之,因为这些错误使用中文检索得到的结果挺少,而且很多质量不如英文。虽然阅读起来稍微吃力些,但是养成这样的习惯也挺好,毕竟英语也不是很差~还可以借此锻炼锻炼


我就分享这些,如果不巧的是你也遇到了一些nextcloud上的错误或警告,可以多检索检索,本篇暂不涉及。如果还有问题欢迎留言。

end.