FastDFS 与 Nginx 整合

1. 在 tracker 上安装 nginx

 在每个 tracker 上安装 nginx,的主要目的是做负载均衡及实现高可用。如果只有一台 tracker 可以不配置 nginx。

 一个 tracker 对应多个 storage,通过 nginx 对 storage 负载均衡;

2. 在 storage 上安装 nginx

(1)上传 fastdfs-nginx-module_v1.16.tar.gz 到 Centos 服务器上;

(2)解压 fastdfs-nginx-module_v1.16.tar.gz 到 /usr/local 目录下;

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local

(3)切换目录到: /usr/local/fastdfs-nginx-module/src/ 目录下

cd /usr/local/fastdfs-nginx-module/src/

(4)修改 config 文件,将文件中的所有 /usr/local/ 路径改为 /usr/

1107037-20171226001127650-1712247948.png
修改完成后:
1107037-20171226001426275-1421663742.png
(5)将 fastdfs-nginx-module/src 下的 mod_fastdfs.conf 拷贝至 /etc/fdfs/ 下

cp mod_fastdfs.conf /etc/fdfs/

(6)并修改 /etc/fdfs/mod_fastdfs.conf 的内容;vi /etc/fdfs/mod_fastdfs.conf

 base_path=/tmp 修改为 base_path=/home/fastdfs

base_path=/home/fastdfs

tracker_server=192.168.172.20:22122 
#tracker_server=192.168.172.20:22122 #(多个tracker配置多行)
url_have_group_name=true        #url中包含group名称
store_path0=/home/fdfs_storage  #指定文件存储路径(上面配置的store路径)

(7)将 libfdfsclient.so 拷贝至 /usr/lib 下

cp /usr/lib64/libfdfsclient.so /usr/lib/

(8)创建 nginx/client 目录

mkdir -p /var/temp/nginx/client

3.Nginx 的安装

(1)上传 nginx-1.8.0.tar.gz 到 Centos 服务器上;

(2)解压 nginx-1.8.0.tar.gz 到 /usr/local 目录下;

tar -zxvf nginx-1.8.0.tar.gz -C /usr/local/

(3)安装 nginx 的依赖库

yum install pcre 
yum install pcre-devel 
yum install zlib 
yum install zlib-devel 
yum install openssl 
yum install openssl-devel

(4)进入 nginx 解压的目录下:cd /usr/local/nginx-1.8.0/

(5)加入模块命令配置

./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --add-module=/usr/local/fastdfs-nginx-module/src

1107037-20171227195734956-947894519.png
注意:上边将临时文件目录指定为 /var/temp/nginx,需要在 /var 下创建 temp 及 nginx 目录;

(6)编译并安装

make && make install

安装成功后查看生成的目录,如下所示:
1107037-20171227210908081-577541895.png
(7)拷贝配置文件到 /etc/fdfs 下;

cd /usr/local/FastDFS/conf
cp http.conf mime.types /etc/fdfs/

(8)修改 nginx 配置文件
1107037-20171227204412972-1320764618.png

mkdir /usr/local/nginx/logs # 创建logs目录

cd /usr/local/nginx/conf/

vim nginx.conf

做如下的修改:
1107037-20180106211140565-2088673686.png

1107037-20171227211338675-1973886058.png

说明

  (a.) server_name 指定本机 ip;

  (b.) location /group1/M00/:group1 为 nginx 服务 FastDFS 的分组名称,M00 是 FastDFS 自动生成编号,对应 store_path0=/home/fdfs_storage,如果 FastDFS 定义 store_path1,这里就是 M01

 (9)nginx 的启动

cd /usr/local/nginx/sbin/
./nginx 

 查询 nginx 进程
1107037-20171227211548191-1498752184.png

(10) fastdfs 和 nginx 服务的开机自启动: http://www.cnblogs.com/yufeng218/p/8215381.html

4. 在浏览器中访问上传到 fastDFS 的图片

因为 Centos 系统有防火墙,需要先关闭掉,才可以在浏览器中访问;
(1)CentOS 7.0 默认使用的是 firewall 作为防火墙;若没有启用 iptables 作为防火墙,则使用以下方式关闭防火墙:

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

1107037-20171227212959097-2099460802.png

(2)若已经启用 iptables 作为防火墙,则使用以下方式关闭:

service iptables stop  #临时关闭防火墙
chkconfig iptables off #永久关闭防火墙

防火墙的相关链接:http://www.jb51.net/article/101576.htm

           http://www.linuxidc.com/Linux/2015-05/117473.htm

(3)在谷歌浏览器中访问刚才上传的图片:

刚才上传的图片地址为:http://192.168.172.20/group1/M00/00/00/wKisFFpBG9eAHaQvAAAWKd1hQR4158_big.jpg

1107037-20171227213934316-1569111910.png

/usr/local/nginx/