FastDFS单机部署 + Nginx

安装环境依赖

CentOS

yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

Debian

apt-get -y install git gcc g++ make automake autoconf libtool pcre2-utils libpcre2-dev zlib1g zlib1g-dev openssl libssh-dev wget vim

注意:以下涉及的所有安装包如果下载不下来,建议先下载到本地,再上传到服务器部署

安装 libfastcommon

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
tar -xvf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install

libfastcommon.so 安装到了/usr/lib64/libfastcommon.so,但fastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

安装 & 配置 FastDFS

wget https://github.com/happyfish100/fastdfs/archive/refs/tags/V5.05.tar.gz
tar -xvf fastdfs-5.05.tar.gz
cd fastdfs-5.05/
./make.sh && ./make.sh install

注意:FastDFS 默认安装方式安装后启动路径为

/etc/init.d/fdfs_storaged 
/etc/init.d/fdfs_trackerd 

FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/

#创建软链接
ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
ln -s /usr/bin/fdfs_storaged   /usr/local/bin
ln -s /usr/bin/stop.sh         /usr/local/bin
ln -s /usr/bin/restart.sh      /usr/local/bin

配置 FastDFS tracker

#进入/etc/fdfs目录,复制FastDFS样例配置文件tracker.conf.sample,并重命名为tracker.conf
cp tracker.conf.sample tracker.conf
mkdir -p fastdfs/tracker_data
vim /etc/fdfs/tracker.conf

# Annotation start-----------------------------------------------
# 配置文件是否不生效,false 为生效
disabled=false

#后面为绑定的IP地址 (常用于服务器有多个IP但只希望一个IP提供服务)。如果不填则表示所有的
bind_addr=10.200.14.55

# 提供服务的端口
port=22122

# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/home/dingfuxiao/fastdfs/tracker_data

# HTTP 服务端口
http.server_port=80
# Annotation end -----------------------------------------------

#启动Tracker 
/etc/init.d/fdfs_trackerd start

#监听端口 22122 (Tracker服务安装成功)
netstat -nvlpt|grep fdfs

配置 FastDFS Storage

# 进入/etc/fdfs目录,复制FastDFS样例配置文件storage.conf.sample,并重命名为storage.conf
cp storage.conf.sample storage.conf
mkdir -p /fastdfs/storage
vim /etc/fdfs/storage.conf

# Annotation start-----------------------------------------------
# 配置文件是否不生效,false 为生效
disabled=false 

# 指定此 storage server 所在 组(卷)
group_name=group1

#storage server 服务端口
port=23000

#心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30

#Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
base_path=/fastdfs/storage

#存放文件时 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=10.200.14.48:22122

# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59

# 访问端口
http.server_port=9888
# Annotation end -----------------------------------------------

#启动storage
$ /etc/init.d/fdfs_storaged start
#监听端口23000 (storage 启动成功)
$ netstat -nvlpt|grep fdfs

配置 FastDFS clinet

# 进入/etc/fdfs 目录,复制 FastDFS样例配置文件client.conf.sample,并重命名为client.conf
cp client.conf.sample client.conf
mkdir -p /fastdfs/tracker
# Annotation start-----------------------------------------------
connect_timeout=30
network_timeout=60
base_path=/fastdfs/tracker
tracker_server=10.200.14.48:22122
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=80
# Annotation end -----------------------------------------------

上传测试

在Tracker服务器上执行上传test.txt

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt

# Annotation start-----------------------------------------------
group1/M00/00/00/CsgOMGBZXsKAdzdTAAAAIHbqaGc362.txt   //上传成功后返回文件ID号
# Annotation end -----------------------------------------------

#上传成功后,在Tracker & Storage可见
ls /fastdfs/storage/data/00/00/CsgOMGBZXsKAdzdTAAAAIHbqaGc362.txt

# Annotation start-----------------------------------------------
/fastdfs/storage/data/00/00/CsgOMGBZXsKAdzdTAAAAIHbqaGc362.txt
# Annotation end -----------------------------------------------

集成Nginx

Nginx 整合 FastDFS 时 Nginx 需要添加 fastdfs-nginx-module 模块。直接通过 Github:https://github.com/happyfish100/fastdfs-nginx-module 下载压缩包或者使用 git 命令下载,或者通过资源地址:https://sourceforge.net/projects/fastdfs/files/ 下载。下载以后,上传资源 fastdfs-nginx-module_v1.16.tar.gz 至服务器 /usr/local/src 目录后并解压。

tar -zvxf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/src

复制配置文件 mod_fastdfs.conf/etc/fdfs 目录中

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf  /etc/fdfs/

vim /etc/fdfs/mod_fastdfs.conf 编辑配置文件,主要关注以下部分

# tracker 服务器的 IP 和端口
tracker_server = 10.200.14.48:22122
# url 地址是否包含组名/卷名
url_have_group_name = true
# 数据组/卷对应的路径地址
store_path0 = /fastdfs/storage
base_path=/fastdfs

在/fastdfs/storage/data/文件存储目录下创建软连接,将其链接到实际存放数据的目录

ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

复制 fastdfs 安装包中的两个配置文件 http.confmime.types/etc/fdfs 目录中。

cp fastdfs-5.05/conf/http.conf /etc/fdfs/
cp fastdfs-5.05/conf/mime.types /etc/fdfs/

下载 Nginx 并解压

# 下载 nginx 压缩包
wget -P /usr/local/src http://nginx.org/download/nginx-1.18.0.tar.gz
# 解压
tar -zxvf /usr/local/src/nginx-1.18.0.tar.gz -C /usr/local/src

编译并安装

# 切换至 nginx 的解压目录
cd /usr/local/src/nginx-1.18.0
# 创建 nginx 的安装目录
mkdir -p /usr/local/nginx
# 解决 fatal error: fdfs_define.h
ln -s /usr/include/fast* /usr/local/include/
# 解决./configure: error: the HTTP rewrite module requires the PCRE library.
apt-get update
apt-get install libpcre3 libpcre3-dev
# 添加 fastdfs-nginx-module 模块,指定 nginx 的安装路径
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src --prefix=/usr/local/nginx/
# 编译并安装
make && make install
# 编译成功测试
/usr/local/nginx/sbin/nginx -V
# Annotation start-----------------------------------------------
nginx version: nginx/1.18.0
built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
configure arguments: --add-module=/usr/local/src/fastdfs-nginx-module/src --prefix=/usr/local/nginx/
# Annotation end -----------------------------------------------

配置nginx

vim /usr/local/nginx/conf/nginx.conf 编辑配置文件,关于 Nginx 启动用户的问题请根据自身实际环境进行配置,参考配置

 location ~/group[0-9]/ {
    ngx_fastdfs_module;
 }

启动 Nginx:/usr/local/nginx/sbin/nginx

http://10.200.14.48:4246/group1/M00/00/00/CsgOMGBZXsKAdzdTAAAAIHbqaGc362.txt查看内容

参考文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350