由于项目功能中涉及到了图片以及文件上传的功能,需要同步pc端项目与手机端的图片、文件,因此搭建一个FastDFS。
-
FastDFS
fastdfs是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)、客户端(client)三部分组成。
跟踪器主要负责调度工作,在访问上起到负载均衡的作用。
存储节点负责存储文件,
主要解决海量数据存储问题,适合以中小文件(4KB<file_size<500MB)为载体的在线服务 -
配置环境
centos7
tracker server: 10.173.X.X1 ,10.173.X.X2
storage server:10.173.X.X1 10.173.X.X3(group1)
storage server:10.173.X.X2 10.173.X.X4(group2) -
安装配置 【tracker server】
-
- 安装libfastcommon【它是安装fastdfs前的依赖】
-
安装所需依赖 :
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
-
安装libfastcommon :
[访问 https://github.com/happyfish100/libfastcommon.
,下载zip包 -
解压后进入, 执行
./make.sh
./make.sh install
-
libfastcommon.so默认安装到了/usr/lib64/libfastcommon.so,但fastdfs主程序设置的lib目录是/usr/lobal/lib,因此需要建立软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
-
- 安装fastdfs
-
进入fastdfs目录
-
./make.sh
./make.sh install
-
fastdfs配置文件解释:
文件名 | 功能 |
---|---|
tracker.conf | 负责均衡调度服务器配置文件 |
client.conf | 客户端上传配置文件 |
http.conf | http服务器配置文件 |
storage.conf | 文件存储服务器配置文件 |
mime.types | 文件类型配置文件 |
-
- 修改tracker server 的配置文件
-
安装成功后,在/etc/目录下生成fdfs目录,包含了fdfs配置文件
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
-
初始化文件夹目录 :
mkdir /opt/fastdfs_tracker
mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data
-
vi /etc/fdfs/tracker.conf
base_path=/opt/fastdfs_tracker
store_lookup=0
这里为了做集群上传测试时能看到分别上传到其他节点,
store_group=group1
这里将10.173.X.X1设置为group1,10.173.X.X2中的配置项设置为group2 -
- 启动tracker
-
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
-
查看是否启动成功(出现对应的fdfs端口号表示启动成功):
netstat -unlpt |grep fdfs
-
查看是否报错
-
cat /opt/fastdfs_tracker/logs/trackerd.log
以上启动了tracker,但并没有关联起来,由于X1和X2都是即作tracker和storage,所以初始化文件路径时已经做了storage的操作
4. 配置storage
-
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
-
vim /etc/fdfs/storage.conf
group_name=group1
当前的storage节点属于那个group
port=23000
配置当前group的端口号,两个group要不一样,group2设置为23001
base_path=/opt/fastdfs_storage
设置storage存放日志的路径
store_path=/opt/fastdfs_storage_data
设置storage存储路径,若没有设置,则使用base_path。(该地址是文件存储地址,而不是日志存放地址)
tracker_server=10.173.X.X1:22122 tracker_server=10.173.X.X2:22122
配置两个tracker的地址 -
启动storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
-
查看是否启动
-
netstat -unlpt |grep fdfs
-
查看日志是否报错
-
cat /opt/fastdfs_storage/logs/storaged.log
-
X3和X4只做storage节点,所以只配置storage.conf
-
vim /etc/fdfs/storage.conf
group_name=group2
port=23001
base_path=/opt/fastdfs_storage
store_path=/opt/fastfs_storage_data tracker_server=10.173.X.X1:22122 tracker_server=10.173.X.X2:22122
-
查看集群状态:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
-
安装nginx,提供http的下载
-
fastdfs的http服务太弱,需要借助nginx来进行http访问的负载
-
下载fast-nginx-module 下载链接
-
- 配置fast-nginx-module
-
vim /fast-nginx-module/src/mod_fastdfs.conf
tracker_server:X1:22122
url_have_group_name = true
cp mod_fastdfs.conf /etc/fdfs/
store_path0 配置和storage.conf中一致
-
vim /fast-nginx-module/src/config
-
将CORE_INCS和CORE_LIBS的路径和libfastcommon的路径保持一致
-
- 解压nginx后,进入nginx目录
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src/
make && make install
- 解压nginx后,进入nginx目录
-
修改配置文件
-
vim /usr/local/nginx/conf/nginx.conf
-
配置负载均衡的路径,最后一个location项
- 查看nginx配置,
nginx -V
(需要将nginx配置到环境变量中)
出现–add-module…则表示模块已经配置好
将fastdfs-master中conf中的http.conf 和mime.types两个文件复制到/etc/fdfs下,否则启动nginx会报错
- 创建软链接,危了nginx能够访问存储路径的时候能直接访问到M00的数据
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
- 启动nginx,
/usr/local/nginx/sbin/nginx
- 查看日志,
cat /usr/loca/nginx/logs/error.log
PS:所有当作stroage的节点机器都必须启动nginx作为storage负载
- 测试
-
- 修改/etc/fdfs/client.conf
cp client.conf.sample client.conf
vim client.conf
修改tracker server项-
- 可使用 /usr/bin/fdfs_test 进行测试上传、下载操作
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/123.txt
- 会存放在M00/00/00,文件名做相应转换,我这里是
Cq0c212J8FiAZzB_AAAABFqC_Qg796.txt
- 浏览器访问
http://10.173.X.X1/group1/M00/00/00/Cq0c212J8FiAZzB_AAAABFqC_Qg796.txt