1.什么是 FastDFS
四个方面的功能:
- 文件存储
- 文件同步
- 文件上传
- 文件下载
系统架构图
-
从上面这张图中我们可以看到,FastDFS 架构包括 Tracker 和 Storage 两部分,看名字大概就能知道,Tracker用来追踪文件,相当于是文件的一个索引,而 Storage 则用来保存文件。
-
我们上传文件的文件最终保存在 Storage 上,文件的元数据信息保存在 Tracker 上,通过 Tracker 可以实现对 Storage 的负载均衡。
-
Storage 一般会搭建成集群,一个 Storage Cluster 可以由多个组构成,不同的组之间不进行通信,一个组又相当于一个小的集群,组由多个 Storage Server 组成,组内的 Storage Server 会通过连接进行文件同步来保证高可用。
2.FastDFS 安装
- Tracker 安装
- Storage 安装
- Nginx 安装
2.1Tracker 安装
一个环境
先来看一个环境,由于 FastDFS 采用 C语言开发,所以在安装之前,如果没有 gcc 环境,需要先安装,安装命令如下:
yum install gcc-c++
两个库
再来看两个库,由于 FastDFS 依赖 libevent 库,安装命令如下:
yum -y install libevent
另一个库是 libfastcommon,这是 FastDFS 官方提供的,它包含了 FastDFS 运行所需要的一些基础库。
- libfastcommon 下载地址:https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
- 下载成功后,将下载文件拷贝到 /usr/local 目录下,然后依次执行如下命令安装:
cd /usr/local
tar -zxvf V6.06.tar.gz
cd fastdfs-6.06/
./make.sh
./make.sh install
一个安装包
-
接下来我们下载 Tracker,注意,由于 Tracker 和 Storage 是相同的安装包,所以下载一次即可(2.2 小节中不用再次下载)。
-
安装文件可以从 FastDFS 的 GitHub 仓库上下载,下载地址:https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
-
下载成功后,将下载文件拷贝到 /usr/local 目录下,然后依次执行如下命令安装:
cd /usr/local
tar -zxvf V6.06.tar.gz
cd fastdfs-6.06/
./make.sh
./make.sh install
- 安装成功后,执行如下命令,将安装目录内 conf 目录下的配置文件拷贝到 /etc/fdfs 目录下:
cd conf/
cp ./* /etc/fdfs/
配置
接下来进入 /etc/fdfs/ 目录下进行配置:
打开 tracker.conf 文件:
vim /etc/fdfs/tracker.conf
配置如下修改:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DU3CpueX-1588852256339)(http://q7w544ip5.bkt.clouddn.com/fdfs-tracker-config.png)]
默认端口是 22122,可以根据实际需求修改,我这里就不改了。然后下面配置一下元数据的保存目录(注意目录要存在)。
启动
如下命令启动 Tracker:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
如此之后,我们的 Tracker 就算安装成功了
2.2 Storage 安装
简单起见,这里我们搭建一个 Storage 实例即可。Storage 安装也需要 libevent 和 libfastcommon,这两个库的安装参考上文,这里我不在细说。
Storage 本身的安装,也和 Tracker 一致,执行命令也都一样,因为我这里将 Tracker 和 Storage 安装在同一台服务器上,所以不用再执行安装命令了(相当于安装 Tracker 时已经安装了 Storage 了)。
配置
唯一要做的,就是进入到 /etc/fdfs 目录下,配置 Storage:
vim /etc/fdfs/storage.conf
配置如下修改:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lsiZskNI-1588852256340)(http://q7w544ip5.bkt.clouddn.com/fdfs-storage-config.png)]
启动
如下命令启动 Tracker:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
关闭fdfs
如下命令:
killall fdfs_trackerd
killall fdfs_storaged
查看服务
同样查看服务是否启动,如下命令:
netstat -unltp | grep fdfs
torage是否注册到了tracker中去
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
测试
测试是否搭建完成,能否上传图片,如下命令:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/ybj/g.gif
3. nginx安装
首先下载 Nginx
下载位置为
home/yubajin/devtools/nginx-1.17.0
wget http://nginx.org/download/nginx-1.17.0.tar.gz
然后解压下载的目录,进入解压目录中,在编译安装之前,需要安装两个依赖:
yum -y install pcre -devel
yum -y install openssl openssl -devel
安装
然后开始编译安装:
./ configure
make
make install
装好之后,默认安装位置在 :
/usr/local/nginx/sbin/nginx
启动及相关命令
进入到该目录的 sbin 目录下,执行nginx 即可启动 Nginx :
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
如果修改了 Nginx 配置,则可以通过如下命令重新加载 Nginx 配置文件:
/usr/local/nginx/sbin/nginx -s reload
关闭服务
nginx -s stop
4. fastDFS插件fastdfs-nginx-module安装
下载和准备
首先下载 fastdfs-nginx-module,下载位置为/home/yubajin/devtools
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
下载完成后,将下载的文件拷贝到 /usr/local 目录下。然后进入 /usr/local 目录,分别执行如下命令:
cd /usr/local
tar -zxvf V1.22.tar.gz
配置
修改/usr/local/fastdfs-nginx-module/src/config配置文件
vim /usr/local/fastdfs-nginx-module-1.22/src/config
把路径中的local这一层删除掉
把CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/include/fastcommon/"
修改为:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
把CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
修改为:CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
在命令vim命令模式输入
:%s/local\///g
然后将 /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf 文件拷贝到 /etc/fdfs/ 目录下,并修改该文件的内容:
vim /etc/fdfs/mod_fastdfs.conf
tracker_server=182.254.171.122:22122 #跟踪器
url_have_group_name = true
storage_server_port=23000
group_name=group1
store_path0=/home/yubajin/fastdfs
接下来,回到 nginx下载文件的解压目录中,对nginx重新config,执行如下命令,重新配置编译安装:
cd /home/yubajin/devtools/nginx-1.17.0
./configure --add-module=/usr/local/fastdfs-nginx-module-1.22/src/
make
make install
安装完成后,修改 nginx 的配置文件,如下
vim /usr/local/nginx/conf/nginx.conf
server{
listen 80;
server_name localhost;
location /group1/M00/{
ngx_fastdfs_module;
}
}
在这里配置 nginx 请求转发。
配置完成后,启动 nginx,看到如下日志,表示 nginx 启动成功:
/usr/local/nginx/sbin/nginx -s reload
ngx_http_fastdfs_set pid=9908
查看是否配置fastdfs-nginx-module
/usr/local/nginx/sbin/nginx -V