准备工作

安装FastDFS之前,我们需要先做一些准备工作,比如FastDFS的源码和依赖包,想要安装FastDFS,需要去gitee或者github,下载余庆写的libfatscommon,以及FastDFS还有fastdfs-nginx-module源码

前置条件

系统: Centos7且可以联网更新RPM软件包

已经安装好Nginx,并且有源码编译版本的Nginx

源码下载
  1. #libfastcommon源码下载
  2. wget https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.53.tar.gz
  3. #FastDFS 源码下载
  4. wget https://github.com/happyfish100/fastdfs/archive/refs/tags/V6.07.tar.gz
  5. #fastdfs-nginx-module 源码下载
  6. cd /home/nginx_module;
  7. https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.22.tar.gz

yum编译环境准备

安装需要的rpm组件包:

  1. yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

安装

首先将刚刚下载好的几个文件解压

  1. tar -zxvf fastdfs-6.07.tar.gz;
  2. tar -zxvf libfastcommon-1.0.53.tar.gz;
  3. tar -zxvf fastdfs-nginx-module-1.22.tar.gz;

接着开始编译安装

  1. #安装 libfastcommon
  2. cd libfastcommon-1.0.53;
  3. ./make.sh && ./make.sh install;
  4. #安装 fastdfs
  5. cd ../;
  6. cd fastdfs-6.07;
  7. ./make.sh && ./make.sh install;
  8. #拷贝几个配置文件 到安装目录/etc/fdfs下
  9. cp /usr/etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
  10. cp /usr/etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  11. cp /usr/etc/fdfs/client.conf.sample /etc/fdfs/client.conf
  12. #从当前目录的conf目录下cp两个很重要的文件,在使用Nginx访问fastDFS文件的时候需要用到
  13. cp conf/http.conf /etc/fdfs/;
  14. cp conf/mime.types /etc/fdfs/;
  15. # fastdfs-nginx-module
  16. cd ../;
  17. cd fastdfs-nginx-module-1.22;
  18. #将一个配置文件 cp 到安装目录下
  19. cp mod_fastdfs.conf /etc/fdfs/;

准备完毕以后,开始修改FastDFS配置

  1. #进入 默认的安装目录 /etc/fdfs/
  2. cd /etc/fdfs;
  3. #修改tracker配置
  4. vim tracker.conf;
  5. #需要修改的内容如下(基础配置,其他参数是否修改,参考配置文件注释)
  6. port=22122 # tracker服务器端口(默认22122,一般不修改)
  7. base_path=/home/dfs # 存储日志和数据的根目录
  8. #修改storage配置
  9. vim storage.conf;
  10. #需要修改的内容如下
  11. port=23000 # storage服务端口(默认23000,一般不修改)
  12. base_path=/home/dfs # 数据和日志文件存储根目录
  13. store_path0=/home/dfs # 第一个存储目录
  14. tracker_server=192.168.52.1:22122 # tracker服务器IP和端口
  15. http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)

需要注意的一点是,tracker_server的配置项有两个,即需要配置两个ip + port地址,一般第一个配置的是内网地址,第二个配置的是公网地址,但需要注意的是内网地址ip配置,一般都是192.168开头的网段,如果发现当前机器的ip不是此类网段开头,如这里我们使用的是阿里云,网段ip为172.132,在启动的时候会无法启动,报错内容大致是说这个网段ip有误,因此在配置的时候我们选择两个配置都配置为公网ip + port,也可以选择使用虚拟ip,挂载一个虚拟192.168网段的网卡,指向当前机器

启动

当这两个配置文件修改完毕以后,这个时候我们已经可以尝试启动FastDFS了,启动FastDFS有两种方式

通过初始化文件启动

初始化配置文件在 /etc/init.d/目录下,相关操作命令为:

  1. #启动tracker服务
  2. /etc/init.d/fdfs_trackerd start
  3. #重启tracker服务
  4. /etc/init.d/fdfs_trackerd restart
  5. #停止tracker服务
  6. /etc/init.d/fdfs_trackerd stop
  7. #开机自启tracker服务
  8. chkconfig fdfs_trackerd on

同理storage服务的初始化文件命令也是如此:

  1. #启动storage服务
  2. /etc/init.d/fdfs_storaged start
  3. #重启storage服务
  4. /etc/init.d/fdfs_storaged restart
  5. #停止storage服务
  6. /etc/init.d/fdfs_storaged stop
  7. #开机自启storage服务
  8. chkconfig fdfs_storaged on

trackerstorage启动完成后,我们查看一下当前进程,如果发现某个进程不存在,说明启动失败,这个时候我们就需要查看日志,而日志目录,则是在上面我们修改的路径下

  1. ps -ef | grep fdfs
  2. #可以查看到的结果为
  3. root 8988 1 0 727 ? 00:00:14 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
  4. root 9258 8233 0 17:20 pts/1 00:00:00 grep --color=auto fdfs
  5. root 20395 1 0 727 ? 00:00:15 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

说明当前服务已经启动成功

通过可执行文件启动

我们在源码编译安装的时候,会默认给/usr/bin目录下注册一些fastDFS的脚本以及bin目录下的执行文件,这个时候我们可以通过该文件进行fastDFS的启动、停止、上传、下载等操作

  1. #启动 tracker
  2. /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
  3. #启动storage
  4. /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

启动完毕以后,依然执行上述进程查看操作即可,当然,除此之外,也可以通过monitor命令检测fastDFS的两个组件之间是否连接,确定是否启动成功:

  1. /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

Client测试上传/删除功能

fastDFS默认提供了一个client用于测试上传/下载等功能,我们通过client来测试一下,刚刚搭建的fastDFS服务是否可以正常提供服务。首先,需要修改一下 /etc/fdfs/client.conf配置文件:

  1. vim /etc/fdfs/client.conf;
  2. #需要修改的内容如下
  3. base_path=/home/moe/dfs
  4. #有几个写几个,在一个网络写内网(192.168网段限制),或者直接外网地址
  5. tracker_server=192.168.52.2:22122 # 服务器1
  6. tracker_server=192.168.52.3:22122 # 服务器2
  7. tracker_server=192.168.52.4:22122 # 服务器3

配置完成以后,我们可以随便上传一个文件试一下

  1. fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
  2. #语法如下
  3. fdfs_upload_file <client conf path> <file path>

上传成功以后,我们可以看到如下响应:

  1. group1/M00/00/00/eSvnCmEDzBSASOyHAAAFdd5yC448179476

即代表上传成功,这个时候我们将其删除

  1. fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/eSvnCmEDzBSASOyHAAAFdd5yC448179476
  2. #语法如下
  3. fdfs_delete_file <client conf path> <file path>

可见文件系统服务是已经成功了的

Nginx配置文件系统访问

首先修改/etc/fdfs/mod_fastdfs.conf配置文件

  1. vim /etc/fdfs/mod_fastdfs.conf;
  2. #需要修改的内容如下
  3. #有几个写几个,在一个网络写内网(192.168网段限制),或者直接外网地址
  4. tracker_server=192.168.52.2:22122 # 服务器1
  5. tracker_server=192.168.52.3:22122 # 服务器2
  6. tracker_server=192.168.52.4:22122 # 服务器3
  7. url_have_group_name=true
  8. store_path0=/home/dfs

接着我们需要重新编译Nginx源码,添加我们下载的fastdfs-nginx-module-1.22模块

Nginx添加模块

首先我们来到Nginx的启动目录,获取当前Nginx的详细配置参数:

  1. cd /usr/local/nginx/sbin;
  2. ./nginx -V;
  3. #获取结果如下
  4. configure arguments: --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --modules-path=/usr/local/nginx/modules --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/usr/local/nginx/logs/nginx.pid --lock-path=/usr/local/nginx/logs/nginx.lock

接着我们找个文本保存一下当前的参数,一会重新编译需要使用,保存完毕后,我们将当前Nginx服务停止,并且备份nginx执行文件

  1. ./nginx -s stop;
  2. mv nginx nginx.old;

接着我们来到nginx源码目录所在,重新编译生成新的nginx文件,并且添加当前模块

  1. cd /home/nginx/core/nginx-1.21.1;
  2. #将刚才的fastdfs-nginx-module-1.22目录添加到刚才的nginx参数中以后,重新编译
  3. ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --modules-path=/usr/local/nginx/modules --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/usr/local/nginx/logs/nginx.pid --lock-path=/usr/local/nginx/logs/nginx.lock --add-module=/home/nginx_module/fastdfs-nginx-module/src;
  4. make;
  5. #make编译完毕以后,将objs目录下编译生成的nginx文件cp到nginx安装目录下
  6. cp objs/nginx /usr/local/nginx/sbin/;

做完当前操作以后,我们修改Nginx的配置文件,添加一下当前fastDFS文件访问代理:

  1. vim /usr/local/nginx/conf/nginx.conf;
  2. #添加如下内容
  3. location ~/group[1-9]/M0[0-9] {
  4. ngx_fastdfs_module;
  5. }

接着重新启动nginx,可以看到如下内容,即代表nginx代理配置完成:

  1. cd /usr/local/nginx/sbin;
  2. ./nginx -c /usr/local/nginx/conf/nginx.conf;
  3. #输出如下内容:
  4. ngx_http_fastdfs_set pid=16391

接着我们上传一个图片以后,将响应的文件名,添加nginx代理监听的url,即可访问查看到当前图片,如:

http://121.43.231.10:59999/group1/M00/00/00/eSvnCmEBM-uAbQe_AAJ66ivJBzM461.jpg