FastDFS+Nginx安装配置
目录
版本:注意版本匹配问题(可在版本说明中查看
- FastDFS :v6.09 or higher version
- libfastcommon:1.0.60
- libserverframe:1.1.19
- cd fastdfs-nginx-module:V1.23
- nginx:nginx-1.16.1
下载上传安装包到服务器
项目地址:
https://github.com/happyfish100
FastDFS安装
1、安装FastDFS依赖库
1. 编译环境
安装 gcc、libevent、libevent-devel
yum install -y gcc gcc-c++ libevent libevent-devel make automake autoconf libtool
2. 安装 libfastcommon及libserverframe 库
- 上传下载好的包到/usr/local/src 或
cd /usr/local/src wget https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.60.tar.gz wget https://github.com/happyfish100/libserverframe/archive/refs/tags/V1.1.19.tar.gz
- 解压
tar -zxvf libfastcommon-1.0.60.tar.gz
tar -zxvf libserverframe-1.1.19.tar.gz
- 进入安装目录,执行编译、安装
- 安装libfastcommon
cd libfastcommon-1.0.60 ./make.sh && ./make.sh install
- 安装libserverframe
cd libserverframe-1.1.19 ./make.sh && ./make.sh install
- 安装libfastcommon
2、安装FastDFS及配置
- 传包 或
cd /usr/local/src wget https://github.com/happyfish100/fastdfs/archive/refs/tags/V6.09.tar.gz
- 解压
tar -zxvf fastdfs-6.09.tar.gz
- 进入安装目录,执行编译、安装
cd fastdfs-6.09 ./make.sh && ./make.sh install
- 拷贝配置文件(如果不拷贝,搭配nginx访问会报错
cp /usr/local/src/fastdfs-6.09/conf/http.conf /etc/fdfs/ #供nginx访问使用 cp /usr/local/src/fastdfs-6.09/conf/mime.types /etc/fdfs/ #供nginx访问使用
- 查看编辑及配置文件,FastDFS编译出来的文件存放在
/usr/bin
目录下,所有配置文件存放在/etc/fdfs
目录下ll /usr/bin/fdfs* -rwxr-xr-x 1 root root 380264 Sep 24 00:11 /usr/bin/fdfs_appender_test -rwxr-xr-x 1 root root 380040 Sep 24 00:11 /usr/bin/fdfs_appender_test1 -rwxr-xr-x 1 root root 367008 Sep 24 00:11 /usr/bin/fdfs_append_file -rwxr-xr-x 1 root root 365648 Sep 24 00:11 /usr/bin/fdfs_crc32 -rwxr-xr-x 1 root root 367040 Sep 24 00:11 /usr/bin/fdfs_delete_file -rwxr-xr-x 1 root root 367768 Sep 24 00:11 /usr/bin/fdfs_download_file -rwxr-xr-x 1 root root 367712 Sep 24 00:11 /usr/bin/fdfs_file_info -rwxr-xr-x 1 root root 387328 Sep 24 00:11 /usr/bin/fdfs_monitor -rwxr-xr-x 1 root root 367280 Sep 24 00:11 /usr/bin/fdfs_regenerate_filename -rwxr-xr-x 1 root root 1297648 Sep 24 00:11 /usr/bin/fdfs_storaged -rwxr-xr-x 1 root root 390160 Sep 24 00:11 /usr/bin/fdfs_test -rwxr-xr-x 1 root root 389384 Sep 24 00:11 /usr/bin/fdfs_test1 -rwxr-xr-x 1 root root 509800 Sep 24 00:11 /usr/bin/fdfs_trackerd -rwxr-xr-x 1 root root 367984 Sep 24 00:11 /usr/bin/fdfs_upload_appender -rwxr-xr-x 1 root root 368992 Sep 24 00:11 /usr/bin/fdfs_upload_file ll /etc/fdfs/ total 32 -rw-r--r-- 1 root root 1909 Sep 24 00:11 client.conf -rw-r--r-- 1 root root 10246 Sep 24 00:11 storage.conf -rw-r--r-- 1 root root 620 Sep 24 00:11 storage_ids.conf -rw-r--r-- 1 root root 9138 Sep 24 00:11 tracker.conf
- FastDFS单机模式配置
-
tracker配置
vim /etc/fdfs/tracker.conf
base_path=/home/fastdfs/tracker # 存储日志和数据的根目录, 需创建
-
storage配置
vim /etc/fdfs/storage.conf
base_path=/home/fastdfs/storage # 数据和日志文件存储根目录, 需创建 store_path_count = 1 #指定真正存放文件的目录的个数,默认为1 store_path0=/home/fastdfs/first # 第一个存储目录, 需创建 可添加多个目录配置为集群模式 #store_path0=/home/fastdfs/second 第二个存储目录, 需创建 tracker_server=60.204.207.52:22122 # tracker服务器IP和端口 可有多个服务器 #tracker_server=60.204.207.53:22122 # tracker服务器IP和端口 http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
-
client配置
vim /etc/fdfs/client.conf
base_path=/home/fastdfs/client #存放日志的目录, 需创建 tracker_server=60.204.207.52:22122 # 服务器1 注册当前存储节点的跟踪器地址,默认端口号为22122
-
- FastDFS集群模式配置
-
tracker配置
vim /etc/fdfs/tracker.conf
base_path=/home/fastdfs/tracker # 存储日志和数据的根目录, 需创建
-
storage配置
vim /etc/fdfs/storage.conf
#需要修改的内容如下 port=23000 # storage服务端口(默认23000,一般不修改) base_path=/home/fastdfs/storage # 数据和日志文件存储根目录 store_path0=/home/fastdfs/first # 第一个存储目录 tracker_server=60.204.207.52:22122 # 服务器1 tracker_server=60.204.207.53:22122 # 服务器2 tracker_server=60.204.207.54:22122 # 服务器3 http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
-
client配置
vim /etc/fdfs/client.conf
#需要修改的内容如下 base_path=/home/fastdfs/client tracker_server=60.204.207.52:22122 # 服务器1 tracker_server=60.204.207.53:22122 # 服务器2 tracker_server=60.204.207.54:22122 # 服务器3
-
3、启动(以下启动方式任选其一
文件方式启动
1. 启动tracker服务
fdfs_trackerd /etc/fdfs/tracker.conf
2. 启动storage服务
fdfs_storaged /etc/fdfs/storage.conf
配置systemd启动
1. tracker
修改 /usr/lib/systemd/system/fdfs_trackerd.service 中的 PIDFile,格式为:
PIDFile=$base_path/data/fdfs_trackerd.pid
vim /usr/lib/systemd/system/fdfs_trackerd.service
PIDFile=/home/fastdfs/tracker/data/fdfs_trackerd.pid #修改目录
systemctl start fdfs_trackerd #启动tracker服务
systemctl restart fdfs_trackerd #重启tracker服务
systemctl stop fdfs_trackerd #停止tracker服务
systemctl enable fdfs_trackerd #开机自启动
2. storage
修改 /usr/lib/systemd/system/fdfs_storaged.service 中的 PIDFile,格式为:
PIDFile=$base_path/data/fdfs_storaged.pid
vim /usr/lib/systemd/system/fdfs_storaged.service
PIDFile=/home/fastdfs/storage/data/fdfs_storaged.pid #修改目录
systemctl start fdfs_storaged #启动storage服务
systemctl restart fdfs_storaged #重启storage服务
systemctl stop fdfs_storaged #停止动storage服务
systemctl enable fdfs_storaged #开机自启动
查看storage是否已经注册到了tracker下
fdfs_monitor /etc/fdfs/storage.conf
fdfs_monitor /etc/fdfs/storage.conf
[2023-09-24 03:29:18] DEBUG - base_path=/home/fastdfs/storage, connect_timeout=5, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=1, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
server_count=1, server_index=0
tracker server is 60.204.207.52:22122 ###说明注册成功
group count: 1
Group 1:
group name = group1
....
集群模式检测
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息
4、测试
fdfs命令格式
- 上传文件命令:
fdfs_test <config_file> <operation> <local_filename>
:- config_file:配置文件的位置
- operation:upload,download,getmeta,setmeta,delete and query_servers
- local_filename:要上传的文件名字
- 下载文件命令:
fdfs_test <config_file> download <group_name> <remote_filename>
- group_name: 要下载的文件所在的组名
- remote_filename:要下载的文件名(要指定在fastDFS中存储的名字)
- 删除文件命令:
fdfs_test <config_file> delete <group_name> <remote_filename>
另一种种方式:
测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
#上传
fdfs_upload_file <config_file> <local_filename>
命令 配置文件 本地文件
#下载 例:
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/PMzOQmUPWzSAX0DbABAvAG3SAAY569.jpg
#删除 例
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/PMzOQmUPWzSAX0DbABAvAG3SAAY569.jpg
执行上传命令:
fdfs_upload_file /etc/fdfs/client.conf test.jpg
group1/M00/00/00/PMzOQmUPWzSAX0DbABAvAG3SAAY569.jpg #此处为返回的文件保存路径
nginx安装配置
1、安装依赖
nginx依赖
yum install -y pcre pcre-devel zlib zlib-devel openssl-devel
fastdfs-nginx-module模块
cd /usr/local/src/
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.23.tar.gz
tar -zxvf /usr/local/src/fastdfs-nginx-module-1.23.tar.gz
#拷贝mod_fastdfs.conf到/etc/fdfs/
cp /usr/local/src/fastdfs-nginx-module-1.23/src/mod_fastdfs.conf /etc/fdfs/
配置mod_fastdfs.conf
vim /etc/fdfs/mod_fastdfs.conf
base_path=/home/fastdfs/nginx_mod # 指定日志存放位置,需创建
tracker_server=60.204.207.52:22122 # 指定tracker的ip和端口
group_name=group1 # 组名
url_have_group_name = false # true表示请求的路径包含组名,默认为false,为false时,组名默认为上面group_name指定的值
store_path0=/home/fastdfs/first # 指定数据存放的位置, 同/etc/fdfs/storage.conf中
以下引述可以不配置(指定头文件位置:本次不添加也可成功部署)
配置
/usr/local/src/fastdfs-nginx-module-1.23/src/config
查看头文件
ll -d /usr/local/include/fast*
ls: cannot access /usr/local/include/fast*: No such file or directory
ll -d /usr/include/fast*
drwxr-xr-x 2 root root 4096 Sep 23 23:50 /usr/include/fastcommon
drwxr-xr-x 2 root root 4096 Sep 24 00:11 /usr/include/fastdfs
vim /usr/local/src/fastdfs-nginx-module-1.23/src/config
ngx_module_incs=“/usr/local/include”
改为
ngx_module_incs=“/usr/include”
2、安装nginx
-
下载、解压安装包
cd /usr/local/src wget http://nginx.org/download/nginx-1.16.1.tar.gz tar -zxvf nginx-1.16.1.tar.gz
-
编译安装
添加fastdfs-nginx-module模块
cd /usr/local/src/nginx-1.16.1 ./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.23/src/ make && make install #编译安装
-
配置nginx访问
vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下 tracker_server=60.204.207.52:22122 #tracker服务器IP和端口 url_have_group_name=true store_path0=/home/fastdfs/first/ #数据存储目录 #配置nginx.config vim /usr/local/nginx/conf/nginx.conf #添加如下配置 server { listen 8888; ## 该端口与 storage.conf中的http.server_port相同 server_name localhost; location ~/group[0-9]/ M([0-9])([0-9]) { ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } #测试,用外部浏览器访问FastDFS测试传过jpg,引用返回的ID 注意 : 一定要加端口 http://60.204.207.52: 8888 /group1/M00/00/00/PMzOQmUPWzSAX0DbABAvAG3SAAY569.jpg #返回内容则部署完成
3、启动nginx
/usr/local/nginx/sbin/nginx #启动nginx
/usr/local/nginx/sbin/nginx -s reload #重启nginx
/usr/local/nginx/sbin/nginx -s stop #停止nginx
4、测试
#测试,用外部浏览器访问FastDFS测试传的jpg,引用返回的ID 注意:一定要加端口
http://60.204.207.52: 8888 /group1/M00/00/00/PMzOQmUPWzSAX0DbABAvAG3SAAY569.jpg
#返回内容则部署完成
注意:可能出现的错误
- 上传成功 但是nginx报错404或nginx无法访问 :检查mod_fastdfs.conf文件中的store_path0是否一致,访问地址有没有添加端口
- 如果不是在/usr/local/src文件夹下安装 可能会编译出错
- 如果 unknown directive “ngx_fastdfs_module” in /usr/local/nginx/conf/nginx.conf:151,可能是nginx一直是启动的,必须要重启nginx才可以,
nginx -s reload
无效。 - 如果nginx的error.log中提示:ERROR - file: ini_file_reader.c, line: 1051, include file “http.conf” not exists, line: "#include http.conf"ERROR - file: /root/fastdfs-nginx-module/src/common.c, line: 163, load conf file “/etc/fdfs/mod_fastdfs.conf” fail, ret code: 2
需要将fastdfs的源码中的conf文件夹中的http.conf和mime.types cp到 etc/fdf文件夹中。