fastDFS入门版搭建(单机版)

1.FastDFS搭建工具下载

作者的GitHub地址:https://github.com/happyfish100 ​​​​​​​这次搭建的所有工具,都可以在上面下载到。

我自定义了一个工作空间为:/opt/ht/,其中有三个子文件夹:dev(工作目录),unpack(解压文件所在目录),ftp(上传文件所在目录)
在这里插入图片描述
资料如下:
fastdfs-client-java-master.zip
fastdfs-master.zip
fastdfs-nginx-module-master.zip
libfastcommon-master.zip
nginx-1.12.2.tar.gz
test.png
我们将所有资料都导入到 /opt/ht/ftp/ 目录下
在这里插入图片描述
2.安装libfastcommon
由于我的centorOS时纯净版,因此需要安装解压命令

yum install -y unzip zip

将libfastcommon-master.zip解压到 /opt/ht/unpack/目录下

unzip -d /opt/ht/unpack/ libfastcommon-master.zip

进入我们刚刚解压到的文件目录

因为安装之前需要现编译,因此安装gcc命令

yum -y install gcc-c++

完成之后执行编译安装

./make.sh
./make.sh install

安装完成之后出现:
在这里插入图片描述
libfastcommon默认会被安装到/usr/lib64/libfastcommon.so但是FastDFS的主程序却在/usr/local/lib目录下
这个时候我们就要建立一个软链接了,实际上也相当于windows上的快捷方式。

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就安装完毕了。

3.安装fastDFS
将fastDFS主文件解压至 /opt/ht/unpack/ 目录下

unzip -d /opt/ht/unpack/ fastdfs-master.zip

解压后我们进入刚刚解压的目录下,可以看到如下内容:
在这里插入图片描述
编译安装

./make.sh
./make.sh install

完成之后:
在这里插入图片描述
可以看到,fastdfs安装完成知乎会出现上述红色区域的四个路径,而我们需要操作的配置文件就在 /etc/fdfs/ 下,进入该目录,可以看到:
在这里插入图片描述
我们需要把client.conf.sample , storage.conf.sample , tracker.conf.sample 三个配置示例文件拷贝一份并去掉.sample

cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

完成之后可以看见
在这里插入图片描述
至此,fastdfs文件安装完毕!

4.配置tracker
首先需要创建目录来安放tracker的log和data,这个目录可以自己创建,这里我将在 /opt/ht/dev/ 目录下创建

cd /opt/ht/dev/
mkdir fastdfs
cd fasrdfs
mkdir tracker

在这里插入图片描述
创建好了目录之后我们需要去 /etc/fdfs/ 目录下配置tracker

vim tracker.conf

当然,纯净版的centorOS7 是没有vim命令的,因此需要我们手动安装一下

yum -y install vim

打开tracker.conf配置文件之后,我们重点关注下面四个点:

disabled = false #默认开启
 
port = 22122 #默认端口号
 
base_path =  /opt/ht/dev/fastdfs/tracker #基础路径(就是我们刚刚创建的那个目录)
 
http.server_port=6666 #http默认端口是8080,此处我们改为6666,当然可根据需要自行调整

编辑完成之后嗯esc键然后 :wq 进行保存
上述操作完成之后启动tracker

service fdfs_trackerd start

成功会出现如下画面:
在这里插入图片描述
如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_trackerd

启动成功之后我们能进入 /opt/ht/dev/fastdfs/tracker/ 目录下
在这里插入图片描述
可以看到该目录下多了两个文件夹data ,logs,这就是我们实际存放tracker数据和日志的目录,此处tracker就已经配置完成,但是为了避免每次手动启动tracker,将tracker设置为开机启动
在这里插入图片描述
发现我们没有权限配置这个文件,所以需要加一下权限

chmod +x /etc/rc.d/rc.local

添加权限之后看到的文件应该是这样的
在这里插入图片描述
进入到 /etc/rc.d/目录下,修改rc.local

vim rc.local

在配置文件中加入tracker开机启动的命令

service fdfs_trackerd start #tracker开机启动

在这里插入图片描述
保存退出后,查看一下tacker端口的监听情况

netstat -unltp|grep fdfs

在这里插入图片描述
可以看到,端口22122成功监听,至此tracker配置完毕

5.配置storage
storage的配置和tracker很相似,同样我们首先为它设置一个目录,但与tracker不同的是,storage还需要一个额外的路径来存放数据,因此我们路径设置如下
在这里插入图片描述
同样的,去 /etc/fdfs/ 路径下修改storage.conf配置文件

vim /etc/fdfs/storage.conf
disabled=false 
group_name=group1 #组名,根据实际情况修改 
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致 
base_path=/opt/ht/dev/fastdfs/storage #设置storage数据文件和日志目录 
store_path_count=1 #存储路径个数,需要和store_path个数匹配 
base_path0=/opt/ht/dev/fastdfs/storage_data #实际文件存储路径 
tracker_server=192.168.13.128:22122 #我CentOS7的ip地址 
http.server_port=8888 #设置 http 端口号

保存成功后创建软引用

ln -s /usr/bin/fdfs_storaged /usr/local/bin

启动storage

service fdfs_storaged start

启动成功后会出现如下画面
在这里插入图片描述
同样的,如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_storaged

同样设置为开机启动

vim /etc/rc.d/rc.local

添加storage开机启动的命令

service fdfs_storaged start

在这里插入图片描述
查看storage端口监听情况
在这里插入图片描述
出现上述情况则代表已整合配置成功,如果只出现了tracker的端口监听情况,可尝试重启虚拟机,若任然不行,则检查配置文件是否出错或者查看日志文件,至此,tracker和storage已全部配置成功。

6.整合测试
到这一步,感谢一路跟随的小伙伴,但是我们还要查看一下tracker是否注册到了storage里面去

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

在这里插入图片描述
如果出现了上诉红框出现的情况则代表已整合成功。

到此,fastDFS的基础模块都已经配置安装完毕,我们需要模拟测试一下功能。

修改客户端的配置文件:

vim /etc/fdfs/client.conf
1.base_path=/opt/ht/dev/fastdfs/tracker
2.tracker_server=192.168.13.128:22122
3.http.tracker_server_port=6666`在这里插入代码片`

找到之前ftp中一起上传上来的那张test图片,在 /opt/ht/ftp/ 中

执行上传

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/ht/ftp/test.png

在这里插入图片描述
在上传成功之后会返回一个图片路径

group1/M00/00/00/wKgNgFuKEiaALJHCAAAMFAxmOM0112.png

组名:group1
磁盘:M00
目录:00/00
文件名称:wKgNgFuKEiaALJHCAAAMFAxmOM0112.png

我们上传的图片会被放在storage_data这个文件夹下,如图:
在这里插入图片描述
我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

至此,我们配置的fastdfs就成功完成了

这里我把以上的搭建步骤,用流程图画出来,可以帮助理解。点击查看

但是我们通过ip+返回的地址来访问这张图片时并不会成功,这是什么情况?原来,我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了192.168.13.128,文件ID已经返回客户端,这时,后台会将这个文件复制到192.168.13.128,如果复制没有完成,客户端就用这个ID在192.168.128.131取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。
正是这样,FastDFS需要结合nginx,所以取消原来对HTTP的直接支持。

7.fastDFS-nginx模块安装
在安装nginx之前要安装nginx所需的依赖lib:

yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel  
yum -y install openssl openssl-devel

完成了之后我们在 /opt/ht/dev/ 中新建一个文件夹nginx
在这里插入图片描述
同样,在 /opt/ht/unpack/ 中也建立两个文件夹叫nginx/tracker_nginx和storage_nginx,然后我们进入 /opt/ht/ftp/ 中,将fasdfs_nginx_module解压到nginx中,并且将nginx解压到tracker_nginx中

tar -zxvf nginx-1.12.2.tar.gz -C /opt/ht/unpack/nginx/tracker_nginx/
unzip -d /opt/ht/unpack/nginx/ fastdfs_nginx_modul_master.zip

完成之后的目录
在这里插入图片描述
在这里插入图片描述
进入/opt/ht/unpack/nginx/tracker_nginx/nginx-1.12.2路径中,添加fastdfs_nginx_module_master模块,并编译安装

./configure --prefix=/opt/ht/dev/nginx/tracker_nginx --add-module=/opt/ht/unpack/nginx/fastdfs-nginx-module-master/src
 


#其中,/opt/ht/dev/nginx/tracker_nginx 是定义nginx的安装路径,而/opt/ht/unpack/nginx/fastdfs-nginx-module-master/src , 则是fastdfs-nginx-module-master.zip解压之后的路径。

上述步骤完成后,执行

make
make install

完成之后,我们进入/opt/ht/dev/nginx/tracker_nginx/中,会看到如下组件
同样的操作,我们再来安装一份storage_nginx

将ftp中的nginx在解压一份到 /opt/ht/unpack/nginx/storage_nginx/ 中,后续操作同上
在这里插入图片描述
8.配置storage-nginx
我们进入到刚刚安装好的storage_nginx目录下 cd /opt/ht/dev/nginx/storage_nginx/conf/ 下,修改nginx.conf

的配置文件

vim nginx.conf
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    server {
        listen       9999; #将端口改为9999
        server_name  localhost;
        
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        #新增一个指向storage_data目录下的location节点
         location ~/group1/M00 {
            root /opt/ht/dev/fastdfs/storage_data/data;
            ngx_fastdfs_module;
        }
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

完成之后进入fastdfs-master的解压目录下拷贝配置文件

cd /opt/ht/unpack/fastdfs-master/conf/
 
将其中的http.conf和mime.types两个配置文件拷贝到 /etc/fdfs/ 目录下
 
cp http.conf /etc/fdfs/
cp mine.types /etc/fdfs/
 
再进入fastdfs-nginx-module-master.zip的解压目录中
cd /opt/ht/unpack/nginx/fastdfs-nginx-module-master/src
 
将其中的mod_fastdfs.conf 也拷贝到 /etc/fdfs/ 目录下
cp mod_fastdfs.conf /etc/fdfs

完成之后进入 /etc/fdfs/ 目录下对刚刚拷贝过来的mod_fastdfs.conf文件进行修改

vim mod_fastdfs.conf
base_path=/opt/ht/dev/fastdfs/storage  #保存日志目录
tracker_server=192.168.13.128:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/opt/ht/dev/fastdfs/storage_data   #存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1

在文件的末尾添加组信息
 
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/ht/dev/fastdfs/storage_data
store_path1=/opt/ht/dev/fastdfs/storage_data
 
# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/ht/dev/fastdfs/storage_data
 
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/ht/dev/fastdfs/storage_data

创建M00至storage存储目录的符号连接:

ln  -s  /opt/ht/dev/fastdfs/storage_data/data/ /opt/ht/dev/fastdfs/storage_data/data/M00

启动nginx

cd /opt/ht/dev/nginx/storage_nginx/sbin/
./nginx

启动成功之后会出现
在这里插入图片描述
访问192.168.13.128:9999
在这里插入图片描述
当此处无法访问的时候,很有可能是防火墙未关闭或者是端口没开解决即可。(此处楼主选择了将防火墙关闭,图个方便哈哈),到此处storage的nginx支持就完毕了,加油,剩余步骤不多了。
9.配置tracker-nginx
同样的,我们已经安装好了fastdfs-nginx-master模块,现在只需要配置nginx.conf配置文件即可。

。。。
http{
    upstream fdfs_group1 {
        server 127.0.0.1:9999;
    }
    server{
         location /group1/M00 {
            proxy_pass http://fdfs_group1;
        }
        。。。
    }
}

配置好了之后启动

cd /opt/ht/dev/tracker_nginx/sbin
 
./nginx

启动成功后同样访问192.168.13.128:80
在这里插入图片描述
至此,storage_nginx和tracker_nginx都配置完毕,我们将之前返回的图片路径加在storage_nginx上访问:
在这里插入图片描述
恭喜,至此,linux端的fastDFS简易入门版本的就已全部搭建完毕!

10.PHP客户端配置
因为php的客户端安装也会依赖fastdfs本身的一些库文件,所以请保证已经安装了fastdfs

安装过程和上边一样,这里参考上边安装过程!

这个php客户端所在的测试机本来我就在上边搭建好了LNMP,所以只需参考上述过程安装fastdfs即可!

[root@web1 ~]# cd /root/FastDFS/php_client
[root@web1 php_client]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@web1 php_client]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@web1 php_client]# make && make install
[root@web1 php_client]# cat fastdfs_client.ini >> /usr/local/php/etc/php.ini
pear.conf             php-fpm.conf          php-fpm.conf.default
[root@web1 php_client]# cat fastdfs_client.ini >> /etc/php.ini

验证模块是否被正常加载

[root@web1 php_client]# /usr/local/php/bin/php -m | grep fastdfs_client
fastdfs_client              #说明模块已加载 www.it165.net

重新加载php

[root@web1 php_client]# service php-fpm reload

修改为如下配置:

vi client.conf
tracker_server=192.168.25.204:22122
http.tracker_server_port=80

重新加载php

[root@web1 php_client]# service php-fpm reload

然后我们写个小页面,写个php脚本上传

[root@web1 ~]# echo "php client is here." > /opt/upload.txt
[root@web1 ~]# vim test.php
<?php
var_dump(function_exists('fastdfs_storage_upload_by_filename'));
$ret = fastdfs_storage_upload_by_filename('/opt/upload.txt');
var_dump($ret);
?>

执行php脚本

[root@web1 ~]# /usr/local/php/bin/php test.php

结果如下图所示:
在这里插入图片描述
我们来访问下试试;
在这里插入图片描述
到此为止我们关于fastdfs的完整应用就介绍到此了,希望大家都动手做一下!还有关于fastdfs php插件的使用方法和函数调用方法,可以看/root/FastDFS/php_client/README,里面有详细介绍!

参考文章:
https://blog.csdn.net/StickWine/article/details/82259743
https://www.cnblogs.com/jamesbd/p/3729376.html

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值