收费的免费的网盘一个个被告知停止服务,怎奈已经离不开它,自建之……
需求:
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
目前已经用上了,不足的是域名后面要加端口号 嘿嘿
相关文章
树莓派系列(十三):根据 CPU 温度之控制散热风扇2017-04-28
树莓派系列(十二):树莓派VPN代理之搭建IKEv2服务器2016-11-29
树莓派系列(十一):树莓派内存之修改swap交换分区大小2016-11-16
树莓派系列(九):系统时间同步之htpdate2016-02-26
树莓派系列(八):PHP之以root权限执行Python GPIO脚本2016-01-16
妈妈再也不用担心我出门忘带钥匙了2016-01-16
树莓派系列(七):搭建BT下载服务器之transmission2015-07-22
使用SyncToy加定时任务实现文件数据同步备份2014-12-10
树莓派系列(六):利用kindle pw2之做终端显示屏2014-12-09
树莓派系列(五):文件服务器之利用树莓派打造个'NAS'2014-11-22