一、centos7.9 FASTDFS服务搭建
1.安装FastDFS
yum -y install gcc-c++
ps:检查gcc-c++是否已经安装 whereis gcc
yum -y install libevent
下载 libfastcommon :wget -O libfastcommon-1.0.39.tar.gz https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39
tar -zxvf libfastcommon-1.0.39.tar.gz
cd libfastcommon-1.0.39/ ---先执行 ./make.sh ----然后执行 ./make.sh install
下载 fastdfs:https://github.com/happyfish100/fastdfs/releases 选择合适的版本
wget -O fastdfs-5.11.tar.gz https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11
tar -zxvf fastdfs-5.11.tar.gz ---》 cd fastdfs-5.11/ ----》./make.sh ---》./make.sh install
默认安装方式安装后的相应文件与目录
A、服务脚本:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
B、配置文件(这三个是作者给的样例配置文件)
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
C、命令工具在 /usr/bin/ 目录下:
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh
配置 Tracker
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vim tracker.conf
# 配置文件是否不生效,false 为生效
disabled=false
# 提供服务的端口
port=22122
# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/fastdfs/tracker
# HTTP 服务端口 默认8080 ,建议修改 防止冲突
http.server_port=9080
mkdir -p /fastdfs/tracker
启动Tracker
/etc/init.d/fdfs_trackerd start
service fdfs_trackerd start
systemctl start fdfs_trackerd
查看 FastDFS Tracker 是否已成功启动 :
systemctl status fdfs_trackerd
netstat -tulnp|grep fdfs
关闭Tracker命令
service fdfs_trackerd stop
systemctl stop fdfs_trackerd #centos7 推荐
/etc/init.d/fdfs_trackerd stop
设置Tracker开机启动
# chkconfig fdfs_trackerd on
或
#systemctl enable fdfs_trackerd.service
或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_trackerd start
2.配置 FastDFS 存储 (Storage)
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim storage.conf
# 配置文件是否不生效,false 为生效
disabled=false
# 指定此 storage server 所在 组(卷)
group_name=group1
# storage server 服务端口
port=23000
# 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30
# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) (注 :这里不是上传的文件存放的地址,之前版本是的,在某个版本后更改了)
base_path=/fastdfs/storage/base
# 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。
store_path_count=1
# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/fastdfs/storage
# FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。
# 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
subdir_count_per_path=256
# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行
tracker_server=192.168.0.200:22122
tracker_server=192.168.0.201:22122
# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59
# 访问端口 默认80 建议修改 防止冲突
http.server_port=9888
创建Storage基础数据目录,对应base_path目录
# 对应base_path
# mkdir -p /fastdfs/storage/base
# 这是配置的store_path0路径,有多个要创建多个
# mkdir -p /fastdfs/storage/
启动 Storage(启动Storage前确保Tracker是启动的。初次启动成功,会在 /fastdfs/storage/base(base_path) 目录下创建 data、 logs 两个目录。)
可以用这种方式启动
# /etc/init.d/fdfs_storaged start
# service fdfs_storaged start
# systemctl start fdfs_storaged #centos7 推荐
查看 Storage 是否成功启动
# netstat -unltp|grep fdfs #23000 端口正在被监听,就算 Storage 启动成功。
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 28834/fdfs_storaged
# systemctl status fdfs_storaged # 查看服务状态
● fdfs_storaged.service - LSB: FastDFS storage server
Loaded: loaded (/etc/rc.d/init.d/fdfs_storaged; bad; vendor preset: disabled)
Active: active (running) since 四 2019-05-09 09:22:53 CST; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 23015 ExecStart=/etc/rc.d/init.d/fdfs_storaged start (code=exited, status=0/SUCCESS)
Tasks: 1
Memory: 184.0K
CGroup: /system.slice/fdfs_storaged.service
└─23023 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
5月 09 09:22:53 localhost.localdomain systemd[1]: Starting LSB: FastDFS storage server...
5月 09 09:22:53 localhost.localdomain fdfs_storaged[23015]: Starting FastDFS storage server:
5月 09 09:22:53 localhost.localdomain systemd[1]: Started LSB: FastDFS storage server.
关闭Storage
service fdfs_storaged stop
systemctl stop fdfs_storaged #centos7 推荐
/etc/init.d/fdfs_storaged stop
查看Storage和Tracker是否在通信:
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
设置 Storage 开机启动
# chkconfig fdfs_storaged on
或
#systemctl enable fdfs_storaged.service (推荐)
或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_storaged start
上传测试
# cd /etc/fdfs
# cp client.conf.sample client.conf
#创建client目录
# mkdir -p /fastdfs/client
# vim client.conf
修改如下配置即可,其它默认。
# Client 的数据和日志目录
base_path=/fastdfs/client
# Tracker端口
tracker_server=192.168.0.200:22122
上传测试
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf namei.jpeg
上传成功后返回文件ID号:group1/M00/00/00/wKgz6lnduTeAMdrcAAEoRmXZPp870.jpeg
安装配置Nginx ,http访问文件,实现下载功能
# vim /usr/local/nginx/conf/nginx.conf
配置如下
server {
listen 8081;
server_name 192.168.0.200;
location /group1/M00{
alias /fastdfs/storage/data/;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
FastDFS 配置 Nginx 模块-----安装配置fastdfs-nginx-module模块
fastdfs-nginx-module 模块说明
为什么要安装 fastdfs-nginx-module(可跳过)
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.1.138,上传成功后文件 ID已经返回给客户端。
此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.1.139,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.1.139 上取文件,就会出现文件无法访问的错误。
而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
下载安装 fastdfs-nginx-module
#cd /usr/local/src
#wget -O fastdfs-nginx-module-1.20.tar.gz https://codeload.github.com/happyfish100/fastdfs-nginx- module/tar.gz/V1.20
编辑 fastdfs-nginx-module-1.20/src/config 文件(此步骤需根据具体情况选择是否需要修改)
必须做如下修改 ,否则编译nginx时报致命错误,参见 https://blog.csdn.net/zzzgd_666/article/details/81911892
vim /usr/local/src/fastdfs-nginx-module-1.20/src/config
修改为如下内容
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='2561024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='2561024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'"
fi
改变的文件内容(改为自己的路径)
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
配置nginx,添加fastdfs-nginx-module 模块
# 先停掉nginx服务 如果没有配置为服务 则使用 # /usr/local/nginx/sbin/nginx -s stop
# systemctl stop nginx
#进入nginx源码目录
# cd /usr/local/src/nginx-1.16.0/
#添加fastdfs-nginx-module 模块
#[root@localhost nginx-1.16.0]#./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src
#重新编译安装nginx
#[root@localhost nginx-1.16.0]# make
#[root@localhost nginx-1.16.0]# make install
#验证是否加载fastdfs-nginx-module模块是否 ,有如下标红部分表示成功
# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
configure arguments: --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src
复制 fastdfs-nginx-module 源码中的配置文件 mod_fastdfs.conf 到/etc/fdfs 目录, 并修改
# cp /usr/local/src/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
修改如下配置,其它默认
# 连接超时时间
connect_timeout=10
# Tracker Server
tracker_server=192.168.0.200:22122
# StorageServer 默认端口
storage_server_port=23000
# 如果文件ID的uri中包含/group**,则要设置为true
#url_have_group_name = true
# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/fastdfs/storage
复制 FastDFS 的部分配置文件到/etc/fdfs 目录
#cd /usr/local/src/fastdfs-5.11/conf/
[root@localhost conf]# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
配置nginx,修改nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
修改配置,其它的默认
在默认80端口下添加fastdfs-nginx模块
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
完整配置如下 供参考
user root;
worker_processes 1;
even