一、介绍
FastDFS是一个开源的高性能分布式文件系统。它的主要功能包括:文件存储,文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载平衡问题。FastDFS应该满足基于照片共享站点和视频共享站点等文件的网站的要求。
FastDFS具有两个角色:tracker和storage。tracker负责调度和负载均衡以访问文件。storage负责存储文件和文件管理,包括:文件存储,文件同步,提供文件访问界面。它还管理元数据,这些元数据是表示为文件的键值对的属性。例如:width = 1024,键是“width”,值是“1024”。
tracker和storage包含一台或多台服务器。tracker或storage群集中的服务器可以随时添加到群集中或从群集中删除,而不会影响在线服务。tracker群集中的服务器是对等的。
官方文档:https://github.com/happyfish100/fastdfs/wik
二、安装部署
1、环境准备
名称 | 说明 |
---|---|
centos | 7.x |
libfastcommon | FastDFS分离出的一些公用函数包 |
FastDFS | FastDFS本体 |
fastdfs-nginx-module | FastDFS和nginx的关联模块 |
nginx | nginx1.16.1 |
2、安装gcc和libevent
#安装gcc环境
yum install git gcc gcc-c++
#安装libevent
yum -y install libevent
3、安装libfastcommon
# 解压libfastcommon-1.0.42.tar.gz
cd libfastcommon-1.0.42/
# 编译
./make.sh
# 安装
./make.sh install
4、安装FastDFS
# 解压fastdfs-6.04.tar.gz
cd fastdfs-6.04/
# 编译
./make.sh
# 安装
./make.sh install
fastdfs相关命令在/usr/bin下
fastdfs配置文件在/etc/fdfs下
将解压缩后的fastdfs里面的conf文件夹下的配置文件,拷贝到/etc/fdfs下统一管理。
cp /opt/soft/FastDFS/fastdfs-6.04/conf/* /etc/fdfs/
5、tracker配置
vim /etc/fdfs/tracker.conf
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/usr/local/fastdfs/tracker # 存储日志和数据的根目录
# 创建文件夹
mkdir -p /usr/local/fastdfs/tracker
# 开放端口(云服务器要配置安全组)
firewall-cmd --permanent --zone=public --add-port=22122/tcp
# 启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
# 查看tracker是否启动成功
ps -ef | grep tracker
6、storage配置
vim /etc/fdfs/storage.conf
group_name=chen #设置组名
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/usr/local/fastdfs/storage # 数据和日志文件存储根目录
store_path0=/usr/local/fastdfs/storage # 第一个存储目录
tracker_server=172.16.25.61:22122 #tracker服务器的IP和端口
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
# 创建文件夹
mkdir -p /usr/local/fastdfs/storage
# 开放端口(云服务器要配置安全组)
firewall-cmd --permanent --zone=public --add-port=23000/tcp
# 启动storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
# 查看storage是否启动成功
ps -ef | grep storage
7、client测试上传文件
#修改/etc/fdfs/client.conf,需要修改的内容如下
base_path=/usr/local/fastdfs/client
tracker_server=172.16.25.61:22122
# 创建文件夹
mkdir -p /usr/local/fastdfs/client
# 测试上传(fdfs_test)
cd /usr/bin
./fdfs_test /etc/fdfs/client.conf upload /home/logo.jpg
This is FastDFS client test program v6.04
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.fastken.com/
for more detail.
[2024-02-28 16:08:18] DEBUG - base_path=/usr/local/fastdfs/client, connect_timeout=10, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=172.16.25.61, port=23000
group_name=chen, ip_addr=172.16.25.61, port=23000
storage_upload_by_filename
group_name=chen, remote_filename=M00/00/00/rBAZPWXe6fKALpOwAAHAQ8bgi3Y271.jpg
source ip address: 172.16.25.61
file timestamp=2024-02-28 16:08:18
file size=114755
file crc32=3336604534
example file url: http://172.16.25.61/chen/M00/00/00/rBAZPWXe6fKALpOwAAHAQ8bgi3Y271.jpg
storage_upload_slave_by_filename
group_name=chen, remote_filename=M00/00/00/rBAZPWXe6fKALpOwAAHAQ8bgi3Y271_big.jpg
source ip address: 172.16.25.61
file timestamp=2024-02-28 16:08:18
file size=114755
file crc32=3336604534
example file url: http://172.16.25.61/chen/M00/00/00/rBAZPWXe6fKALpOwAAHAQ8bgi3Y271_big.jpg
此时还不可以访问到该图片,需要配置web服务
但是可以在/usr/local/fastdfs/storage/data/00/00看到上传的文件
8、安装fastdfs-nginx-module模块到nginx
# 解压fastdfs-nginx-module-1.22.tar.gz
cd fastdfs-nginx-module-1.22/src
# 将mod_fastdfs.conf配置文件拷贝到/etc/fdfs/
cp mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
store_path0=/usr/local/fastdfs/storage #存储目录,和storage.conf里面的配置要一样
tracker_server=172.16.25.61:22122 #tracker服务器的IP和端口
group_name=chen #设置组名
url_have_group_name = true #配置url使用组名
base_path=/usr/local/fastdfs/tmp #配置存储日志文件的位置
创建文件夹
mkdir -p /usr/local/fastdfs/tmp
cd /opt/soft/FastDFS/fastdfs-nginx-module-1.22/src
修改config配置文件,把两个local删除掉,因为之前安装的fastdfs的默认安装路径是/usr/include
vim config
ngx_module_incs="/usr/include"
CORE_INCS="$CORE_INCS /usr/include"
9、安装Nginx提供web服务(nginx要安装在storage所在的服务器)
# 安装gcc环境
yum install git gcc gcc-c++
# 安装pcre
yum install -y pcre pcre-devel
# 安装zlib
yum install -y zlib zlib-devel
# 安装openssl
yum install -y openssl openssl-devel
# 创建文件夹,下面的nginx安装需要用到
mkdir /var/temp/nginx -p
解压nginx-1.16.1.tar.gz 包
进入解压的文件夹,执行下面的命令:
./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=/opt/soft/FastDFS/fastdfs-nginx-module-1.22/src
make && make install
安装完之后在nginx.conf配置监听的服务和端口
cd /usr/local/nginx/conf
vim nginx.conf
listen 8888; ## 该端口为storage.conf中的http.server_port相同,记得开放端口
#添加ngx_fastdfs_module模块,修改为自己设置的组名chen,后面添加文件存储的路径MOO
location /chen/M00 {
ngx_fastdfs_module;
}
修改完配置文件后执行启动nginx
cp /usr/local/nginx/sbin/nginx /usr/bin
nginx
ps -ef |grep nginx
然后访问之前上传的图片,路径如下:
http://172.16.25.61:8888/chen/M00/00/00/rBAZPWXe3XCARALsAAHAQ8bgi3Y525.jpg
如果可以访问的到的话,那么说明已经安装成功了!!!