需求背景

  • 工作多年之后发现有太多的电子资料到处存放。个人电脑是Mac,硬盘都不大,放不了太多东西。并且有时候想随时随地存放一些东西。所有就有了大家一个私有存储的需求

  • 个人休息在家经常喜欢看电影电视剧,所有就有个想法,上班空隙可以下载自己喜欢看的资源,然后晚上或者休息日可以直接在电视上看,这样就想到了通过DLNA服务来和私有云结合起来

效果图

私人存储

PC


手机端


600


DLNA智能电视






硬件准备

600


上图是我家的私人机房,是不是很牛逼。哈哈。我们整个系统都搭建在Mini PC(如果只是个人测试可以随便搞个虚拟机就行了)上,非常小。适合放在家里。本人在京东购买的,有需要的可以私聊具体信息。


硬件信息如下

操作系统:Ubuntu 18.04

硬件配置:8G内存 + 1T机械硬盘 + 4个CPU

环境:nginx + fpm

私人云:NextCloud

nextcloud简介

nextcloud 是一个php开发的软件,官网地址:https://nextcloud.com/  。官网提供app方便移动上传。同时PC端提供了大量的插件方便扩展。


php源码下载地址:https://nextcloud.com/install/# ,下载server端的。

环境配置

#安装nginx
sudo apt-get install nginx

#安装php-fpm 和 php 扩展。本人版本是7.2。
sudo apt-get install -y php7.2-fpm php7.2-mbstring php7.2-soap 
php7.2-zip php7.2-xmlrpc php7.2-xml  php7.2-readline php7.2-opcache 
php7.2-mysql  php7.2-json php7.2-gd  php7.2-curl 
php7.2-common php7.2-cli php7.2-cgi  

#安装数据库
sudo apt-get install mysql-server mysql-client
#nginx 虚拟主机的配置内容

upstream php-handler {
    server 127.0.0.1:9001;
}

server {
    listen 80;
    listen 10000;
    server_name  www.54php.cn;
    root /data/xxxx/yyyy/nextcloud;
    index  index.php index.html;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

	
    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }


    location ~ \.(?:css|js|woff|svg|gif)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=15778463";
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        # Optional: Don't log access to assets
        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }
}


然后通过访问域名 第一次会 进入安装页面,大家填写具体信息就好了

配置文件优化

文件存储目录更改,默认存储在源码目录 data 目录。例如你的源码 /data/xxxx/yyyy/nextcloud 。

那么存储目录就是 /data/xxxx/yyyy/nextcloud/data。如下图


600


为什么要修改存储目录?

    我认为不应该把存储的东西 和 源码 放在一起,因为源码部分可以被误删除,所以为了保证数据的安全要隔离所有私人云数据。

    通过修改 config/config.php 中的 datadirectory ,例如我的就是

'datadirectory' => '/data/nextcloud_data',


大家注意这个 存放目录,接下来的DLNA 智能电视云就从这里来的。这样我就把存放的文件 和 php源码隔离开了。后面我做备份保证数据安全也好做了。

智能电视云:DLNA

智能电视

现在基本上家家都换上了智能电视,那么什么是智能电视?举个手机的例子,以前我前两个手机都是国产的普通手机,后来进入了智能手机时代。同理 电视也是一样,就是一个安装了操作系统的电视。可以理解为一个显示屏很大的电脑。

安装服务

sudo apt-get install minidlna

配置文件描述和优化

#文件路径 /etc/minidlna.conf
#port 服务端口,默认为8200
#media_dir 媒体目录可以设置多个,如:media_dir=V,/noah/videos(逗号前为类型标识:A音频,P图片,V视频)
#friendly_name	服务名称,在其它设备中看到的名称
#inotify 设置为true,将自动发现媒体目录中的新文件

#我的配置如下
port=8200
friendly_name=NasDLNA  #认真看上面的截图,是不是就是显示的名称
inotify=yes
media_dir=V,/data/nextcloud_data/xxxxx/files/movie/bt
media_dir=V,/data/nextcloud_data/xxxxx/files/movie/大视频


重点讲解下 media_dir 和 port 。

port 配置的端口可以通过网页直接访问,会展示一些信息


11.png

media_dir 大家看到我配置的路径 是不是就是私人云存储文件的地方。下图是私有云截图


600


总结

根据上面的操作 ,本人将私人存储 和 智能电视云就都完成了。我就可以在公司,在外面 随时随地的存放东西到家里。家里来亲朋好友了,可以通过电视给大家播放一些视频和图片。