一、项目介绍
先附上项目Github地址https://github.com/82457097/CloudDisk;
这是我在网上找到的一个项目,觉得不错就模仿着做了一下~
分布式网络云盘,其中分布式是指的分布式存储系统FastDFS,也是一个开源项目,没有做很深的研究,大概了解了一下,可以看我的这篇博客介绍fastDFS分布式文件系统介绍和安装;然后在利用ngnix反向代理服务器,接收并处理用户的请求,其中还使用了FastCGI+spawn-fcgi配合nginx工作;
然后呢还用到了MySQL和Redis数据库,其中MySQL用于存储文件的信息,Redis呢主要用于存储用户注册登录之类的鉴权信息,这一块我还没有实现~目前呢只实现了一些基本的文件上传下载等功能。
二、项目架构
项目架构的话先看一张我扒来的图吧~不是很清楚。
图上的内容就是该项目的组网架构,主要工作流程是用户通过浏览器(或者客户端)发送操作请求到web服务器,也就是由nginx反向代理的web服务器。然后fastCGI+spawn-fcgi模块创建进程来接收通过web服务器而来的用户请求,并交由fastDFS文件系统处理,并返回处理后的结果给web服务器,web服务器再将结果展示给用户。
三、项目准备
该项目需要一个Linux服务器,推荐阿里云,环境搞坏了可以直接重装系统,分分钟就好了,很节约时间,哈哈~
我这里只列一下需要安装哪些组件,后面我会把整理好的安装包全部传到GitHub里面~
- nginx version: nginx/1.16.1 (nginx可以直接去官网下载www.nginx.org,很方便,不过要注意一下版本,版本不能比1.16.1高)
- 关于nginx的介绍
- fastdfs (项目GitHub地址https://github.com/happyfish100)
- 关于fastDFS的介绍
- fastCGI (项目GitHub地址https://github.com/FastCGI-Archives/FastCGI.com)
- fastCGI的工作原理
- spawn-fcgi 下载地址http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/spawn-fcgi-1.6.4.tar.gz
- fastdfs-nginx-module 项目GitHub地址https://github.com/happyfish100/fastdfs-nginx-module
- MySQL apt或者yum就行
- Redis 同上
四、环境搭建
环境搭建这一块,我之前的文章已经总结好了,按顺序一个一个装就行了~
- nginx安装
- fastDFS安装
- fastdfs-nginx-module安装这个是重点!!!一定要配置好!!!
- fastCGI安装
- spawn-fcgi安装:下载好直接解压./configure然后make和makeinstall就OK
- MySQL安装
- Redis安装
五、环境测试
搭建好环境之后,就可以测试一下环境是否没有问题了。
- 我们要更改一下nginx配置文件测试fastcgi模块
$ cd /usr/local/nginx/conf/
$ vim nginx.conf
- 加一个测试location
location /test {
fastcgi_pass 127.0.0.1:7890; //记住这个端口号7890
include fastcgi.conf;
}
- 然后编译src中的test.c
$ gcc test.c -o test.cgi -lfcgi
- 然后用spawn-fcgi开启test.cgi
$ spawn -a 127.0.0.1 -p 7890 -f ./test.cgi
- 然后打开网页的测试一下 在浏览器输入你的服务器IP/test就行,看看web服务器是否会返回消息~
- 然后再测试fastdfs-nginx-module模块参照这个链接测试就行
六、文件上传流程
fastDFS系统文件的上传下载原理看这篇文章fastDFS分布式文件系统文件上传和下载流程;
下面这张图是上传文件的代码流程~