本文主要介绍在linux服务器如何搭建FastDFS文件服务器。

首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统,用C语言编写。适应与中小企业,对文件不分块。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

主要有Tracker(管理) 和Storage (储存)。

返回路径= 组名 /虚拟盘符{M00/00/02} /文件名

1.软件包

下面是安装FastDFS的安装包,也可以下载到:FastDFS,密码为:ideg

软件包 版本
FastDFS v5.05
libfastcommon v1.0.7
fastdfs-nginx-module v1.16
nginx v1.12.1

 

 

 

2.安装gcc

检查系统是否有安装GCC

gcc –version

 安装GCC

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim

 就把gcc当成c语言编译器, g++当成c++语言编译器用就是了.(知乎)

 

3.安装libfastcommon

进入libfastcommon压缩包目录解压,编译,安装

tar -zxvf libfastcommonV1.0.7.tar.gz

进入解压的libfastcommon-1.0.7目录,编译

./make.sh

安装

./make.sh install 

最后,libfastcommon.so文件到usr/lib下 ,请按照自己的实际文件路径修改被复制路径

cp /data/fastDFS/software/libfastcommon-1.0.7/src/libfastcommon.so /usr/lib

 

4.安装FastDFS

解压FastDFS_v5.05.tar.gz,然后编译安装FastDFS

tar -zxvf FastDFS_v5.05.tar.gz 
./make.sh 
 ./make.sh install 

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

cp /data/fastDFS/software/FastDFS/conf/* /etc/fdfs/

 

5.安装tracker

进入/etc/fdfs目录,修改tracker.conf文件。如果不存在,就拷贝tracker.conf.sample文件为tracker.conf,然后再修改:

base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/fastdfs (注解:日志文件) http.server_port=8080 >>> http.server_port=80 (注解:端口,80是方便默认,这里没有改)

store_group=group1 (注解:组名)

其中,/home/logs/fastdfs目录如果不存在,就创建一个。

之后,就启动tracker,并查看是启动成功(出现如下提示,表示启动成功):restart重启

fdfs_trackerd /etc/fdfs/tracker.conf start
netstat -unltp | grep tracker

linux搭建FastDFS文件服务器 随笔 第1张

 

6.安装storage

由于storage和tracker运行的都是fastDFS程序,每一台服务器都部署一台fasfDFS,一台服务器是tracker,一台是storage。

修改storage.conf文件。如果不存在,就拷贝storage.conf.sample文件为storage.conf,然后再修改:

base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/storage (日志路径)
store_path0=/home/yuqing/fastdfs >>> store_path0=/home/data/storage (实际储存文件路径,可以配置多个)
tracker_server=192.168.209.121:22122 >>> tracker_server=192.168.2.231:22122 (连接tracker服务器地址)

group_name=group1 (
必须和tracker的组名相同

其中,如果/home/logs/storage,/home/data/storage不存在,就创建该目录

然后,就启动storage,并查看是否成功(出现如下提示,表示启动成功):

fdfs_storaged /etc/fdfs/storage.conf start
netstat -unltp | grep storage

linux搭建FastDFS文件服务器 随笔 第2张

 

最后,查看trackerstorage是不是在通信:

fdfs_monitor /etc/fdfs/storage.conf

如下提示,出现ACTIVE,表示二者均正常启动,至此就可以进行上传文件测试了。

linux搭建FastDFS文件服务器 随笔 第3张

 

7.测试图片上传

Tracker和storage都已经安装完成,使用命令测试文件上传:
FastDFS提供一个文件上传命令:usr/bin/fdfs_test 测试文件上传。测试上传需要连接tracker服务器,连接storage服务器。因此需要指定一个配置文件:client.conf配置文件,通过Client.conf连接tracker服务器。

修改/etc/fdfs下client.conf

  base_path=/home/logs/client (日志目录)
  tracker_server=192.168.2.231:22122  (tracker端口)

测试命令

/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg

如下图返回地址则成功

linux搭建FastDFS文件服务器 随笔 第4张

 

 

8.安装fastdfs-nginx-module 

首先解压fastdfs-nginx-module_v1.16.tar.gz,修改/fastdfs-nginx-module/src/config文件。去掉红色部分的local

linux搭建FastDFS文件服务器 随笔 第5张

 

拷贝mod_fastdfs.conf到etc/fdfs 

cp /data/fastDFS/software/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 

 修改etc/fdfs下mod_fastdfs.conf 

base_path=/home/data/business(此处必须是存储路径,这里对应store的path0 )

tracker_server=192.168.2.231:22122  (连接tracker地址)

group_name=group1 (和前面配置组名保持一致 )

store_path0=/home/fastdfs/storage_path (store路径)

url_have_group_name = true (允许使用组名 )

 

7.整合fastdfs-nginx-module 和 Nginx

首先到/usr/local/src/fastdfs-nginx-module-master/src/目录下,拷贝mod_fastdfs.conf文件到/etc/fdfs目录下,然后进行如下配置:

base_path=/home/kelvin/data/fastdfs tracker_server=192.168.2.231:22122 url_have_group_name = true store_path0=/home/kelvin/data/fastdfs/storage

然后配置Nginx,添加如下内容:

    server {
        listen       80; server_name localhost; ... # 配置fastdfs的访问路径 location /group1/M00 { ngx_fastdfs_module; } ... }

之后启动nginx:

$ sudo /usr/local/nginx/sbin/nginx ngx_http_fastdfs_set pid=23238

上传测试

在进行测试之前,我们还需要先配置一下client.conf文件,该文件在/etc/fdfs目录下,配置如下:

$ sudo vi /etc/fdfs/cli
...
base_path=/home/kelvin/data/fastdfs
tracker_server=192.168.2.231:22122
...

然后,创建一个test.txt文件,随便输入一些内容,再进行上传:

$ echo HelloWorld > ~/test.txt
$ fdfs_test /etc/fdfs/client.conf upload ~/test.txt ... [2017-09-23 20:12:00] DEBUG - base_path=/home/kelvin/data/fastdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0  tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.2.231, port=23000 group_name=group1, ip_addr=192.168.2.231, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt source ip address: 192.168.2.231 file timestamp=2017-09-23 20:12:00 file size=11 file crc32=2458625787 example file url: http://192.168.2.231/group1/M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt ...

最后,在浏览器里输入http://192.168.2.231/group1/M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt,即可访问到test.txt的文件内容:

linux搭建FastDFS文件服务器 随笔 第6张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄