如何在服务器上手动部署FastDFS
FastDFS架构包括 TrackerServer和StorageServer。客户端请求Tracker Server进行文件上传、下载,通过TrackerServer调度最终由StorageServer完成文件上传和下载。
下载地址
官方网站:https://github.com/happyfish100
配置文档:https://github.com/happyfish100/fastdfs/wiki
参考资料:https://www.oschina.net/question/tag/fastdfs
Java客户端:https://github.com/happyfish100/fastdfs-client-java
通信原理
文件上传
环境上的存储资源一般都会有多个分组(分卷),分卷上有多个节点,确保部分节点失效的情况下仍然能够提供服务。
文件下载
安装准备
操作系统: centos 8.0
安装包:
libfastcommon-1.0.42.tar.gz
fastdfs-6.04.tar.gz
nginx-1.16.1.tar.gz
fastdfs-nginx-module-1.22.tar.gz
部署FastDFS服务
1.安装libfastcommon
yum install -y gcc gcc-c++;
yum install -y libevent; #安装c++环境
cd /home/software/FastDFS; #进入jar包目录解压文件
tar -zxvf libfastcommon-1.0.42.tar.gz;
cd libfastcommon-1.0.42;
./make.sh && ./make.sh install; #编译安装
2.安装fastdfs
cd /home/software/FastDFS; #进入jar包目录解压文件
tar -zxvf fastdfs-6.04.tar.gz;
cd fastdfs-6.04;
./make.sh && ./make.sh install; #编译安装
cp /home/software/FastDFS/fastdfs-6.04/conf/* /etc/fdfs; #将配置文件全部拷贝至fdfs目录下
3.配置tracker服务
mkdir -p /usr/local/fastdfs/tracker;
vim /etc/fdfs/tracker.conf;
#需修改的内容如下
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/usr/local/fastdfs/tracker # 存储日志和数据的根目录
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf; #启动tracker服务
4.配置storage服务
mkdir -p /usr/local/fastdfs/storage;
vim /etc/fdfs/storage.conf;
#需要修改的内容如下
group_name=huawei #组名
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/usr/local/fastdfs/storage # 数据和日志文件存储根目录
store_path0=/usr/local/fastdfs/storage # 第一个存储目录
tracker_server=172.16.110.4:22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf; #启动storage服务
注意tracker服务要先于storage服务启动
5.在storage服务存在的节点上配置client服务
mkdir -p /usr/local/fastdfs/client;
vim /etc/fdfs/client.conf;
#需要修改的内容如下
base_path=/usr/local/fastdfs/client
tracker_server=172.116.1.4:22122 #tracker服务器IP和端口
#保存后测试上传文件功能,返回ID表示成功 如:M00/00/00/***.png
fdfs_upload_file /etc/fdfs/client.conf /home/cat.png
6.在storage服务存在的节点上配置fastdfs-nginx-module
cd /home/software;
tar -zxvf fastdfs-nginx-module-1.22.tar.gz;
cd fastdfs-nginx-module-1.22/src;
vim /home/software/fastdfs-nginx-module-1.22/src/config;
#需要修改的内容如下
ngx_module_incs="/usr/include"
CORE_INCS="$CORE_INCS /usr/include"
cp mod_fastdfs.conf /etc/fdfs/; #解压并拷贝配置文件至统一目录下
mkdir -p /usr/local/fastdfs/temp
vim /etc/fdfs/mod_fastdfs.conf;
#需要修改的内容如下
tracker_server=172.116.1.4:22122 #tracker服务器
group_name=huawei
url_have_group_name=true
store_path0=/usr/local/fastdfs/storage
base_path=/usr/local/fastdfs/temp
7.配置nginx服务
yum -y install pcre pcre-devel;
yum -y install zlib zlib-devel;
yum -y install openssl openssl-devel; #配置环境依赖
tar -zxvf /home/software/nginx-1.16.1.tar.gz;
cd /home/software/nginx-1.16.1;
mkdir -p /var/temp/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=/home/software/FastDFS/fastdfs-nginx-module-1.22/src; #安装nginx服务
make && make install; #编译nginx
#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
/usr/local/nginx/sbin/nginx; #启动nginx
/usr/local/nginx/sbin/nginx -s reload #重启nginx
/usr/local/nginx/sbin/nginx -s stop #停止nginx
FastDFS整合到项目中
添加依赖
com.github.tobato
fastdfs-client
Application.yml中添加FastDFS配置信息以及文件大小限制
spring:
servlet:
multipart:
max-file-size: 51200 # 限制文件以及请求大小为500kb
max-request-size: 51200
############################################################
#
# fastdfs配置信息
#
############################################################
fdfs:
connect-timeout: 30
so-timeout: 30
tracker-list: 172.116.1.4:22122