准备工作
安装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;
接着开始编译安装
#安装 libfastcommon
cd libfastcommon-1.0.53;
./make.sh && ./make.sh install;
#安装 fastdfs
cd ../;
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-module
cd ../;
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 start
root 9258 8233 0 17:20 pts/1 00:00:00 grep --color=auto fdfs
root 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 # 服务器1
tracker_server=192.168.52.3:22122 # 服务器2
tracker_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 # 服务器1
tracker_server=192.168.52.3:22122 # 服务器2
tracker_server=192.168.52.4:22122 # 服务器3
url_have_group_name=true
store_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