FastDFS和Nginx实现分布式文件服务器

简介: FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS和Nginx实现分布式文件服务器

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.下载

FastDFS下载地址:https://sourceforge.net/projects/fastdfs/

FastDFS的github下载地址:https://github.com/happyfish100/fastdfs

libfastcommon的下载地址:https://sourceforge.net/projects/libfastcommon/

libfastcommon的github下载地址:https://github.com/happyfish100/libfastcommon

FastDFS-nginx-module的下载地址:https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/

FastDFS-nginx-module的github下载地址:https://github.com/happyfish100/fastdfs-nginx-module

fastdfs-client-java的下载地址:https://sourceforge.net/projects/fastdfsclient/

fastdfs-client-java的github下载地址:https://github.com/happyfish100/fastdfs-client-java

Nginx下载地址:http://nginx.org/en/download.html

Nginx的github下载地址:https://github.com/nginx/nginx

2.架构图

......

3.FastDFS-tracker安装

3.1 FastDFS安装环境

FastDFS是C语言开发,建议在linux上运行。

安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境

yum install gcc-c++

3.2 安装libevent

FastDFS依赖libevent库

yum -y install libevent

1

3.3 安装libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。

上传到linux,并解压

2

解压后的目录

3

进入解压目录,进行编译,安装

编译命令

[root@root libfastcommon-1.0.7]# ./make.sh

4

安装命令

[root@root libfastcommon-1.0.7]# ./make.sh install

5

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

[root@root lib64]# cp libfastcommon.so /usr/lib

3.4 tracker编译安装

[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz

进入解压的目录,进行编译,安装

编译命令

[root@root FastDFS]# ./make.sh

安装命令

[root@root FastDFS]# ./make.sh install

安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

[root@root FastDFS]# cd conf/
[root@root conf]# cp * /etc/fdfs/

6

7

3.5 配置

安装成功后进入/etc/fdfs目录,修改tracker.conf

修改 base_path=/home/yuqing/fastdfs 为 base_path=/home/fastdfs

8

3.6 启动

启动命令

[root@root fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

9

设置开机自动启动

[root@root fdfs]# vi /etc/rc.d/rc.local

将运行命令添加进文件

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

如图

10

4.FastDFS-storage的安装

4.1 安装libevent

同tracker安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)

FastDFS依赖libevent库

yum -y install libevent

1

4.2 安装libfastcommon

同tracker安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。

上传到linux,并解压

2

解压后的目录

3

进入解压目录,进行编译,安装

编译命令

[root@root libfastcommon-1.0.7]# ./make.sh

4

安装命令

[root@root libfastcommon-1.0.7]# ./make.sh install

5

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

[root@root lib64]# cp libfastcommon.so /usr/lib

4.3 storage编译安装

同tracker编译安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)

上传FastDFS.tar.gz文件,并解压

[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz

进入解压的目录,进行编译,安装

编译命令

[root@root FastDFS]# ./make.sh

安装命令

[root@root FastDFS]# ./make.sh install

安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

[root@root FastDFS]# cd conf/
[root@root conf]# cp * /etc/fdfs/

6

7

4.4 配置

安装成功后进入/etc/fdfs目录

修改storage.conf文件

将 base_path=/home/yuqing/fastdfs 改为:base_path=/home/fastdfs
将 store_path0=/home/yuqing/fastdfs 改为:store_path0=/home/fastdfs/fdfs_storage

11

如果有多个挂载磁盘则定义多个store_path,如下

#store_path1=...
#store_path2=...

12

配置tracker服务器ip

13

4.5 启动

启动命令

[root@root fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

设置开机自动启动

14

5.上传图片测试

5.1 通过fdfs_test程序

FastDFS安装成功可通过/usr/bin/fdfs_test测试上传和下载等操作

修改/etc/fdfs/client.conf文件

[root@root fdfs]# vi /etc/fdfs/client.conf

15

上传文件使用格式

/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件

比如将/usr/local/application目录下的1.png图片上传到FastDFS中

16

上传文件的目录下:

17

由于现在还没有和nginx整合无法使用http下载

6.FastDFS 和 Nginx整合

6.1 在tracker上安装Nginx

在每个tracker上安装Nginx,目的是做负载均衡及实现高可用

......

6.2 在storage上安装Nginx

6.2.1 FastDFS-nginx-module

上传,并解压

[root@root fastdfs-nginx-module]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

进入fastdfs-nginx-module/src/目录下,编辑config配置文件

18

将fastdfs-nginx-module/src/下的mod_fastdfs.conf文件拷贝至/etc/fdfs/下

[root@root src]# cp mod_fastdfs.conf /etc/fdfs/

修改/etc/fdfs/mod_fastdfs.conf的内容

将 base_path=/tmp 修改为 base_path=/home/fastdfs

19

20

将 /usr/lib64/libfdfsclient.so拷贝至/usr/lib下

[root@root lib64]# cp /usr/lib64/libfdfsclient.so /usr/lib

创建nginx/client目录

[root@root lib64]# mkdir -p /var/temp/nginx/client

6.2.2 nginx安装

安装环境

安装pcre库

[root@root lib64]# yum -y install pcre-devel

安装zlib库

[root@root lib64]# yum install -y zlib-devel

上传Nginx,并解压

[root@root nginx]# tar -zxvf nginx-1.7.7.tar.gz

添加fastDFS-nginx-module模块,进入解压目录,执行命令

[root@root nginx-1.7.7]# ./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=/usr/local/application/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src

--prefix=/usr/local/nginx :是安装目录

配置成功如下图

21

进入nginx的解压目录,编译并安装

[root@root nginx-1.7.7]# make
[root@root nginx-1.7.7]# make install

6.2.3 nginx配置文件

修改nginx安装目录下的配置文件conf/nginx.conf

22

6.3 启动

启动Nginx

[root@root conf]# /usr/local/nginx/sbin/nginx

设置开机自动开启

[root@root conf]# vi /etc/rc.d/rc.local

将运行命令添加进文件,如下图

23

6.4 测试

访问上传的图片

[root@root 00]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/application/love.jpg 

返回访问路径

24

访问

25

26

目录
相关文章
|
4天前
|
Ubuntu 应用服务中间件 网络安全
Nginx伪流媒体服务器搭建详细说明以及案例
Nginx伪流媒体服务器搭建步骤如下:1. 安装Nginx,根据系统选择命令;2. 编辑配置文件(/etc/nginx/nginx.conf),添加mp4相关设置;3. 创建视频目录/usr/share/nginx/html/videos并上传视频;4. 重启Nginx应用更改;5. 通过浏览器访问视频,如http://your_server_ip/videos/example.mp4。注意启用mp4模块,确保视频格式支持伪流媒体播放。
|
24天前
|
应用服务中间件 PHP nginx
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
|
4月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
270 61
|
3月前
|
运维 数据挖掘 索引
服务器数据恢复—Lustre分布式文件系统服务器数据恢复案例
5台节点服务器,每台节点服务器上有一组RAID5阵列。每组RAID5阵列上有6块硬盘(其中1块硬盘设置为热备盘,其他5块硬盘为数据盘)。上层系统环境为Lustre分布式文件系统。 机房天花板漏水导致这5台节点服务器进水,每台服务器都有至少2块硬盘出现故障。每台服务器中的RAID5阵列短时间内同时掉线2块或以上数量的硬盘,导致RAID崩溃,服务器中数据无法正常读取。
|
3月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
299 9
|
3月前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
360 1
|
5月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
92 3
|
5月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
103 1
|
5月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
80 0
|
25天前
|
NoSQL Java 中间件
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
本文介绍了从单机锁到分布式锁的演变,重点探讨了使用Redis实现分布式锁的方法。分布式锁用于控制分布式系统中多个实例对共享资源的同步访问,需满足互斥性、可重入性、锁超时防死锁和锁释放正确防误删等特性。文章通过具体示例展示了如何利用Redis的`setnx`命令实现加锁,并分析了简化版分布式锁存在的问题,如锁超时和误删。为了解决这些问题,文中提出了设置锁过期时间和在解锁前验证持有锁的线程身份的优化方案。最后指出,尽管当前设计已解决部分问题,但仍存在进一步优化的空间,将在后续章节继续探讨。
472 131
【📕分布式锁通关指南 02】基于Redis实现的分布式锁

热门文章

最新文章