owncloud配置中的几个错误以及解决步骤
in owncloud with 2 comments

owncloud配置中的几个错误以及解决步骤

in owncloud with 2 comments

owncloud简介

ownCloud是一个自由且开源的个人云存储解决方案,包括两个部分:服务器和客户端。ownCloud 最早由KDE开发者Frank
Karlitschek于2010年一月创建,目标是成为商业云服务提供商的替代。与商业云存储服务不同,ownCloud可以自由获取无需付费,但相应地,用户必须自行架设
ownCloud的服务器,这需要一点技术。不过也是有商业云存储服务提供商使用 ownCloud 作为服务器,例如奥地利商的 OwnCube。

owncloud配置步骤

这段时间入了owncloud的坑,我一开始很纳闷的一点就是网上很多配置owncloud的教程,一找一大堆。但是遇到bug的解决方案非常少。原因吧其实就是因为官方文档说明的很详细了已经,每一种情况都有对应的解决方案,官方文档中都能找得到,但是问题在于官方文档是英文的,没有中文文档,很少,中文社区也不多,导致很多人安装不上,找不到解决方案就放弃了。先上一张我刚安装完遇到的问题截图吧。

wget https://download.owncloud.org/community/owncloud-9.1.4.tar.bz2
tar -jxvf owncloud-9.1.4.tar.bz2
cp -r owncloud/* /www/owncloud/
chmod -R 0777 /www/owncloud/   

然后打开站点,配置用户名密码数据库信息,之后一切顺利,进入到该页面:
oc01.jpg

首先映入眼帘的就是那个黄色的提示框,应该都能理解这种感受,看到bug就有种浑身难受的劲,我就点进去看了。
oc02.jpg
完犊子,一眼过去六七个bug,这我能忍,唉,既然入了这个坑就去一个一个调吧。

BUG详解

getenv("PATH")返回一个空值

这个还好理解,getenv没有开启或者缺少配置。
首先找到PHP.INI中的getenv项,看配置是否正确,不放心或看不懂就都加上
oc03.jpg
更改完毕,刷新页面。
???
timg.jpg
还是不行,看官方文档
oc04.jpg
初步判断php.ini肯定没问题,因为服务器使用了PHP-FPM,大概就是fpm的配置问题吧。果然官方文档中找到了关于fpm的配置。
php-fpm Configuration Notes

文档中是这样写的:

Usually, you will find some or all of the environment variables
already in the file, but commented out like this:

;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

Uncomment the appropriate existing entries. Then run printenv PATH to confirm your paths, for
example: $ printenv PATH

/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/

大概意思就是让你找到你的FPM配置文件,将env[PATH]等项打开(去掉分号),然后找到你系统的环境变量,粘贴到PATH项后。
OK,重启fpm,nginx。第一个bug解决。

PHP模块'文件信息'丢失

这个简单,一般找到你的php.ini中,找到;extension=php_fileinfo.dll,去掉前面的分号,重启fpm,OK。

一些文件没有通过完整性检查

一些文件没有通过完整性检查。如何解决此问题的详细信息可以查看我们的 文档. (无效文件列表… / 重新扫描…)

感情所有的重要文件信息都还得检测一遍,确保没有被修改过或删除。点开看了一下,是这样的:

oc05.jpg

FILE_MISSING,EXTRA_FILE。保险起见还是看看官方文档吧。

oc06.jpg

刚开始的时候我其实并没有看官方文档,加上我的环境在项目中会自带一个.user.ini文件,还遇到了INVALID_HASH的错误,文件的HASH信息保存在/core/signature.json,和我环境生成的.user.ini文件HASH不一致。这个问题折腾了我一晚上没搞定,我甚至都想怎么样去更改文件的HASH值去解决这个问题了,试了不行,更改signature.json中保存的HASH信息,直接就进不去站点了。

最后其实我发现是我傻逼了,傻逼在一开始解压完之后复制过去的时候cp -r owncloud/* /www/owncloud/,解压出来的文件夹中有两个隐藏文件我根本就没看到,那两个文件其实就是.htaccess和.user.ini,原原本本的复制过去就可以了。

.htaccess 文件不工作

你的数据目录和你的文件可能从互联网被访问到。.htaccess
文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。

上面我把那两个隐藏的文件.htaccess和.user.ini复制到项目根目录下后这个问题就自动解决了。(一定要原版的,没了就重新从压缩包里找)

/dev/urandom无法被php读取

一般的话只要上面两个步骤尤其是项目根目录下的.htaccess正常工作,这里不会出问题,如果还是有问题:
查看文档中是这样说的:

ownCloud uses a RFC 4086 (“Randomness Requirements for Security”)
compliant mixer to generate cryptographically secure pseudo-random

  1. This means that when generating a random number ownCloud will

  2. multiple random numbers from different sources and derive from

these the final random number.

The random number generation also tries to request random numbers from
/dev/urandom, thus it is highly recommended to configure your setup in
such a way that PHP is able to read random data from it.

When having an open_basedir configured within your php.ini file, make sure to include /dev/urandom.

大概意思就是让你配置php的open_basedir项支持/dev/urandom
找到php.ini,找到open_basedir项,去掉分号,等号后面加上/dev/。就可以了。

配置服务器强制使用 HTTPS

网上教程很多,这里不再赘述,不想花钱或者只是自己用的话,就自己配置SSL就好了。一百度一大堆,

别忘了配置HSTS,在nginx配置文件中添加如下语句:

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; 你的域名前缀";

总结

通过这两天捣鼓owncloud,我的第一感觉就是,安全性相对来说已经很可以了。

其次自己用或和几个朋友一起用的话需求基本都能满足,而且他还有很多的插件可以添加,这个我暂时还没怎么用,先不评价。分享功能、webdav什么的有待去探索。好像还有PC和手机端的客户端,安卓的客户端在谷歌商店还收费,个人感觉还不如web版的好用。

还有就是owncloud的官方文档已经包含了你可能出的绝大部分错误以及解决办法,甚至连服务器的配置他都有详细的说明,所以善用官方文档以及善用谷歌翻译(其实就是看不懂英文(╯‵□′)╯︵┻━┻)。

还想折腾owncloud配合反向代理实现家里的电脑当网盘使,算了,过段时间再折腾吧。

Comments are closed.
  1. 吵吵

    不错噢小伙子

    1. @吵吵

      。。