树莓派系列(十):个人网盘之搭建私有云

2016-11-01 浏览:4485
树莓派系列(十):个人网盘之搭建私有云
评论:(1)复制地址

收费的免费的网盘一个个被告知停止服务,怎奈已经离不开它,自建之……


需求:

1、能通过网页方式存取文件

2、能给定地址后台下载

3、有个手机客户端备份照片啥的


方案:

1、选择靠谱的网盘(虽然我也不知道,iCloud?OneDrive?)

2、购买云服务器自建(感觉云磁盘空间不便宜啊,不差钱这个是不错的候选)

3、购买网络NAS(京东淘宝一大堆,群晖? 推荐这个方案)


介于我现有的设备及没有的预算我的方案如下:

硬件:    小米路由3 + usb移动硬盘 + 树莓派 

             (如果小米路由的ssh打开了就不需要树莓派,打开不保修,我是刚买 唉~)

软件:    OwnCloud  +  Aria2 & YAAW  +  KODExplorer

             (第一个是网盘程序,第二个是离线下载,第三个是整个目录的管理程序 用于访问不在网盘里的文件)


搭建过程这边就不阐述了网上都有很详细的教程,这边说一下我遇到的一些问题

1、因为我的程序是放在树莓派上,而硬盘是插在小米路由上,然后挂载到树莓派上。

    (上次写的搭建nas是插在树莓派上的,这次因为路由器上有云搬家插件,好把我之前的云文件同步下来)

    这就涉及到owncloud里的data目录权限报错问题(0777或0770)

解:挂载时加上用户及权限指定(其中uid=33的是我的www-data用户uid,/etc/passwd中有对应)

mount -t cifs -o uid=33,rw,dir_mode=0770,file_mode=0770,password= //192.168.31.1/XiaoMi-usb0 /mnt/MiStore

另:可以修改owncloud目录权限检查程序(不建议怎么做,可以做个特殊解决办法),修改方法如下:

    编辑owncloud/lib/private/legacy/util.php  (我用的版本是9)

    在 public static function checkDataDirectoryPermissions($dataDirectory) 函数内

    $errors = array(); 下面添加一句   return $errors;   即可


2、在使用KODExplorer时,我发现它居然能直接访问根目录,感觉太不安全了,需要对php的目录做一些限制。

    (以下三种设置方法均需要PHP版本为5.3或者以上)

方法1)在Nginx配置文件中加入

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/:/proc/";

通常nginx的站点配置文件里用了include fastcgi.conf;,这样的,把这行加在fastcgi.conf里就OK了。

如果某个站点需要单独设置额外的目录,把上面的代码写在include fastcgi.conf;这行下面就OK了,会把fastcgi.conf中的设置覆盖掉。

这种方式的设置需要重启nginx后生效。


方法2)在php.ini中加入:

[HOST=www.xxx.com]
open_basedir=/home/www/www.xxx.com:/tmp/:/proc/
[PATH=/home/www/www.xxx.com]
open_basedir=/home/www/www.xxx.com:/tmp/:/proc/

这种方式的设置需要重启php-fpm后生效。


方法3)在网站根目录下创建.user.ini并写入:

open_basedir=/home/www/www.xxx.com:/tmp/:/proc/

这种方式不需要重启nginx或php-fpm服务。安全起见应当取消掉.user.ini文件的写权限。

关于.user.ini文件的详细说明:http://php.net/manual/zh/configuration.file.per-user.php


设置open_basedir的同时最好禁止下执行命令的函数,比如:

shell_exec('ls /etc')仍然查看到/etc目录的文件列表

shell_exec('cat /etc/passwd')仍可查看到/etc/passwd文件的内容

建议禁止的函数如下:

disable_functions = pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, eval, popen, passthru, exec, system, shell_exec, proc_open, proc_get_status, chroot, chgrp, chown, ini_alter, ini_restore, dl, pfsockopen, openlog, syslog, readlink, symlink, popepassthru, stream_socket_server, fsocket, chdir



目前已经用上了,不足的是域名后面要加端口号 嘿嘿

评论:(1)复制地址
发布:zpblog | 分类:Raspberry Pi | Tags:树莓派 raspberry pi NAS

评论列表:

加气块设备

评论于2017-07-20 09:41:01
博主很专业 - 回复该评论

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。