热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

文章链接:FastDFS的详细安装步骤一FastDFS的详细安装步骤三​​​​​​​前言:上篇文章FastDFS已经搭建完毕,所以

 

文章链接:

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.confupstream 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位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把。


推荐阅读
author-avatar
mobiledu2502906525
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有