需求背景
工作多年之后发现有太多的电子资料到处存放。个人电脑是Mac,硬盘都不大,放不了太多东西。并且有时候想随时随地存放一些东西。所有就有了大家一个私有存储的需求
个人休息在家经常喜欢看电影电视剧,所有就有个想法,上班空隙可以下载自己喜欢看的资源,然后晚上或者休息日可以直接在电视上看,这样就想到了通过DLNA服务来和私有云结合起来
效果图
私人存储
PC
手机端
DLNA智能电视
硬件准备
上图是我家的私人机房,是不是很牛逼。哈哈。我们整个系统都搭建在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。如下图
为什么要修改存储目录?
我认为不应该把存储的东西 和 源码 放在一起,因为源码部分可以被误删除,所以为了保证数据的安全要隔离所有私人云数据。
通过修改 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 配置的端口可以通过网页直接访问,会展示一些信息
media_dir 大家看到我配置的路径 是不是就是私人云存储文件的地方。下图是私有云截图
总结
根据上面的操作 ,本人将私人存储 和 智能电视云就都完成了。我就可以在公司,在外面 随时随地的存放东西到家里。家里来亲朋好友了,可以通过电视给大家播放一些视频和图片。