FASTDFS与NGINX结合搭建文件服务器
FASTDFS介绍
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
在平时的学习和项目中,博主使用的是阿里云的OSS对象存储服务,毕竟是阿里云旗下的产品,有很全的API供你学习使用。当然,它是付费产品。其实就几顿外卖的钱就能包年了。
第一次了解FastDFS是在博主上大学的时候,一门《云计算与大数据》里面讲了这个,还有Hadoop的HDFS。这里就不做过多的讲解了,毕竟博主也只是略知一二,感兴趣的读者可以使用各种方法去了解和学习。
上面说了阿里云OSS方便好用,那为什么还要自己去搭建一个文件服务器呢?
①. 自己动手尝试一个从来没接触过得东西,如果成功了,会很有成就感;就算失败了,也会去找到解决的办法。
②. OSS用来存储一些快速访问的东西,就很便捷。例如:博主将博文中的图片存储到里面,可以直接访问,还能通过CDN来加速。当然FastDFS也可以直接访问,但是中间需要借助其他云服务器的支持。如果使用本地的服务器,是没办法让其他人访问的。
③. 毕竟OSS是收费的,博主使用的是最小存储容量的套餐。所以,在学习中使用FastDFS就足够了。
上面三条因人而异,主要是指博主使用FastDFS的原因。
搭建过程
准备工具
所有环境都是基于Linux的,没有安装Linux的读者,自行查阅安装方法,博主这里就不做讲解了。
首先下载好所需的压缩包,上传到Linux服务器上。
1.FastDFS_v5.05.tar.gz
2.fastdfs-nginx-module_v1.16.tar.gz
3.libfastcommon-1.0.7.tar.gz
4.nginx-1.16.1.tar.gz
通过使用Xshell软件中的Xftp工具将上述压缩包上传至Linux服务器。
安装编译工具和准备工作
没有修改镜像源地址的读者,可以修改下Linux的镜像源,博主这里使用的是阿里的镜像源。如何配置,可以参考下面地址,找到自己对应的版本配置即可。博主这里使用的是Centos 8。
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11ium3oX
镜像配置好就可以下载编译所需要的一些库了,执行下面的命令:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
下载FastDFS所需要的依赖
yum -y install libevent
安装完所需依赖,开始解压libfastcommon-1.0.7.tar.gz
tar -zxvf libfastcommon-1.0.7.tar.gz -C /usr/local/software
进入解压完的目录。
cd /usr/local/software/libfastcommon-1.0.7
这里的software是博主自己创建的,主要存放解压后的软件,读者根据自己的习惯,创建目录即可。
接下来就是编译、安装了
-
./make.sh # 编译 -
./make.sh install # 安装
完成后,进入lib64目录,通过 ll 命令查看
-
cd /usr/lib64 -
ll libfast** # 查看所有以libfast开头的内容
这里需要执行的操作是,将libfastcommon.so拷贝到lib目录下,因为lib是32位的。
cp libfastcommon.so /usr/lib
安装编译FASTDFS
第一步还是解压
tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/software/
解压完进入目录进行编译和安装。
-
./make.sh -
./make.sh install
然后查看相应的配置
-
cd /usr/bin -
ll fdfs* # 查看所有以fdfs开头的内容
有部分配置在/etc/fdfs这个目录,如图所示
将FastDFS的配置文件拷贝到当前目录中。
cd /usr/local/software/FastDFS/
这里conf目录中的内容,都需要拷贝到/etc/fdfs/目录下。
cp * /etc/fdfs/
配置TRACKER服务
/etc/fdfs/这个目录下有一个tracker.conf文件,需要进行修改。
vim tracker.conf
在文件中修改日志路径为:base_path=/fastdfs/tracker
因为不存在/fastdfs/tracker这个文件夹,所以进行创建。
mkdir /fastdfs/tracker -p # -p是递归创建
进入bin目录,fdfs_trackerd就是启动tracker服务的命令。
使用如下命令启动。
-
fdfs_trackerd /etc/fdfs/tracker.conf # 后面跟的是刚才修改的配置文件的路径 -
fdfs_trackerd /etc/fdfs/tracker.conf restart # 重启服务
查看服务启动是否成功
ps aux|grep tracker
配置STORAGE服务
刚才给tracker服务配置了日志目录,storage也是同样需要日志目录,所以,首先创建日志目录。在刚才的fastdfs目录下创建
mkdir storage/log -p
修改配置文件
vim storage.conf
将base_path修改为如图。
这里还需要修改group_name,group_name=group1是组织名,例如,访问图片时,需要将当前的group_name作为前缀加到地址中。
group_name=qfcwx # 这里根据自己习惯修改
store_path0=/home/yuqing/fastdfs这个指实际图片存储的路径,首先在刚才日志的上级storage目录中创建一个存储路径
mkdir file
然后修改配置文件
将store_path0修改为刚才创建的目录。
可以看到上面还有一个tracker_server,这个是tracker服务的地址,根据自己的虚拟机的ip地址进行修改即可。博主这里修改为:
tracker_server=192.168.0.104:22122 # 只用修改前面的ip,端口号不需要修改
配置文件的修改,这里就完成了,下面就进入bin目录,fdfs_storaged这个就是启动storage服务的命令。
使用如下命令启动
-
cd /usr/bin -
fdfs_storaged /etc/fdfs/storage.conf # 后面跟的是刚才修改的配置文件的路径 -
fdfs_storaged /etc/fdfs/storage.conf restart # 重启
查看服务启动是否成功
ps aux|grep storage
配置CLIENT
/etc/fdfs目录下有一个client.conf的文件,这个可以作为客户端进行测试。
修改文件
vim client.conf
同样需要修改日志的地址,在fastdfs目录下创建一个client目录。
上面的tracker_server就是tracker服务的地址,读者根据自己虚拟机的ip地址进行修改。
测试
进入bin目录
-
cd /usr/bin/ -
ll fdfs* # 查看
fdfs_test就是用于客户端测试的,测试命令为
fdfs_test /etc/fdfs/client.conf upload /usr/local/image/mvvm.png
/etc/fdfs/client.conf: 是配置文件的地址。
upload: 是需要加的命令。
/usr/local/image/mvvm.png:是需要上传的图片的地址。
这里就会返回成功的地址了。
目前还不能通过地址来访问,这里需要配置Nginx,但是如果使用Xftp就能查看,此时,文件存储的目录为:/fastdfs/storage/file/data/00/00
。
/fastdfs/storage/file 是刚才配置storage服务时,文件的存放路径。
解压FASTDFS和NGINX关联的压缩包
这里需要对Nginx的FastDFS模块进行解压。
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/software/
进入解压完的目录,到src目录,修改config文件,将文件路径中存在的local删掉。
编译安装NGINX
前面已经安装了编译所需要的依赖库了,所以这里再安装一个Nginx所支持的正则表达式库。
yum install pcre pcre-devel
解压Nginx的压缩包
tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/software/
首先到刚刚解压的fastdfs-nginx-module的src目录,拷贝当前路径
pwd # 查看当前所在完整路径
博主这里的路径是:/usr/local/software/fastdfs-nginx-module/src
然后到解压后的Nginx目录下,执行
-
./configure \ -
--prefix=/usr/local/nginx \ -
--pid-path=/var/run/nginx/nginx.pid \ -
--lock-path=/var/lock/nginx.lock \ -
--error-log-path=/var/log/nginx/error.log \ -
--http-log-path=/var/log/nginx/access.log \ -
--with-http_gzip_static_module \ -
--http-client-body-temp-path=/var/temp/nginx/client \ -
--http-proxy-temp-path=/var/temp/nginx/proxy \ -
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ -
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ -
--http-scgi-temp-path=/var/temp/nginx/scgi \ -
--add-module=/usr/local/software/fastdfs-nginx-module/src
注意:这里的–add-module后面的值就是刚刚拷贝的fastdfs-nginx-module的src目录
之后再执行 make 进行编译;make install 进行安装。
配置FASTDFS
将fastdfs-nginx-module模块下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录
cp mod_fastdfs.conf /etc/fdfs/
进入/etc/fdfs/目录,修改这个文件
vim mod_fastdfs.conf
找到下面的配置进行修改:
1、base_path=/tmp用户存储日志的,将其改为/fastdfs/temp
2、tracker_server=tracker:22122修改为当前服务器的ip地址
3、group_name=groupname1 修改为之前storage中同样的名字
4、url_have_group_name = false 这个表示是否需要增加一个上述自定义名字的需要,改为true
配置NGINX
这里需要配置Nginx,进入刚刚编译时,–prefix所指定的目录,可以看到nginx目录下面有这几个文件夹。
进入conf目录,修改nginx.conf文件,在http指令块中新增如下配置。
-
server{ -
listen 88; -
server_name 192.168.0.104; -
location /qfcwx/M00 { -
ngx_fastdfs_module; -
} -
}
注意,这里不用删除默认的80端口的server指令,重新添加一个server指令即可。
server_name:指服务器的ip或者域名。
location:指访问/qfcwx/M00下的所有东西。
启动NGINX
在启动之前,对Nginx进行测试
./sbin/nginx -t
如果出现:2: No such file or directory 按照提示创建目录即可。
再次测试,没问题了,就可以启动Nginx了。
./sbin/nginx # 启动命令
访问之前。保证Linux的防火墙是关闭状态。
查看防火墙状态:
firewall-cmd --state
如果显示 running ,则需要关闭。
-
systemctl start firewalld.service #启动防火墙 -
systemctl stop firewalld.service #停止防火墙 -
systemctl reloadt firewalld.service #重载配置
访问图片
博主这里的路径是:
http://192.168.0.104:88/qfcwx/M00/00/00/wKgAaF5KAXyAFt-fABCbbRHQLlU939.png
如果出现 404,是因为FastDFS和Nginx之间配置还未完成。
需要修改/etc/fdfs/目录下的mod_fastdfs.conf文件
store_path0=/home/yuqing/fastdfs # 需要和storage.conf配置文件的路径一致
博主这里是:/fastdfs/storage/file
修改完成后,需要重新启动tracker服务、storage服务以及Nginx服务。
重启所有服务
-
/usr/bin/fdfs_trackerd tracker.conf restart -
/usr/bin/fdfs_storaged storage.conf restart -
./sbin/nginx -s reload
再次访问上面的路径,就能看到图片成功上传了。
这就证明FastDFS的文件服务器搭建完成了。
因为相信,所以看见.