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
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服务有三个⻆⾊:跟踪服务器(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
可以去查看/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时候,连同这个模块⼀起编译。
编译时, 出现⼀下信息表示添加成功。
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 \
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 }
具体位置:
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,storage,fastdfs,nginx,tracker,conf,fdfs,搭建 来源: https://blog.csdn.net/jianfeng123123/article/details/121578982