Nginx访问fastdfs(fastdfds-nginx-module模块)

一、FastDFS的Nginx模块

  • 一个好的分布式文件系统最好提供 Nginx 的模块,因为对于互联网应用来说,像文件这种静态资源,一般是通过HTTP的下载,此时通过容易扩展的Nginx来访问FastDFS,能够让文件的上传和下载变得特别简单
  • Nginx安装FastDFS模块,主要是安装在FastDFS的存储服务器(storage)上,而不是tracker和client上

二、在Nginx中安装该模块

  • 第一步:下载Nginx模块
git clone https://github.com/happyfish100/fastdfs-nginx-module.git

  • 该模块不需要编译,下面需要重新编译Nginx,将该模块编译进Nginx即可(Nginx的安装与配置的具体细节请参阅:https://blog.csdn.net/qq_41453285/article/details/106289169
  • 第二步:进入Nginx的源码目录重新配置Nginx,在最后加上“--add-module”选项,将上面模块的src路径添加进去即可
cd nginx-1.16.1/

./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_stub_status_module --with-stream --with-pcre=/home/ubuntu/build/pcre-8.41 --with-zlib=/home/ubuntu/build/zlib-1.2.11 --with-openssl=/home/ubuntu/build/openssl-1.1.0g --add-module=/home/ubuntu/build/fastdfs-nginx-module/src

  • 配置成功时如下所示,其会显示上面的模块被编译进去了

  • 第三步:编辑Nginx源码目录中的objs/Makefile文件,添加如下的内容:
vim objs/Makefile

  • 第四步:输入下面的命令编译Nginx
make

  • 第三步:输入下面的命令安装Nginx
sudo make install

三、使用Nginx访问FastDFS文件

  • 出错了,等我以后来改吧

第一步(搭建FastDFS集群)

  • 首先要搭建FastDFS集群,这个不是文本的重点,FastDFS集群如何搭建的请参阅:https://blog.csdn.net/qq_41453285/article/details/107164120
  • 接着上面链接的那篇文章,假设我们已经在那个文章中搭建了一个下面这样的集群:
    • 1个tracker服务端
    • 3个storage服务端,分为两组

第二步(为storage节点配置文件)

  • 因为此处我们为本地集群,所以所有的内容都混到一起了。实际开发中,如果想让哪台sotrage服务端提供Nginx的功能,那么就在哪台storage机器上就需要配置下面的内容
  • 第一步:将fastdfds-nginx-module模块源码包中的src目录下的mod_fastdfs.conf文件拷贝一份到/etc/fdfs目录下
sudo cp ~/build/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

ls /etc/fdfs/

  • 第二步:修改/etc/fdfs/mod_fastdfs.conf配置文件,修改的内容如下:
    • base_path:此storage服务节点数据和日志存储路径
    • tracker_server:此storage服务节点工作在哪个tracker_server服务节点下(如果有多个,那么可以写多个,每一个占一行)
    • storage_server_port:此storage服务节的监听端口
    • url_have_group_name:设置为true,表示URL中可以包含组的名字(例如浏览器通过带有组名的URL去访问Nginx就需要设置这一项)
    • store_path0:此storage服务节存储文件数据的路径
    • group_count:设置组的个数,此处我们有2个组(在实际开发中,每个storage节点都单独运行在一条服务器上,从而端口都是相同的(为23000)。但是由于此处我们都运行在一个机器上,group1中有两台storage节点,端口分别为23000和23001,此处我们只填了一个23001,不知道效果会怎样,先这样写吧)
sudo vim /etc/fdfs/mod_fastdfs.conf

  • 第三步:将fastdfs源码目录conf/目录下的http.conf、mime.types也复制到/etc/fdfs/目录下
sudo cp ~/build/fastdfs/conf/http.conf /etc/fdfs/

sudo cp ~/build/fastdfs/conf/mime.types /etc/fdfs/

  • 备注:如果不复制“http.conf、mime.types”,直接去启动Nginx,那么会出现Nginx会报下面的错误(在/usr/local/nginx/logs/error.log中查看),从而导致Nginx的worker进程会启动失败,导致也无法提供Web服务,原因是/etc/fdfs/下缺少 http.conf 和 mime.types文件

  • 第四步(可选的):修改http.conf中的http.anti_steal.token_check_faile参数,该参数设定一个文件,用来在在客户访问Nginx出错的时候显示。此处我们设定为fastdfs源码中的一张图片(这个文件随意设置)
sudo vim /etc/fdfs/http.conf

  • 可以看到在该路径下确实有一张图片

第三步(启动节点、开启Nginx)

  • 第一步:先将group1组内的storage2节点重新启动
sudo fdfs_storaged ~/fastdfs/storage/group1/storage2/storage.conf restart

  • 第二步:修改Nginx的配置文件,添加的内容如下:
    • root(可选的):表示文档的根目录。见文章最下面的URL解析
    • ngx_fastdfs_module:指定模块
sudo vim /usr/local/nginx/conf/nginx.conf

  • 第二步:再启动/重启Nginx
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload

第四步(通过Nginx访问FastDFS)

  • 第一步:现在我们有一张图片(名为test.jpg),现在我们使用fdfs_upload_file工具将这个文件上传到FastDFS中,然后查看storaged节点验证上传成功
fdfs_upload_file ~/fastdfs/client/client.conf ./test.jpg

ls ~/fastdfs/storage/group1/storage2/store_data/data/00/00/

  • 第二步:现在我们就可以通过Nginx来访问这个文件了

  • URL解析:
    • 当URL中以“/group1/M00/xxxx”格式去访问时,“/group1/M00/”会匹配到我们上面Nginx配置文件中的location语句块
    • 又因为/group1/M00/路径相当于我们本案例中storage2节点的路径(~/fastdfs/storage/group1/storage2/store_data/data/),因此在后面加上00/00/xxx.jpg就能够访问到storage节点中的数据
    • 在Nginx配置文件的location语句块中我们注释掉了root,因为那个是默认路径(只要通过~/group([0-9])/M00去访问就会访问到那个地址),可以不指定了。并且制定了就固定死了只能去访问那个路径,如果storage节点很多,那么就不制定root了。

  • 我是小董,V公众点击"笔记白嫖"解锁更多【Nginx】资料内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值