FastDFS的详细安装步骤二(亲搭--搭建时间2019年4月17号前后)

文章链接:

FastDFS的详细安装步骤一

FastDFS的详细安装步骤二

前言:

上篇文章FastDFS已经搭建完毕,所以这篇文章我们先测试下已搭建的模块功能是否可以正常使用,以及怎么整合nginx访问上传后的图片。

正文:

一、检查之前的模块是否已经搭建成功

1.1 配置客户端,修改client.conf配置文件

vim /etc/fdfs/client.conf

base_path=/app/mainapp/dev/fastdfs/fastdfs_tracker #tracker服务器文件路径

tracker_server=192.168.xxx.x:22122 #tracker服务器IP地址和端口号

http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker的设置对应起来

在本地的windows环境下通过xftp随便上传一张图片到指定的位置

 1.2 模拟上传图片

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /app/mainapp/ftp/5.png

成功后会返回图片的路径:

  group1/M00/00/00/wKilB1y4HIqAVNp6AABSrESQnxM494.png

组名:group1 
磁盘:M00 
目录:00/00 
文件名称:group1/M00/00/00/wKilB1y4HIqAVNp6AABSrESQnxM494.png

我们上传的图片会被上传到我们创建的storage_data目录下,让我们去看看:

[root@host-192-168-165-7 ~]# cd /app/mainapp/dev/fastdfs/fastdfs_storage_data
[root@host-192-168-165-7 fastdfs_storage_data]# ls
data
[root@host-192-168-165-7 fastdfs_storage_data]# cd data
[root@host-192-168-165-7 data]# ls
00  07  0E  15  1C  23  2A  31  38  3F  46  4D  54  5B  62  69  70  77  7E  85  8C  93  9A  A1  A8  AF  B6  BD  C4  CB  D2  D9  E0  E7  EE  F5  FC
01  08  0F  16  1D  24  2B  32  39  40  47  4E  55  5C  63  6A  71  78  7F  86  8D  94  9B  A2  A9  B0  B7  BE  C5  CC  D3  DA  E1  E8  EF  F6  FD
02  09  10  17  1E  25  2C  33  3A  41  48  4F  56  5D  64  6B  72  79  80  87  8E  95  9C  A3  AA  B1  B8  BF  C6  CD  D4  DB  E2  E9  F0  F7  FE
03  0A  11  18  1F  26  2D  34  3B  42  49  50  57  5E  65  6C  73  7A  81  88  8F  96  9D  A4  AB  B2  B9  C0  C7  CE  D5  DC  E3  EA  F1  F8  FF
04  0B  12  19  20  27  2E  35  3C  43  4A  51  58  5F  66  6D  74  7B  82  89  90  97  9E  A5  AC  B3  BA  C1  C8  CF  D6  DD  E4  EB  F2  F9  M00
05  0C  13  1A  21  28  2F  36  3D  44  4B  52  59  60  67  6E  75  7C  83  8A  91  98  9F  A6  AD  B4  BB  C2  C9  D0  D7  DE  E5  EC  F3  FA
06  0D  14  1B  22  29  30  37  3E  45  4C  53  5A  61  68  6F  76  7D  84  8B  92  99  A0  A7  AE  B5  BC  C3  CA  D1  D8  DF  E6  ED  F4  FB
[root@host-192-168-165-7 data]# cd 00
[root@host-192-168-165-7 00]# ls
00  07  0E  15  1C  23  2A  31  38  3F  46  4D  54  5B  62  69  70  77  7E  85  8C  93  9A  A1  A8  AF  B6  BD  C4  CB  D2  D9  E0  E7  EE  F5  FC
01  08  0F  16  1D  24  2B  32  39  40  47  4E  55  5C  63  6A  71  78  7F  86  8D  94  9B  A2  A9  B0  B7  BE  C5  CC  D3  DA  E1  E8  EF  F6  FD
02  09  10  17  1E  25  2C  33  3A  41  48  4F  56  5D  64  6B  72  79  80  87  8E  95  9C  A3  AA  B1  B8  BF  C6  CD  D4  DB  E2  E9  F0  F7  FE
03  0A  11  18  1F  26  2D  34  3B  42  49  50  57  5E  65  6C  73  7A  81  88  8F  96  9D  A4  AB  B2  B9  C0  C7  CE  D5  DC  E3  EA  F1  F8  FF
04  0B  12  19  20  27  2E  35  3C  43  4A  51  58  5F  66  6D  74  7B  82  89  90  97  9E  A5  AC  B3  BA  C1  C8  CF  D6  DD  E4  EB  F2  F9
05  0C  13  1A  21  28  2F  36  3D  44  4B  52  59  60  67  6E  75  7C  83  8A  91  98  9F  A6  AD  B4  BB  C2  C9  D0  D7  DE  E5  EC  F3  FA
06  0D  14  1B  22  29  30  37  3E  45  4C  53  5A  61  68  6F  76  7D  84  8B  92  99  A0  A7  AE  B5  BC  C3  CA  D1  D8  DF  E6  ED  F4  FB
[root@host-192-168-165-7 00]# cd 00
[root@host-192-168-165-7 00]# ls
wKilB1y4HIqAVNp6AABSrESQnxM494.png

如果你通过上面的路径找打图片,说明你的FastDFS模块基本搭建成功。

我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。 

1.3 为什么无法通过http直接访问到图片

你是无法通过192.168.xxx.x:6666/group1/M00/00/00/wKilB1y4HIqAVNp6AABSrESQnxM494.png这个路径直接访问到,具体复杂的原因就不解释啦,想知道看博客:https://blog.csdn.net/m0_37797991/article/details/73385161

这里高度总结下,就是为了FastDFS性能取消啦对HTTP的支持。而给出的解决方案就是:FastDFS需要结合nginx,来查看上传后的图片。

二、整合FastDFS+nginx

2.1 安装nginx的准备,这里可以参考我之前安装nginx的文章https://blog.csdn.net/jdk_wangtaida/article/details/88571920

在安装nginx之前要安装nginx所需的依赖lib:

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

2.2 安装nginx并添加fastdfs-nginx-module

解压nginx,和fastdfs-nginx-module:

tar -zxvf nginx-1.12.0.tar.gz
unzip fastdfs-nginx-module-master.zip

解压后进入nginx目录编译安装nginx,并添加fastdfs-nginx-module:

./configure --prefix=/usr/local/nginx --add-module=/app/fastdfs/fastdfs-nginx-module-master/src  #解压后fastdfs-nginx-module所在的位置

 如果配置不报错的话,就开始编译:

make
make install

nginx的默认目录是/usr/local/nginx,安装成功后查看:

[root@host-192-168-xxx-x local]# ls
nginx  

2.3 配置storage nginx

修改nginx.conf:

[root@host-192-168-xxx-x local]# cd nginx
[root@host-192-168-xxx-x nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@host-192-168-xxx-x nginx]# cd conf/
[root@host-192-168-xxx-x conf]# ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default
[root@host-192-168-xxx-x conf]# vim nginx.conf

修改监听端口 listen 9999, 新增location

server {
        listen       9999;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~/group1/M00 {
            root /app/mainapp/dev/fastdfs/fastdfs_storage_data/data;
            ngx_fastdfs_module;
        }

        location = /50x.html {
            root   html;
        }
}

然后进入FastDFS安装时的解压过的目录,将http.conf和mime.types拷贝到/etc/fdfs目录下,拷贝完如下

[root@host-192-168-xxx-x fdfs]# ls
client.conf         http.conf   storage.conf.sample      tracker.conf
client.conf.sample  mime.types  storage.conf      storage_ids.conf.sample  tracker.conf.sample

另外还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下,mod_fastdfs.conf在/app/fastdfs/fastdfs-nginx-module-master/src目录下。

[root@host-192-168-xxx-x fdfs]# ls
client.conf         http.conf   mod_fastdfs.conf  storage.conf.sample      tracker.conf
client.conf.sample  mime.types  storage.conf      storage_ids.conf.sample  tracker.conf.sample

对刚刚拷贝的mod_fastdfs.conf文件进行修改:

vim /etc/fdfs/mod_fastdfs.conf
 base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage  #保存日志目录
 tracker_server=192.168.128.131:22122 #tracker服务器的IP地址以及端口号
 storage_server_port=23000 #storage服务器的端口号
 url_have_group_name = true #文件 url 中是否有 group 名
 store_path0=/app/main/dev/fastdfs/fastdfs_storage_data   #存储路径
 group_count = 3 #设置组的个数,事实上这次只使用了group1

在文件的最后,设置group

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/app/mainapp/dev/fastdfs/fastdfs_storage_data

# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/app/mainapp/dev/fastdfs/fastdfs_storage_data

[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/app/mainapp/dev/fastdfs/fastdfs_storage_data

这里重点提示下,不能错一点,比如store_path0不能写成store_path这样都会导致,组合nginx失败。

创建M00至storage存储目录的符号连接:

ln  -s  /app/mainapp/dev/fastdfs/fastdfs_storage_data/data/ /app/mainapp/dev/fastdfs/fastdfs_storage_data/data/M00

启动nginx:

/usr/local/nginx/sbin/nginx

成功启动:

ngx_http_fastdfs_set pid=8142(会显示这个)

访问下192.168.xxx.x:9999(这里如果是外网访问,需要找你们公司的运维先映射下外网地址),如果出现下面的界面,表示你配置storage的nginx成功啦!

2.4 配置tracker的nginx

再解压一个nginx: 
我在我自己的工作下再建了一个nginx2,把原来的nginx-1.12.0.tar.gz又解压了一份到里面

[root@host-192-168-xxx-x app]# ls
fastdfs  mainapp  nginx-1.12.0  nginx-1.12.0.tar.gz  nginx2 

解压到指令目录的指令

tar zxvf nginx-1.12.0.tar.gz -C  ../app/nginx2

配置:

./configure --prefix=/usr/local/nginx2 --add-module=/app/fastdfs/fastdfs-nginx-module-master/src    #解压后fastdfs-nginx-module所在的位置

编译:

make
make install

接下来,一样的还是修改nginx.conf,这里我不建议使用默认的80端口,因为公司的很多实际开发环境,是不许用80端口的

vim /usr/local/nginx2/conf/nginx.conf

 upstream fdfs_group1 {
        server 127.0.0.1:9999;
    }
    server {
        listen       8888;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /group1/M00 {
            proxy_pass http://fdfs_group1;
        }
        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

启动nginx:

/usr/local/nginx/sbin/nginx2

同样通过192.168.xxx.x:8888访问,如果出先下面的界面就说明配置成功

最后我们拼接下访问地址:

192.168.xxx:8888/group1/M00/00/00/wKilB1y23oOAQI07AABSrESQnxM556.png

 如果出现上面你刚才上传的图片,到此就成功安装啦FastDFS+nginx。

 三、常出现的问题

3.1 防火墙是否开启相应的端口,我们搭建的这个FastDFS+nginx用到的端口有23000(storage的端口)、22122(tracker的端口)、9999(storage的nginx端口)、8888(tracker的nginx的端口)

查看防火墙已经开启端口的指令:

firewall-cmd --zone=public --list-ports

开放端口号命令:–permanent表示永久生效,不加的话,重启后不生效

firewall-cmd --zone=public --add-port=23000/tcp --permanent #开户端口号

3.2  CentOS7 防火墙相关命令:

systemctl enable firewalld.service    #开启防火墙
systemctl stop firewalld.service     #关闭防火墙(开机会仍会启动)
systemctl disable firewalld.service  #禁用防火墙(开机后不再启动)

3.3 如果这些都做了,但是访问nginx还是访问不到,我告诉大家一个解决思路,这时候去看日志就行啦,其实我当时就是这种情况,防火墙关闭啦,相关端口也开启啦,还是访问不到,也不知道哪个配置哪里错啦,这时候要养成看日志的分析问题的习惯,比如可以先看nginx的日志:

[root@host-192-168-xxx-x ~]# cd /usr/local/
[root@host-192-168-xxx-x local]# ls
bin  etc  games  gcc-7.3.0  include  lib  lib64  libexec  mysql  nginx  nginx2  sbin  share  src
[root@host-192-168-xxx-x local]# cd nginx
[root@host-192-168-xxx-x nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@host-192-168-xxx-x nginx]# cd logs
[root@host-192-168-xxx-x logs]# ls
access.log  error.log  nginx.pid

我的错误最终就是从日志找到的。

总结:

对于上面安装过程有疑问的地方,要及时沟通,也希望大家帮我更加完善这篇文章,以求让更多的小伙伴少踩坑,轻轻松松完成安装,我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有76位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把。

猜你喜欢

转载自blog.csdn.net/jdk_wangtaida/article/details/89376237