FastDFS单机版环境搭建

1 搭建环境

ubuntu

2 gcc、g++编译器

ubuntu平台在线安装指令:

1 apt-get install gcc

2 apt-get install g++

3 apt-get install build-essential

4 apt-get install libtool

3 Nginx的安装和配置

3.1 使⽤Nginx的必备软件

PCRE库

PCRE库源码包下载地址: https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz

编译和安装PCRE库相关命令:

1 wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.
44.tar.gz
2 tar -zxvf pcre-8.44.tar.gz
3 cd pcre-8.44/
4 ./configure
5 make
6 make install

zlib库

zlib 源码包下载地址:https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz 编译和安装zlib库相关命令:

1 wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zl
ib-1.2.11.tar.gz
2 tar -zxvf zlib-1.2.11.tar.gz
3 cd zlib-1.2.11/
4 ./configure
5 make
6 make install

OpenSSL开发库

OpenSSL源码包下载地址:https://www.openssl.org/source/openssl-1.1.1g.tar.gz 编译和安装OpenSSL开发库相关命令:

1 wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
2 tar -zxvf openssl-1.1.1g.tar.gz
3 cd openssl-1.1.1g/
4 ./config
5 make
6 make install

3.2 Nginx的安装和启动

编译安装Nginx

Nginx源码包下载地址:http://nginx.org/download/nginx-1.16.1.tar.gz

编译和安装Nginx相关命令:

1 wget http://nginx.org/download/nginx-1.16.1.tar.gz
2 tar -zxvf nginx-1.16.1.tar.gz
3 nginx-1.16.1/
4 ./configure
5 make
6 make install

Nginx的启动和关闭

默认情况下,Nginx被安装在⽬录/usr/local/nginx中:

1 cd usr/local/nginx
2 ls
3 显示:conf html logs sbin

其中,其中Nginx的配置⽂件存放于conf/nginx.conf,bin⽂件是位于sbin⽬录下的nginx⽂件。

1)默认⽅式启动Nginx服务器

/usr/local/nginx/sbin/nginx (需要sudo权限)

这时,会⾃动读取配置⽂件:/usr/local/nginx/conf/nginx.con

2)查看nginx进程

$ ps -ef|grep nginx
root 47583 1 0 20:15 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 47584 47583 0 20:15 ? 00:00:00 nginx: worker process

打开浏览器访问此机器的IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已 经安装并运⾏成功:

3)指定配置⽂件启动服务器

1 # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

4)测试配置信息

1 # /usr/local/nginx/sbin/nginx -t

FastDFS单机版环境搭建

4 FastDFS 安装与配置 

版本: libfastcommon 1.0.50          fastdfs 6.0.7

4.1 安装 libfastcommon

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

安装FastDFS前,需要先安装libfastcommon

1 git clone https://github.com/happyfish100/libfastcommon.git
2 cd libfastcommon
3 git checkout V1.0.50
4 ./make.sh
5 ./make.sh install

4.2 安装 FastDFS

1 git clone https://github.com/happyfish100/fastdfs.git
2 cd fastdfs
3 git checkout V6.07
4 ./make.sh && ./make.sh install

FastDFS单机版环境搭建

FastDFS服务有三个⻆⾊:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client) 

Tracker server

Tracker是FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接 Tracker,告知⾃⼰所属的group等信息,并保持周期性的⼼跳,tracker根据storage的⼼跳信息,建⽴ group==>[storage server list]的映射表。

Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信 息⽣成的,本身不需要持久化任何数据,这样使得tracker⾮常容易扩展,直接增加tracker机器即可扩展 为tracker cluster来服务,cluster⾥每个tracker之间是完全对等的,所有的tracker都接受stroage的⼼ 跳信息,⽣成元数据信息来提供读写服务。

Storage server

Storage server(后简称storage)以组(卷,group或volume)为单位组织,⼀个group内包含多台 storage机器,数据互为备份,存储空间以group内容量最⼩的storage为准,所以建议group内的多个 storage尽量配置相同,以免造成存储空间的浪费。

以group为单位组织存储能⽅便的进⾏应⽤隔离、负载均衡、副本数定制(group内storage server数量即 为该group的副本数),⽐如将不同应⽤数据存到不同的group就能隔离应⽤数据,同时还可根据应⽤的访问特性来将应⽤分配到不同的group来做负载均衡;缺点是group的容量受单机存储容量的限制,同时当 group内有机器坏掉时,数据恢复只能依赖group内地其他机器,使得恢复时间会很⻓。

group内每个storage的存储依赖于本地⽂件系统,storage可配置多个数据存储⽬录,⽐如有10块磁盘, 分别挂载在/data/disk1-/data/disk10,则可将这10个⽬录都配置为storage的数据存储⽬录。

storage接受到写⽂件请求时,会根据配置好的规则,选择其中⼀个存储⽬录来存储⽂件。为了避免单个⽬ 录下的⽂件数太多,在storage第⼀次启动时,会在每个数据存储⽬录⾥创建2级⼦⽬录,每级256个,总 共65536个⽂件,新写的⽂件会以hash的⽅式被路由到其中某个⼦⽬录下,然后将⽂件数据直接作为⼀个 本地⽂件存储到该⽬录中。

Client

FastDFS向使⽤者提供基本⽂件访问接⼝,⽐如monitor、upload、download、append、delete等,以 客户端库的⽅式提供给⽤户使⽤。

4.3 配置 Tracker

1 # 创建 Tracker 的存储⽇志和数据的根⽬录
2 mkdir -p /home/fastdfs/tracker
3 cd /etc/fdfs
4 cp tracker.conf.sample tracker.conf
5 # 配置 tracker.conf
6 vim tracker.conf

在这⾥,tracker.conf 只是修改⼀下 Tracker 存储⽇志和数据的路径

1 # 启⽤配置⽂件(默认为 false,表示启⽤配置⽂件)
2 disabled=false
3 # Tracker 服务端⼝(默认为 22122)
4 port=22122
5 # 存储⽇志和数据的根⽬录
6 base_path=/home/fastdfs/tracker

主要修改base_path路径。

4.4 配置 Storage

1 # 创建 Storage 的存储⽇志和数据的根⽬录
2 mkdir -p /home/fastdfs/storage
3 cd /etc/fdfs
4 cp storage.conf.sample storage.conf
5 # 配置 storage.conf
6 vim storage.conf

在这⾥,storage.conf 只是修改⼀下 storage 存储⽇志和数据的路径

1 # 启⽤配置⽂件(默认为 false,表示启⽤配置⽂件)
2 disabled=false
3 # Storage 服务端⼝(默认为 23000)
4 port=23000
5 # 数据和⽇志⽂件存储根⽬录
6 base_path=/home/fastdfs/storage
7 # 存储路径,访问时路径为 M00
8 # store_path1 则为 M01,以此递增到 M99(如果配置了多个存储⽬录的话,这⾥只
指定 1 个)
9 store_path0=/home/fastdfs/storage
10 # Tracker 服务器 IP 地址和端⼝,单机搭建时也不要写 127.0.0.1
11 # tracker_server 可以多次出现,如果有多个,则配置多个
12 tracker_server=192.168.65.131:22122
13 # 设置 HTTP 访问⽂件的端⼝。这个配置已经不⽤配置了,配置了也没什么⽤
14 # 这也是为何 Storage 服务器需要 Nginx 来提供 HTTP 访问的原因
15 http.server_port=8888

主要修改:base_path、store_path0、tracker_server

4.5 启动 Tracker 和 Storage 服务

1 # 启动 Tracker 服务
2 # 其它操作则把 start 改为 stop、restart、reload、status 即可。Storage
服务相同
3 /etc/init.d/fdfs_trackerd start
4 # 启动 Storage 服务
5 /etc/init.d/fdfs_storaged start
6 # 可以通过 fdfs_monitor 查看集群的情况
7 # 查看 Storage 是否已经注册到 Tracker 服务器中
8 # 当查看到 ip_addr = 120.27.131.197 (localhost.localdomain) ACTIV
E
9 # ACTIVE 表示成功
10 /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

FastDFS单机版环境搭建

 可以去查看/etc/init.d/fdfs_trackerd⽂件, fdfs_trackerd的实际执⾏程序 为:/usr/bin/fdfs_trackerd,配置⽂件为:/etc/fdfs/tracker.conf。 这样后续我们也可以单台机器通过修改端⼝的⽅式去启动多个tracker、storage。

4.6 测试上传⽂件

1 # 修改 Tracker 服务器客户端配置⽂件
2 cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
3 vim /etc/fdfs/client.conf

client.conf 中修改 base_path 和 Tracker 服务器的 IP 地址与端⼝号即可

1 # 存储⽇志⽂件的基本路径
2 base_path=/home/fastdfs/tracker
3 # Tracker 服务器 IP 地址与端⼝号
4 tracker_server=192.168.65.131:22122

主要修改base_path和tracker_server

拷⻉⼀个⽂件到 root ⽬录下

1 # 存储到 FastDFS 服务器中
2 /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/test.txt

当返回⽂件 ID 号,如 group1/M00/00/00/eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt 则表示上传成 功

如果报错:tracker_query_storage fail, error no: 2, error info: No such file or directory,⼀般都是 因为路径没有设置对。可以

1 tail -f /home/fastdfs/storage/logs/storaged.log

查看⽇志。

4.7 下载⽂件测试

查看⽂件路径

1 root@iZbp1d83xkvoja33dm7ki2Z:/home/fastdfs/storage/data/00/00# pwd
2
3 /home/fastdfs/storage/data/00/00

在client所在的机器完成下载、删除测试

下载:

1 root@iZbp1d83xkvoja33dm7ki2Z:~/0voice# fdfs_download_file /etc/fdf
s/client.conf group1/M00/00/00/eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt
2 root@iZbp1d83xkvoja33dm7ki2Z:~/0voice# ls
3 cloud-drive eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt

删除:

root@iZbp1d83xkvoja33dm7ki2Z:~/0voice# fdfs_delete_file /etc/fdfs/
client.conf group1/M00/00/00/eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt

查看⽂件是否已经被删除 可以进去/home/fastdfs/storage/data/00/00路径查看刚才的⽂件是否被删除。

以上则完成了 FastDFS 的安装与配置,可以使⽤ api 来完成⽂件的上传、同步和下载。 当然,接下来我们还会安装 Nginx。

⽬的如下:

Storage 安装 Nginx,为了提供 http 的访问和下载服务,同时解决 group 中 Storage 服务器的同步 延迟问题

Tracker 安装 Nginx,主要是为了提供 http 访问的反向代理、负载均衡以及缓存服务

5 fastdfs-nginx-module安装

5.1 模块包的安装

注意:全部安装条件在确保之前的FastDFS 的tracker、storage和client可以正常使⽤。 模块包源码包本地下载路径:https://github.com/happyfish100/fastdfs-nginx-module

5.1.1 下载fastdfs-nginx-module

1 git clone https://github.com/happyfish100/fastdfs-nginx-module.git
2 cd fastdfs-nginx-module
3 git checkout V1.22

cd fastdfs-nginx-module/ 会发现⾥⾯有个INSTALL 和 src⽬录,这个不需要make⽽是需要重新编译 ⼀下storage的Nginx模块。

5.1.2 查看fastdfs-nginx-module模块src路径

1 root@iZbp1d83xkvoja33dm7ki2Z:~/0voice/cloud-drive/fastdfs-nginx-mo
dule# pwd
2 /root/0voice/cloud-drive/fastdfs-nginx-module

5.1.3 安装和编译Nginx 并添加FastDFS模块

1 #进⼊到nginx源码⽬录
2 cd nginx-1.16.1/ (本⼈路径:/root/0voice/cloud-drive/ngi
nx-1.16.1)
3 ./configure --add-module=/root/0voice/cloud-drive/fastdfs-nginx-mo
dule/src

其中/root/0voice/cloud-drive/fastdfs-nginx-module/src 是刚才下载的的fastdfs_nginx_module模 块的绝对路径,就是在编译Nginx时候,连同这个模块⼀起编译。

编译时, 出现⼀下信息表示添加成功。

FastDFS单机版环境搭建

 

 5.1.4 给 nginx ⽬录下的 objs/Makefile ⽂件中增加头⽂件⽬录:

vim objs/Makefile

添加

1 ALL_INCS = -I src/core \
2 -I /usr/include/fastdfs \
3 -I /usr/include/fastcommon \
4 -I src/event \
5 -I src/event/modules \

FastDFS单机版环境搭建

5.1.5 重新编译及安装nginx 

1 make
2 make install

5.2 fastdfs-nginx-module 的配置

5.2.1 fastdfs-nginx-module配置⽂件

切换到fastdfs-nginx-module/src路径

1 root@iZbp1d83xkvoja33dm7ki2Z:~/0voice/cloud-drive/fastdfs-nginx-mo
dule/src# pwd
2 /root/0voice/cloud-drive/fastdfs-nginx-module/src
3 root@iZbp1d83xkvoja33dm7ki2Z:~/0voice/cloud-drive/fastdfs-nginx-mo
dule/src# ls
4 common.c common.h config mod_fastdfs.conf ngx_http_fastdfs_module.c

将fastdfs-nginx-module/src/mod_fastdfs.conf 拷⻉到/etc/fdfs/下:

1 cp mod_fastdfs.conf /etc/fdfs/

fastdfs-nginx-module 和 FastDFS 配置⽂件修改# 复制 FastDFS 的部分配置⽂件到 /etc/fdfs

cd /root/0voice/cloud-drive/fastdfs

cp conf/http.conf /etc/fdfs/

cp conf/mime.types /etc/fdfs/

修改vim /etc/fdfs/mod_fastdfs.conf

base_path =/home/fastdfs/storage #保存⽇志⽬录, 跟storage.conf⼀致即可 tracker_server = 192.168.65.131:22122 #tracker服务器的IP地址以及端⼝号, 确保跟storage.conf⼀致即可

1 # Tracker 服务器IP和端⼝修改
2 tracker_server=120.27.131.197:22122
3 # url 中是否包含 group 名称,改为 true,包含 group
4 url_have_group_name = true
5 # 配置 Storage 信息,修改 store_path0 的信息
6 store_path0=/home/fastdfs/storage
7 # 其它的⼀般默认即可,例如
8 base_path=/tmp
9 group_name=group1
10 storage_server_port=23000
11 store_path_count=1

主要修改tracker_server、url_have_group_name、store_path0。

5.2.2 配置nginx

vim /usr/local/nginx/conf/nginx.conf

配置为⽀持 group0-group9,以及 M00-M99,以便于以后扩容

1 location ~/group([0-9])/M([0-9])([0-9]) {
2 ngx_fastdfs_module;
3 }

具体位置:

FastDFS单机版环境搭建

 5.2.3 重启nginx

配置完fastdfs-nginx-module后需要重启nginx /usr/local/nginx/sbin/nginx -s reload

如果出现如下错误。需要先停⽌nginx再启动nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf nginx:

[emerg] unknown directive "ngx_fastdfs_module" in /usr/local/nginx/conf/nginx.conf:92

5.2.4 测试环境

服务器中测试上传。

1 root@iZbp1d83xkvoja33dm7ki2Z:~# touch 0voice.txt
2 root@iZbp1d83xkvoja33dm7ki2Z:~# echo "You are not strong, no one b
rave for you" > 0voice.txt
3 root@iZbp1d83xkvoja33dm7ki2Z:~# fdfs_upload_file /etc/fdfs/client.
conf 0voice.txt
4 group1/M00/00/00/eBuDxWCeIFCAEFUrAAAAKTIQHvk462.txt

拿到存储位置:group1/M00/00/00/eBuDxWCeIFCAEFUrAAAAKTIQHvk462.txt 如果是group1开头,查看group1中storage⽂件是否存在

浏览器输⼊:

http://120.27.131.197/group1/M00/00/00/eBuDxWCeIFCAEFUrAAAAKTIQHvk462.txt

FastDFS单机版环境搭建

上一篇:fastdfs-nginx-module-master/src/common.c, line: 163, load conf file “/etc/fdfs/mod_fastdfs.conf“


下一篇:linux命令收集