准备工作
安装FastDFS之前,我们需要先做一些准备工作,比如FastDFS的源码和依赖包,想要安装FastDFS,需要去gitee或者github,下载余庆写的libfatscommon,以及FastDFS还有fastdfs-nginx-module源码
前置条件
系统: Centos7且可以联网更新RPM软件包
已经安装好Nginx,并且有源码编译版本的Nginx
源码下载
#libfastcommon源码下载wget https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.53.tar.gz#FastDFS 源码下载wget https://github.com/happyfish100/fastdfs/archive/refs/tags/V6.07.tar.gz#fastdfs-nginx-module 源码下载cd /home/nginx_module;https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.22.tar.gz
yum编译环境准备
安装需要的rpm组件包:
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
安装
首先将刚刚下载好的几个文件解压
tar -zxvf fastdfs-6.07.tar.gz;tar -zxvf libfastcommon-1.0.53.tar.gz;tar -zxvf fastdfs-nginx-module-1.22.tar.gz;
接着开始编译安装
#安装 libfastcommoncd libfastcommon-1.0.53;./make.sh && ./make.sh install;#安装 fastdfscd ../;cd fastdfs-6.07;./make.sh && ./make.sh install;#拷贝几个配置文件 到安装目录/etc/fdfs下cp /usr/etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf;cp /usr/etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf;cp /usr/etc/fdfs/client.conf.sample /etc/fdfs/client.conf;#从当前目录的conf目录下cp两个很重要的文件,在使用Nginx访问fastDFS文件的时候需要用到cp conf/http.conf /etc/fdfs/;cp conf/mime.types /etc/fdfs/;# fastdfs-nginx-modulecd ../;cd fastdfs-nginx-module-1.22;#将一个配置文件 cp 到安装目录下cp mod_fastdfs.conf /etc/fdfs/;
准备完毕以后,开始修改FastDFS配置
#进入 默认的安装目录 /etc/fdfs/cd /etc/fdfs;#修改tracker配置vim tracker.conf;#需要修改的内容如下(基础配置,其他参数是否修改,参考配置文件注释)port=22122 # tracker服务器端口(默认22122,一般不修改)base_path=/home/dfs # 存储日志和数据的根目录#修改storage配置vim storage.conf;#需要修改的内容如下port=23000 # storage服务端口(默认23000,一般不修改)base_path=/home/dfs # 数据和日志文件存储根目录store_path0=/home/dfs # 第一个存储目录tracker_server=192.168.52.1:22122 # tracker服务器IP和端口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/目录下,相关操作命令为:
#启动tracker服务/etc/init.d/fdfs_trackerd start#重启tracker服务/etc/init.d/fdfs_trackerd restart#停止tracker服务/etc/init.d/fdfs_trackerd stop#开机自启tracker服务chkconfig fdfs_trackerd on
同理storage服务的初始化文件命令也是如此:
#启动storage服务/etc/init.d/fdfs_storaged start#重启storage服务/etc/init.d/fdfs_storaged restart#停止storage服务/etc/init.d/fdfs_storaged stop#开机自启storage服务chkconfig fdfs_storaged on
当tracker和storage启动完成后,我们查看一下当前进程,如果发现某个进程不存在,说明启动失败,这个时候我们就需要查看日志,而日志目录,则是在上面我们修改的路径下
ps -ef | grep fdfs#可以查看到的结果为root 8988 1 0 7月27 ? 00:00:14 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf startroot 9258 8233 0 17:20 pts/1 00:00:00 grep --color=auto fdfsroot 20395 1 0 7月27 ? 00:00:15 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
说明当前服务已经启动成功
通过可执行文件启动
我们在源码编译安装的时候,会默认给/usr/bin目录下注册一些fastDFS的脚本以及bin目录下的执行文件,这个时候我们可以通过该文件进行fastDFS的启动、停止、上传、下载等操作
#启动 tracker/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start#启动storage/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
启动完毕以后,依然执行上述进程查看操作即可,当然,除此之外,也可以通过monitor命令检测fastDFS的两个组件之间是否连接,确定是否启动成功:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
Client测试上传/删除功能
fastDFS默认提供了一个client用于测试上传/下载等功能,我们通过client来测试一下,刚刚搭建的fastDFS服务是否可以正常提供服务。首先,需要修改一下 /etc/fdfs/client.conf配置文件:
vim /etc/fdfs/client.conf;#需要修改的内容如下base_path=/home/moe/dfs#有几个写几个,在一个网络写内网(192.168网段限制),或者直接外网地址tracker_server=192.168.52.2:22122 # 服务器1tracker_server=192.168.52.3:22122 # 服务器2tracker_server=192.168.52.4:22122 # 服务器3
配置完成以后,我们可以随便上传一个文件试一下
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz#语法如下fdfs_upload_file <client conf path> <file path>
上传成功以后,我们可以看到如下响应:
group1/M00/00/00/eSvnCmEDzBSASOyHAAAFdd5yC448179476
即代表上传成功,这个时候我们将其删除
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/eSvnCmEDzBSASOyHAAAFdd5yC448179476#语法如下fdfs_delete_file <client conf path> <file path>
可见文件系统服务是已经成功了的
Nginx配置文件系统访问
首先修改/etc/fdfs/mod_fastdfs.conf配置文件
vim /etc/fdfs/mod_fastdfs.conf;#需要修改的内容如下#有几个写几个,在一个网络写内网(192.168网段限制),或者直接外网地址tracker_server=192.168.52.2:22122 # 服务器1tracker_server=192.168.52.3:22122 # 服务器2tracker_server=192.168.52.4:22122 # 服务器3url_have_group_name=truestore_path0=/home/dfs
接着我们需要重新编译Nginx源码,添加我们下载的fastdfs-nginx-module-1.22模块
Nginx添加模块
首先我们来到Nginx的启动目录,获取当前Nginx的详细配置参数:
cd /usr/local/nginx/sbin;./nginx -V;#获取结果如下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执行文件
./nginx -s stop;mv nginx nginx.old;
接着我们来到nginx源码目录所在,重新编译生成新的nginx文件,并且添加当前模块
cd /home/nginx/core/nginx-1.21.1;#将刚才的fastdfs-nginx-module-1.22目录添加到刚才的nginx参数中以后,重新编译./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;make;#make编译完毕以后,将objs目录下编译生成的nginx文件cp到nginx安装目录下cp objs/nginx /usr/local/nginx/sbin/;
做完当前操作以后,我们修改Nginx的配置文件,添加一下当前fastDFS文件访问代理:
vim /usr/local/nginx/conf/nginx.conf;#添加如下内容location ~/group[1-9]/M0[0-9] {ngx_fastdfs_module;}
接着重新启动nginx,可以看到如下内容,即代表nginx代理配置完成:
cd /usr/local/nginx/sbin;./nginx -c /usr/local/nginx/conf/nginx.conf;#输出如下内容:ngx_http_fastdfs_set pid=16391
接着我们上传一个图片以后,将响应的文件名,添加nginx代理监听的url,即可访问查看到当前图片,如:
http://121.43.231.10:59999/group1/M00/00/00/eSvnCmEBM-uAbQe_AAJ66ivJBzM461.jpg
