赞
踩
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
- 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
vim objs/Makefile
make
sudo make install
第一步(搭建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了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。