Owncloud已经使用了3个多月了,使用体验相当棒,需要的功能都满足了。这不官方又出了新版本,本来以为点击升级就可以在线升级的,但是遇到了几个坑,跟大家分享下。
先说说情况,配置基本上默认安装,部署了https,外网通过nat映射出去的。
第一个坑就是点击“更新管理器”后,提示“cURL error 7: couldn’t connect to host ”错误:
首先怀疑网络设置问题,到升级服务器的网络不通,ping了下域名发现网络没问题啊,难道升级网络被墙了?没办法开始分析代码。这里不得不吐槽下,目前Owncloud用的php的这种架构确实方便开发,但是复杂了很多,特别是众多依赖的调用,对于这种底层些的问题分析起来麻烦好多。最后到了guzzlehttp上,就没有再继续深入,不过这里发现curl访问的并不是外面的网络,而是自己Owncloud的服务,这就有意思了,Owncloud自己访问自己不通。问题显而易见,nat的问题,至于为什么会这样,跟nat的原理有关,这个又可以写一篇文章了,这里就不在多说。猜测到了原因,解决也很好解决,直接通过内网ip访问,通过。
第二个坑curl无法访问ssl,提示证书不对。
这个是证书的问题了,虽然证书是let’s encrypt签发的有效证书,但是内网的ip没法加进去了,而Owncloud默认会检测证书的有效性,虽然有文章写的默认是不检测。这个是在guzzlehttp里面改,是他默认检测了,只要把verify的true改成false就可以了。
位置:html/updater/vendor/guzzlehttp/guzzle/src/Client.php
第三个坑一直处于维护模式,没任何动静了。
提示升级就吃饭去了,结果吃完饭刷新后还是同样的页面,看样子又跪了。web开发工具查看有查询进程,后台没死。只不过未知原因升级没成功。查看data目录下面的日志及升级日志文件,也没有明显错误。使用下面的命令退出维护:
cd /var/www/html/owncloud/
sudo -u php-fpm php occ maintenance:mode –on
执行后报错有升级,应用商店出问题了,给出了开启命令,使用开启命令打开应用商店。然后再执行命令行的升级命令
sudo -u php-fpm php occ upgrade
没有报错了,一切顺利。刷新web页面,正常了。一次惊险的升级,有那么一会认为Owncloud挂掉了。还好能继续用了,以后升级还得用命令行啊,web页面怕了。
另外,日志的时间是0时区的,真心不好看啊,修改命令如下:
sudo -u php-fpm php occ config:system:set logtimezone –value=”Asia/Shanghai”