众所周知,当前使用最广泛的云盘是百度网盘,而百度网盘下载的龟速让人难以忍受,再加上百度各种其他的骚操作,让人边骂还不得不用,别无选择。现在阿里云盘也入局了,说的很美好,但是也和百度一个德行。其实各种体验问题都可以容忍,最无法忍受的是数据安全,我们上传到百度网盘的每一个文件,都已经被备份了n份了,尽管有些文件已经被我们删除了,但是这些文件仍然在百度的服务器里,个人隐私极不安全;还有一个非常严重的问题是自己好不容易收藏的电影,结果变成了8s的教育片。

既然这么多问题,那我就不用你了,那要存储文件怎么办,可以自己部署一个私有云盘呀。
目前免费的比较好的私有云盘有: 国外的有Nextcloud,ownCloud,这两个出自一脉,免费版的基本功能都有,但有一个致命的弱点是慢,非常占用服务器资源,网上一堆提高性能的攻略都没用(可能我水平不行,没有get到点);国内的有可道云,免费版的也是基本功能都有,很多想用的功能都需要收费。通过使用,发现这些云盘都有一个致命的问题: 它们的文件展示逻辑和windows文件资源管理器一样,一次性显示文件夹里的所有文件,没有分页显示,也就是说: 如果一个文件夹里有1万个图片,它会把1万个图片全部显示出来,这会导致服务器磁盘IO达到100%,也会导致浏览器卡爆,甚至崩溃,严重影响使用体验

功能

  • 文件夹的新建、删除、重命名、移动、导出
  • 文件上传、下载、新建、删除、移动、重命名、分享
  • 图片、音视频、pdf文件在线预览功能
  • markdown文档在线预览和编辑功能
  • 支持权限控制 (使用django自带的权限控制系统)
  • 支持集群部署
  • 支持分布式储存

技术选型

  • 系统框架:django
  • 数据库:django支持的所有关系型数据库
  • 文件存储:MinIO

系统架构

部署

1、克隆 git clone https://github.com/leeyoshinari/mycloud.git

2、进入目录 cd mycloud,修改配置文件config.conf

3、部署MinIO。个人使用不建议按照官方文档部署,直接在网上查资料,一条命令就可以启动;

4、初始化数据库,依次执行下面命令;

python3 manage.py migrate
python3 manage.py makemigrations myfiles
python3 manage.py sqlmigrate myfiles 0001
python3 manage.py migrate

5、数据初始化,主要是初始化根目录数据;

python3 manage.py loaddata initdata.json

6、创建管理员账号;

python3 manage.py createsuperuser

7、处理admin页面的静态文件;

python3 manage.py collectstatic

8、修改uwsgi.ini,只需修改端口号和项目所在目录即可;

9、部署nginx,location相关配置如下:(ps: 下面列出的配置中的mycloud是url上下文,即url前缀,可根据自己需要修改)

(1)静态请求:通过nginx直接访问静态文件,配置静态文件路径

location /mycloud/static {alias /home/mycloud/myfiles/static;
}

(2)动态请求:配置uwsgi的端口

location /mycloud {include uwsgi_params;uwsgi_pass 127.0.0.1:12020;uwsgi_param HTTP_Host $proxy_host;uwsgi_param HTTP_X-Real-IP $remote_addr;proxy_set_header HTTP_X-Forwarded-For $proxy_add_x_forwarded_for;
}

(3)访问文件系统:配置MinIO的端口

location /mycloud/getFile/ {proxy_pass  http://127.0.0.1:9000/;proxy_set_header Host $proxy_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

通常nginx会限制请求体大小,需要增加配置client_max_body_size 4096M;,还有其他超时时间的配置,可自行上网查找资料修改;

10、启动uwsgi

uwsgi uwsgi.ini

11、访问页面,url是 http://ip:port/上下文

12、访问权限控制页面,url是 http://ip:port/上下文/admin

13、如果想把磁盘上已有的文件放入云盘,可通过调用接口 file/uploadByPath?folderId=目录ID&path=文件路径 实现将磁盘文件上传到云盘。

使用 Django 实现私有云盘相关推荐

  1. nextcloud网站不安全_教你搭建私有云盘,简单快速,完全傻瓜式!不限速,永久有效!...

    免费的云盘服务有很多,但是总感觉把重要文件存在上面不安全,动不动就跑路或者限速. 辛辛苦苦收集的学习资料,一夜直接可能就会付诸东流. 最稳妥的方式是存放在本地硬盘中,但是要进行共享或者不同设备之间进行 ...

  2. 百度云盘云知梦php_教你搭建私有云盘,简单快速,完全傻瓜式!不限速,永久有效!...

    免费的云盘服务有很多,但是总感觉把重要文件存在上面不安全,动不动就跑路或者限速. 辛辛苦苦收集的学习资料,一夜直接可能就会付诸东流. 最稳妥的方式是存放在本地硬盘中,但是要进行共享或者不同设备之间进行 ...

  3. 开源私有云盘python_用Seafile不花钱搭建高安全性局域网私有云盘

    用Seafile不花钱搭建高安全性局域网私有云盘 2020-02-25 19:37:25 13点赞 83收藏 6评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击 ...

  4. 原来路由器的USB接口这么强大!这样设置,路由器秒变私有云盘

    路由器现在已经是家家标配的一款产品了,尤其是现在的4G网络时代,如果没有WiFi的话,使用移动流量还是有点吃不消的,但现在的路由器我们基本上都只是用来连接WiFi上网而已,可是你知道吗路由器还有许多你 ...

  5. 本地搭建私有云盘:虚拟机安装群晖NAS 1/5

    系列文章 本地搭建私有云盘:虚拟机安装群晖NAS 1/5 本地搭建私有云盘:安装Synology Assistant 2/5 本地搭建私有云盘:群晖系统存储空间设置 3/5 本地搭建私有云盘设定:设置 ...

  6. 手把手教你搭建入门级免费私有云盘NAS——基于syncthing——基础篇(树莓派、PC机)

    目录 一.电脑端的 NAS 部署与测试(syncthing) 二.树莓派部署 24H 不间断运行 NAS--作为主同步服务端器(syncthing) 三.扩展的同步拓扑 四.代码同步的选择(GIT/S ...

  7. 不买NAS搭建私有云盘:虚拟机安装群晖 1-5

    系列文章 ​​​​​​​不买NAS搭建私有云盘:虚拟机安装群晖 1-5 不买NAS搭建私有云盘:安装Synology Assistant 2-5 不买NAS搭建私有云盘:群晖系统存储空间设置 3-5 ...

  8. Nextcloud私有云 - 零基础搭建私有云盘

    文章目录 摘要 视频教程 1. 环境搭建 2. 测试局域网访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4 配置固定http公网地址 4.1 ...

  9. linux同步webdav,Linux系统使用WebDAV自动挂载私有云盘

    穿越派·派盘 ▹ 专属私有!个人电脑秒变云盘,云盘数据保存在个人电脑本地,安全防泄密. ▹ 全平台远程访问,手机秒扩容,不限空间.不限网速. ▹ 支持各种AAP中的WebDAV协议,支持数据同步备份. ...

  10. 局域网限速软件_教你如何自建不限速私有云盘

    烛 花 火 素材收集狂 蒲公英智能组件网 (软件来源于网络,侵犯到你的权益,联系世界qq删除) 反馈网址:http://huaxiazhuhuo.ys168.com/ 欢迎各位遇到问题及时反馈. 如有 ...

最新文章

  1. Tim Berners-Lee重新分散的新Web SOLID简介
  2. 武警五防一体化是什么?五防光端机产品介绍!
  3. Java通过反射机制修改类中的私有属性的值
  4. java cassandra连接池_Cassandra Java驱动程序的最佳设置只能写入本地数据中心
  5. 【直观理解】粒子滤波 原理及实现
  6. 《Fortran95程序设计》(彭国伦)
  7. python爬虫小项目价格_爬虫项目怎么收费?
  8. 软件设计师和软件评测师有什么区别?若想从事软件开发方面,哪个更适合?
  9. Exploring and Distilling Posterior and Prior Knowledge for Radiology Report Generation
  10. js点击第三方广告添加点击事件
  11. VM技术(一)NES模拟器VM综述
  12. 全向轮机器人运动学分析
  13. Codeforces Round #521 (Div. 3) B. Disturbed People 思维
  14. GPU Raid卡加持!PBlaze6 6920挑战8盘Raid5
  15. C语言程序设计——用户密码输入与判断
  16. 混合高斯模型(GMM)推导及实现
  17. HP打印机显示状态出错
  18. AI艺术简史·未来已来,只是分布不均而已…… [ 元宇宙创作者指南 ]
  19. mysql建库1044_Mysql创建数据库时提示Error 1044
  20. 大工16计算机应用基础2,大工20秋《计算机应用基础》在线测试2

热门文章

  1. 后台得到ajax传来的参数,几种ajax传参数到后台获取的方法
  2. [BZOJ3772]精神污染(dfs序+主席树)
  3. 你知道 biangbiang 面和编码有什么关系吗?万字长文,手拉手带你一步步认识编码
  4. 清华月赛 大吉大利晚上吃鸡题解
  5. BZOJ5109:[CodePlus 2017]大吉大利,晚上吃鸡! (最短路+Hash表+二进制压位)
  6. 怎么逼自己 成为一个上进的人
  7. An exception occurred while acquiring a poolable resource. Will retry.
  8. 七大江河水系--长江(二)
  9. react 使用 swiper
  10. 知识星球有必要加入吗?