精选文章 FastDFS学习笔记(二)FastDFS安装(单机模式)

FastDFS学习笔记(二)FastDFS安装(单机模式)

作者:zxf_noimp 时间: 2019-11-05 04:22:28
zxf_noimp 2019-11-05 04:22:28

1、安装文件下载

作者的GitHub地址:https://github.com/happyfish100

fastdfs-5.11.zip

libfastcommon-master.zip

FastDFS学习笔记(二)FastDFS安装(单机模式)1

把下载的文件复制到centOS上,我的存放目录是:/usr/local/fastdfs

先安装类库

一定要先安装,否则后面或报错

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget

2、安装libfastcommon-master

libfastcommon-master.zip是一款从FastDFS项目中剥离出来的C基础库。libfastcommon是一款开源的C基础库,她是从FastDFS项目中剥离出来的C基础库。 这个库非常简单稳定。 函数包括:字符串,记录器,链,散列,套接字,ini文件读取器,base64编码/解码,url编码/解码,快速定时器,skiplist,对象池等详细信息请看c头文件。fastDFS是C语言开发的,所以需要先安装 此库。

由于我的centOS7是最小化安装,我里面没有安装zip解压。
先安装 :libfastcommon-master.zip

yum -y install unzip zip

安装成功后解压libfastcommon-master.zip

unzip libfastcommon-master.zip

进入我们刚刚解压的目录: 

cd libfastcommon-master

用yum安装gcc:
yum命令相当好用,是RedHad和CentOS从指定服务器下载RPM包并自动安装。我个人比较喜欢。

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

注意:libfdfsclient.so可能招不到,所以建立软连接的过程可以等到安装完fastdfs后再执行,安装了fastdfs后再/usr/lib64目录下会出现libfdfsclient.so文件。

2、安装FastDFS

解压FastDFS安装包

unzip fastdfs-5.11.zip

进到刚解压的目录:

cd fastdfs-5.11
./make.sh
./make.sh install

如果没有报错那么就成功了。安装log中会提示FastDFS安装到了/etc/fdfs目录下。

成功后查看安装目录:

[root@localhost ftp]# cd /etc/fdfs/
[root@localhost fdfs]# ll
-rw-r--r-- 1 root root  1461 Jun  8 21:56 client.conf.sample
-rw-r--r-- 1 root root  7927 Jun  8 21:56 storage.conf.sample
-rw-r--r-- 1 root root  7389 Jun  8 21:56 tracker.conf.sample

我们需要把这三个示例文件复制一份,去掉.sample。

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

FastDFS安装结束。

3、安装tracker

该步骤主要创建tracker的工作目录,并把创建的目录配置到tracker.conf文件中

3.1、创建tracker工作目录:

我创建的目录为:

/usr/local/fastdfs/dev/fastdfs_tracker

3.2、配置tracker:

cd /etc/fdfs
vim tracker.conf

打开后重点关注下面4个配置:
disabled=false #默认开启
port=22122 #默认端口号
base_path=/usr/local/fastdfs/dev/fastdfs_tracker #我刚刚创建的目录
http.server_port=6666  #默认端口是8080

3.2、启动tracker

保存配置后启动tracker,命令如下:

[root@demo fastdfs_tracker]# service fdfs_trackerd start
Starting FastDFS tracker server: 
[root@demo fastdfs_tracker]# 

启动成功!进行刚刚创建的tracker目录,发现目录中多了data和log两个目录。

如果要停止,请执行:service fdfs_trackerd stop命令

4、安装storage

storage的安装与tracker很类似;

与tracker不现的是,由于storage还需要一个目录用来存储数据,所以我另外多建了一个fasdfs_storage_data

4.1、为storage配置工作目录

下面是我的目录结构:

drwxr-xr-x. 4 root root 4096 11月  5 01:20 fastdfs_storage
drwxr-xr-x. 3 root root 4096 11月  5 01:22 fastdfs_storage_data
drwxr-xr-x. 4 root root 4096 11月  5 00:39 fastdfs_tracker
[root@demo dev]# pwd
/usr/local/fastdfs/dev

4.2、修改storage配置文件

修改storage.conf

vim /etc/fdfs/storage.conf

disabled=false
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/usr/local/fastdfs/dev/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/usr/local/fastdfs/dev/fastdfs_storage_data #实际文件存储路径
tracker_server=192.168.0.89:22122 #把storage注册到tracker_server中,如果有多个,则服务多行
http.server_port=8888 #设置 http 端口号

修改保存后创建软引用

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

4.3 启动storage

[root@demo dev]# service fdfs_storaged start
Starting FastDFS storage server: 
[root@demo dev]# 

5、加入开机自启动

加入权限:

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

分别把strackerd和storaged的启动命令加入:vim /etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
service fdfs_trackerd start
service fdfs_storaged start

查看服务是否启动

[root@demo dev]# netstat -unltp | grep fdfs
tcp        0      0 0.0.0.0:23000               0.0.0.0:*                   LISTEN      5382/fdfs_storaged  
tcp        0      0 0.0.0.0:22122               0.0.0.0:*                   LISTEN      19866/fdfs_trackerd 
[root@demo dev]# 

服务已正常启动。

6、验证是否正常

[root@demo dev]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2019-11-06 00:18:43] DEBUG - base_path=/usr/local/fastdfs/dev/fastdfs_storage, connect_timeout=10, 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

server_count=1, server_index=0

tracker server is 192.168.0.89:22122

group count: 1

Group 1:
group name = group1
disk total space = 15756 MB
disk free space = 2872 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

	Storage 1:
		id = 192.168.0.89
		ip_addr = 192.168.0.89 (anantes-651-1-49-net.w2-0.abo.wanadoo.fr)  ACTIVE
		http domain = 
		version = 6.01
		join time = 2019-11-05 01:22:36
		up time = 2019-11-06 00:10:37
		total storage = 15756 MB
		free storage = 2872 MB
		upload priority = 10
		store_path_count = 1
		subdir_count_per_path = 256
		storage_port = 23000
		storage_http_port = 8888
		current_write_path = 0
		source storage id = 
		if_trunk_server = 0
		connection.alloc_count = 256
		connection.current_count = 0
		connection.max_count = 0
		total_upload_count = 99
		success_upload_count = 99
		total_append_count = 0
		success_append_count = 0
		total_modify_count = 0
		success_modify_count = 0
		total_truncate_count = 0
		success_truncate_count = 0
		total_set_meta_count = 4
		success_set_meta_count = 4
		total_delete_count = 0
		success_delete_count = 0
		total_download_count = 3
		success_download_count = 3
		total_get_meta_count = 1
		success_get_meta_count = 1
		total_create_link_count = 0
		success_create_link_count = 0
		total_delete_link_count = 0
		success_delete_link_count = 0
		total_upload_bytes = 957160135
		success_upload_bytes = 957160135
		total_append_bytes = 0
		success_append_bytes = 0
		total_modify_bytes = 0
		success_modify_bytes = 0
		stotal_download_bytes = 70076196
		success_download_bytes = 70076196
		total_sync_in_bytes = 0
		success_sync_in_bytes = 0
		total_sync_out_bytes = 0
		success_sync_out_bytes = 0
		total_file_open_count = 103
		success_file_open_count = 103
		total_file_read_count = 271
		success_file_read_count = 271
		total_file_write_count = 3687
		success_file_write_count = 3687
		last_heart_beat_time = 2019-11-06 00:18:36
		last_source_update = 2019-11-05 23:17:00
		last_sync_update = 1970-01-01 08:00:00
		last_synced_timestamp = 1970-01-01 08:00:00 
[root@demo dev]# 

6.1、配置客户端

同样的,需要修改客户端的配置文件:

vim /etc/fdfs/client.conf

base_path=/usr/local/fastdfs/dev/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.0.89:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker的设置对应起来 

6.2 模拟上传

确定图片位置后,我们输入上传图片命令:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg  #这后面放的是图片的位置

成功后会返回图片的路径:

[root@localhost ~]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg
group1/M00/00/00/wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

 

组名:group1
磁盘:M00
目录:00/00
文件名称:wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

我们上传的图片会被上传到我们创建的storage_data目录下,让我们去看看:

果然通过刚刚返回的路径,我们成功找到了图片。

我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

 

 

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:Pychrm连接群辉Git服务器

下一篇:mysql too many connections 解决方法

您可能感兴趣

  • NL 学习资源

    https://github.com/fighting41love/funNLP 在入门到熟悉NLP的过程中,用到了很多github上的包,遂整理了一下,分享在这里。 很多包非常有趣,值得收藏,满足大家的收集癖! 如果觉得有用,请分享并star,谢谢! 长期不定时更新,欢迎watch和fork! 涉及内容包括但不限于:中英文敏感词、语言检测、中外手机/电话归属地/运营商查询、名字推断性别、手...

  • 找工作是去智联招聘、前程无忧、58同城还是boss直聘?

    96个优质招聘网站,带链接瞬间直达非常方便,希望能够到大家。 零、创新型招聘平台 1.【技术创新】上啥班 | 国内首款短视频招聘APP,企业视频展示信息更真实,在线聊天面试加底薪保障制度,让找工作更简单更安心。 2.【人脉招聘】脉脉 | 职场舞台、机遇蓝海 3.【极速反馈】香草招聘 | 针对刚步入职场的年轻人的招聘平台,低学历、零经验也能进名企,面试当天反馈结果。 一、互联网招聘网站(13)...

  • 提高社会的微生物素养:势在必行!

    写在前面 我思,故我们在! 微生物早已和人类及地球水乳交融,微生物及其功能正在得到铺天盖地的研究。毫不夸张的说,微生物是地球最早的也是最后一个客人,没有微生物,万物皆不复。然而微生物学,作为一门专业课而非通识课程,在大学课堂上才非闪亮登场(高中生物更多的是动植物)。今年的肺炎病毒疫情正在给全世界人民上课,倘若微生物学知识普及开来,何以会如此被动? 上至国家领导,下至村野匹夫,都应了解和学习一...

  • 2020年iOS面试反思总结

    Object-C系列面试题总结 基础题: 1.Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么不要在category中重写一个类原有的方法? 答: Objective-c的类不可以有多继承,OC里面都是单继承,多继承可以用protocol委托代理来模拟实现 可以实现多个接口,可以通过实现多个接口完成OC的多重继承...

  • 读后感之《目标》

    原文转自我自己的个人公众号:https://mp.weixin.qq.com/s/U6gCzQtIXCi06cz19YLsew 欢迎关注。 《目标》这本书是我19年的时候买的一批书中的一本。买这本书的理由是当时正在看《凤凰项目》。在《凤凰项目》这本书中,多次提到了《目标》和“约束理论”。但后来因为工作的原因,很多技术类的书的优先级都被我调高了,因此这本书也一直没有机会看。大约是在两个月前,终...

  • Print 函数已老,DeBug 该靠这个万星 PySnooper 了

    (给机器学习算法与Python学习加星标,提升AI技能) 本文由机器之心(nearhuman2014)整理 项目地址:https://github.com/cool-RR/pysnooper 在本文介绍的这个项目中,deBug Python 代码再也不需要 print 了。只要给有疑问的代码加上装饰器,各种信息一目了然,找出错误也就非常简单了。这个名为 PySnooper 的项目是刚开源的,...

  • 第七章-函数

    我始终不明白为什么还要麻烦的函数原型。如果只是把所有函数的定义放置在 main函数的前面,不就没有问题了吗? 不可能只有main函数调用其他函数。 如果函数之间互相调用,因为不允许调用未定义的函数,所以必须仔细斟酌他们的顺序,是很麻烦的。 总之最好是用上函数原型。 错。首先,你是假设只有main 函数调用其他函数,当然这是不切实际的。实际上,某些函数将会相互调用。如果把所有的函数定义放在 m...

  • 【Hoxton.SR1版本】Spring Cloud Eureka服务注册中心单节点搭建

    目录 一、前言 二、父工程搭建 三、公共API项目搭建 四、Eureka Server端搭建 五、Eureka Client【服务提供者】搭建 六、Eureka Client【服务消费者】搭建 七、扩展 一、前言 由于SpringCloud较老版本已经停止更新,已经迭代好几个版本,加上最近SpringCloud Alibaba挺火的,所以想花一点时间去学习一下并总结一番,本文主要搭建Spri...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。