FastDFS + Nginx搭建文件系统

前言

近期在学习搭建FastDFS文件系统,参考网上资料以及自己爬坑,总结如下。感谢在网上提供学习文档的大佬,在这里引用参考。

环境

阿里云、Linux、Cent OS 7.2

1. 安装libfastcommon

libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可

# 在 ~/ (root) 下新建fastdfs-install-package文件夹,用来存放有关fastdfs相关的安装包
cd #
mkdir fastdfs-install-package
cd fastdfs-install-package/

# 下载libfastcommon安装包
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

# 解压,进入到解压后的文件夹中
 tar -zxvf V1.0.7.tar.gz
 cd libfastcommon-1.0.7/
 
# 编译安装
./make
./make 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 

# libfastcommon install done
2. 安装FastDFS
# 下载FastDFS安装包
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz

# 解压
tar -zxvf V5.05.tar.gz
cd fastdfs-5.05/

# 编译安装
./make.sh
./make.sh install

# 编译安装完成之后,FastDFS会生成一些的可执行脚本,在/usr/bin/ 下,例如:
/usr/bin/fdfs_trackerd  # 跟踪器相关脚本
/usr/bin/fdfs_storaged  # 仓库相关脚本
/usr/bin/stop.sh        # 停止服务脚本
/usr/bin/restart.sh     # 重启脚本

# 相关配置文件, /etc/fdfs/ 下
/etc/fdfs/tracker.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/client.conf.sample
/etc/fdfs/storage_id.conf.sample    # 版本高会有这个文件
3. 配置FastDFS Tracker Server(跟踪服务器)

主要做调度工作,起到均衡的作用。负责管理所有的Storage Servergroup,每个Storage在启动后会连接Tracker,告知Tracker Server当前Storage所属group等其他信息,并保持周期性心跳

# 进入tracker配置目录下
cd /etc/fdfs/
# 拷贝tracker.conf.sample文件,并更名为:tracker.conf
cp tracker.conf.sample tracker.conf
# 使用vim编辑(了解Vim编辑器的相关操作)
vim tracker.conf

-----tracker.conf 重点关注的几个配置-----
#  是否禁用配置文件
disabled=false
# 服务端口
port=22122
# tracker数据和日志目录路径(这个路径可自定义)
base_path=/file-resource/fastdfs/tracker
# HTTP 服务端口(端口可自定义,与其他服务端口不冲突即可)
http.server_port=8501
-----配置完之后保存退出即可----------------


# 创建在tracker.conf中配置的base_path
mkdir -p /file-resource/fastdfs/tracker

# 操作到这一步,网上有很多例子是建立/usr/bin 到 /usr/local/bin 的软连接。本人在学习搭建过程中,在之后启动storage服务失败之后,更改配置文件,再次启动不生效的情况出现(也许操作不当或者未重新加载文件,如有高见请指点,谢谢),所有直接使用/usr/bin下关联对应的配置文件启动
# 启动tracker server
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

# 启动完之后,在之前配置的/file-resource/fastdfs/tracker目录下会生成data和logs文件夹,对应数据和日志目录。查看是否生成data和logs目录
ll /file-resource/fastdfs/tracker

# 在logs下,会生成tracker.log文件,使用less命令查看相关日志,如果出现启动失败可以在这个日志文件查找
less tracker.log

# 查看tracker server 是否启动成功。如果启动成功会看到fdfs_tracker服务已启动,并监听22122端口
netstat -unltp | grep fdfs 

# 在防火墙中打开22122端口,并重新载入(Cent OS 7以下开放端口的方式会不一样)
firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --reload
4. 配置FastDFS Storage Server(存储服务器)

主要提供容量和备份服务,以group为单位,每个group内可以有多台storage server,数据互为备份。

# storage server配置与tracker server相似
# 进入storage配置目录下
cd /etc/fdfs/
# 拷贝storage.conf.sample文件,并更名为:storage.conf
cp storage.conf.sample storage.conf
# 使用vim编辑
vim storage.conf

-----storage.conf 重点关注的几个配置-----
#  是否禁用配置文件
disabled=false
# 服务端口
port=23000
# 向tracker server发送心跳间隔时间,时间为秒
heart_beat_interval=30
# storage数据和日志目录路径(这个路径可自定义)
base_path=/file-resource/fastdfs/storage
# 存放文件时 storage server 支持多个路径,这里配置存放文件的基路径数目,通常只配一个目录
store_path_count=1
# 配置store_path_count设置的个数,上面的数量为1,所有配置store_path0即可,索引从0开始,依次累加
# 这里是存放文件的真正目录
store_path0=/file-resource/fastdfs/file
# FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数
# 此处配置为256,storage server 在初次运行时,会在 store_path下自动创建 256*256 个子目录,如果为N,也就是N*N
subdir_count_per_path=256
# 配置连接tracker server的host和port,这里写自己的服务器IP
tracker_server=192.168.7.133:22122
# HTTP 服务端口(端口可自定义,与其他服务端口不冲突即可)
http.server_port=8502
-----配置完之后保存退出即可----------------

# 配置完之后,创建对应的base_path和store_path0
mkdir -p /file-resource/fastdfs/storage
mkdir -p /file-resource/fastdfs/file

# 启动storage server,与tracker server一样的方式,会在/file-resource/fastdfs/storage下生成data和logs文件夹
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

# 启动完成,提示[ok],查看是否启动成功
netstat -unltp | grep fdfs 

# 发现并没有fdfs_storage相关服务,以及23000端口。然后去到/file-resource/fastdfs/storage/logs下
less storage.log

# 连接失败,发现提示Connection time out,但是host和port都正确。经过爬坑,原来是阿里云没有配置相关安全组,配置相关安全组之后restart就可以了
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

# 同理,tracker server和storage server关闭命令
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop

# 启动成功之后在/file-resource/fastdfs/file/data目录下会创建256*256的子目录
ls /file-resource/fastdfs/file/data

# 在防火墙中打开23000端口,并重新载入
firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --reload
5.配置Client,上传文件测试
# 进入/etc/fdfs/下
cd /etc/fdfs/
# 拷贝client.conf.sample文件,并更名为:client.conf
cp client.conf.sample client.conf
# 使用vim编辑
vim client.conf

-----client.conf 重点关注的几个配置-----
# client 的数据和日志目录
base_path=/file-resource/fastdfs/client
# Tracker端口
tracker_server=192.168.7.133:22122
-----配置完之后保存退出即可----------------

# 测试上传,将root下的一个页面上传到FastFDS上
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ~/404.html

# 会生成:group1/M00/00/00/rBIcWlw4Ts2AKw0NAACTjyPXgeM055.html,其中:
# group1:组名
# M00:磁盘名
# 00:一级目录名
# 00: 二级目录名
# rBIcWlw4Ts2AKw0NAACTjyPXgeM055.html:文件名

# 得到remoteFileName,说明上传成功,但是无法访问,所有安装Nginx来访问
6. 安装Nginx
# 安装Nginx所需环境
# gcc
yum install gcc-c++
# PCRE pcre-devel 
yum install -y pcre pcre-devel
# zlib 
yum install -y zlib zlib-devel
# OpenSSL 
yum install -y openssl openssl-devel

# 下载Nginx,(目录在~/fastdfs-install-package下)
wget -c https://nginx.org/download/nginx-1.12.1.tar.gz

# 解压
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1/

# 使用默认配置
./configure

# 编译安装
make
make install

# 启动Nginx
cd /usr/local/nginx/sbin/
./nginx

# nginx相关命令
./nginx -s stop
./nginx -s quit
./nginx -s reload

# Nginx默认监听80端口,防火墙打开80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

# 拼接之前生成的地址,可以看到效果
http://192.168.7.113/group1/M00/00/00/rBIcWlw4Ts2AKw0NAACTjyPXgeM055.html

# 为了每次不需要拼接,修改nginx.conf,将/group1/M00映射到/file-resource/fastdfs/file/data
vim /usr/local/nginx/conf/nginx.conf

---------
# 在server中加入如下配置
location /group1/M00 {
    alias /file-resource/fastdfs/file/data;
}
---------

# 重启Nginx
/usr/local/nginx/sbin/nginx -s reload

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