查看: 3720|回复: 0

树莓派搭建个人网盘

[复制链接]
  • TA的每日心情
    开心
    2019-6-25 09:54
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2017-9-4 09:42:31 | 显示全部楼层 |阅读模式
    分享到:
    树莓派的应用可谓是非常的广泛了,如今在国内各种网盘爆炸不靠谱的时代,一切虚伪的网盘都不如自己弄一块硬盘来的实在。但是大容量的硬盘携带不方便,对移动设备来说也不是很友好。所以我打算自己用树莓派搭个网盘。
    材料准备:树莓派3一台,硬盘一块。如果用的是普通机械硬盘需要准备USB转SATA的线,带外接电源的那种。移动硬盘也建议带外部供电的,否则在工作时树莓派的供电可能会不足。(如果在使用时树莓派电源指示灯出现闪烁或熄灭则是负载太大,外围设备一定要外接电源)

    树莓派准备好后,烧写镜像什么的这里就不必多说了,建议使用带图形界面的镜像,之前自己用过不带图形界面的镜像内置的工具也是少的可怜,配置很麻烦。
    镜像准备好后,因为是做网页版本的云盘,所以网页服务器也是必不可少,我个人比较青睐于nginx,所以这里我装的是nginx服务器。
    使用下面的命令来完成nginx和php的安装,因为是个人使用,所以没有用到mysql数据库,因此装不装无所谓。
    sudo apt-get updatesudo apt-get install nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-cgi安装好nginx和php后,默认的网页根目录路径在/var/www下,大家可以根据自己需求修改根目录位置。修改方式为更改/etc/nginx/sites-enabled/default文件里的root /var/www/html;
    接着需要对nginx启用php功能,同样是修改这个文件,在里面加入
    server {    ##....在端口监听等配置后面更改添加下面的内容    if (!-e $request_filename)    {        rewrite ^(.*)$ /index.php$1 last;    }     location / {        index  index.html index.htm index.php default.html default.htm default.php;    }     location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {        access_log  off;        expires 1d;    }     location ~ .*\.php(\/.*)*$ {        fastcgi_split_path_info ^(.+\.php)(/.+)$;        fastcgi_pass unix:/var/run/php5-fpm.sock;        fastcgi_index index.php;        include fastcgi_params;    }}然后service nginx restart重启服务器,可以试着在网页根目录下写一个简单的php文件测试我们服务器是否配置成功。<?phpecho 'hello world';?>
    然后我们需要安装一个web的客户端来对我们的文件进行访问操作,这里我使用KodExplorer资源管理器,这是个(半)开源的软件……因为说它开源其实称不上开源,毕竟也是个商业软件,但是免费版足够个人使用了,而且功能很强大,可以在线编辑代码,在线查看压缩文件等。对于我们这些极客来说还是很友好的。
    首先从github或官网上下载源码进行安装https://kodcloud.com/download.html
    cd /var/www/    ##切换到网页根目录去git clone <a href="https://github.com/kalcaddle/KODExplorer">https://github.com/kalcaddle/KODExplorer</a>然后根据安装说明设置权限为rwx即可。cd /var/www/chmod 777 -R ./*
    当然,到这里还没有结束,我们还需要把硬盘挂载到网盘上。首先我强烈建议如果是新磁盘的话格式化成ext4格式使用,因为这样可以方便的分配权限和读写访问。因为ntfs格式的磁盘在linux需要使用第三方软件来进行访问,效率很低,对树莓派来说负载太重,不建议这样用。
    我这里用的是ext4格式的硬盘,(需要格式化的话先umount卸载掉硬盘,然后使用mkfs.ext4 /dev/sd硬盘对应设备 进行格式化)
    挂载我是自己写了个挂载脚本,添加到/etc/rc.local里开机自启
    脚本内容如下:
    #!/bin/bash##Disk Auto Mount By PokeBoxMDR=/var/www/KodExplorer/data/User/admin/homedebug(){        if [ "$2" == "" ];then                echo -e "\e[34;1m$1\e[0m"        elif [ "$2" == "0" ];then                echo -e "\e[34;1m$1 \e[33;1m[OK]\e[0m"        else        echo -e "\e[34;1m$1 \e[31;1m[ERROR]\e[0m"        fi}find_dev(){        i=0        for DEV in $(ls /dev/sd[a-z][0-9]*)        do                TMP_LAB=$(blkid -o udev -p $DEV | grep 'ID_FS_LABEL=' | sed 's/.*LABEL=//g')                if [ "$TMP_LAB" != "" ];then                        LABEL[$i]=${TMP_LAB}                        DEVTYPE[$i]=$(blkid -o udev -p $DEV | grep 'ID_FS_TYPE=' | sed 's/.*TYPE=//g')                        debug "####$DEV\n{\n\tLABEL=${LABEL[$i]}\n\tTYPE=${DEVTYPE[$i]}\n\ti=$i\n}\n"                        ((i++))                else                        debug "\e[35;1m空标签设备,跳过$DEV"                fi        done        i_max=$i}mount_dev(){        cd $MDR        mkdir -p ${LABEL[@]}        cd ~        for ((i=0;i<i_max;i++))        do                if [[ ${DEVTYPE[$i]} == ext* ]];then                        mount -L ${LABEL[$i]} -t ${DEVTYPE[$i]} $MDR/${LABEL[$i]}                        debug "#EXT ${LABEL[$i]}" $?                else                        mount -L ${LABEL[$i]} -t ${DEVTYPE[$i]} -o rw,umask=002,sync $MDR/${LABEL[$i]}  ##NTFS自己在这里修改挂载的权限                        debug "${LABEL[$i]}" $?                fi        done}while [ "`ls /dev/sd* | wc -l`" == "0" ];do        ##确保有设备存在        echo "wait"        sleep 5donefind_devmount_dev这样,我们就可以在设置好kod的密码后以管理员身份进入磁盘看到我们硬盘里的内容了。(下面是官网demo的截图)


    在线编辑器是最舒服的。当然,这需要配置好相关的权限才能正常读写。
    这些是网页端的访问,当然我们平时更多可能还需要客户端来进行大量文件的处理。客户端这里用的是SFTP协议进行传输。
    大家可以自行使用sftp来进行连接使用。软件这里就不多说了,win、Linux上可以用FileZilla,安卓上可以用ES。
    树莓派上可以对sftp进行限制,限制sftp用户访问的文件路径,防止对系统造成威胁。
    设置方法是这样:
    修改/etc/ssh/sshd_config文件最后Subsystem sftp那些内容为如下内容
    Match User 用户名        ForceCommand internal-sftp        ChrootDirectory /var/www/KodExplorer/data/User/admin/home这样我们就能把用户限定在这个目录下,防止对系统其他文件的访问修改,提高安全性。有公网的朋友可以开放树莓派端口在外网直接访问,没有公网IP的朋友可以自己想办法使用内网穿透进行访问。这样我们就可以随时随地的访问自己的硬盘数据了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 14:47 , Processed in 0.112811 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.