FastDFS安装使用教程

FastDFS安装使用教程

 

前提:

了解Linux命令,参考网站:http://blog.sina.com.cn/s/blog_13887bf130102xnk7.html

至少要知道make install,vim等命令。


一、准备工作-安装libevent

下载地址:https://pan.baidu.com/s/1KvGi9R67EdR9_rIiH2Etxg

FastDFS 内部绑定了 libevent 作为 http 服务器 ,在V2.0以上版本必须安装 libevent

查看libevent是否已安装

ls -al /usr/lib | grep libevent

如果已经安装了 libevent,请确认安装路径是 /usr 否则编译 FastDFS 会出错。因为 FastDFS 在编译源程序时,需要到此目录下查找一些依赖文件如果不是,建议首先卸载 libevent ,然后安装到 /usr

 

1.解压libevent

安装包下载后放到任意路径即可,例如我放在/root下。

tar xvzf libevent-2.0.19-stable.tar.gz

 

2进入解压后的目录进行安装,分别执行:

./configure --prefix=/usr如报not found,查看 3.报错解决

make clean;

make

make install

 

3.  报错解决:

如果执行./configure报一些not found的错的话,说明有些底层的包没有安装,请参考:http://blog.sina.com.cn/s/blog_13887bf130102xl44.html

 

安装libevent完成。ROOT权限

 

二、 安装 FastDFS

下载地址:https://pan.baidu.com/s/1-JbpvLN148eBqp2uNOKXhw

 

1.解压FastDFS

安装包下载后放到任意路径即可,例如我放在/root下。

tar xvzf FastDFS_v5.02.tar.gz

 

2http支持  (如果文件中找不到,可以不处理)

由于要使用内置的 http 服务,因此编辑 FastDFS/make.sh 文件,找到#WITH_HTTPD=1 修改成 WITH_HTTPD=1,以支持 http如果文件中找不到,可以不处理

 

3进入FastDFS目录,执行安装

./make.sh

./make.sh install

 

至此FastDFS安装完成

 

三、配置及启动Tracker Server

1.修改etc/fdfs/tracker.conf文件,修改如下(以下修改都是在192.168.10.75主服务器的修改)

修改base_path,该目录必须存在,用于存储日志及storage server等信息

base_path=/home/yuqing/fastdfs -> base_path=/home/fastdfs (在home下创建fastdfs文件夹)

 

修改http端口

http.server_port=8080 -> http.server_port=8090

 

http支持

##include http.conf -> #include http.conf (没有找到##的话,直接新增)

 

绑定IP

bind_addr=192.168.10.75

 

2.http.conf文件拷贝到/etc/fdfs目录下

cp /root/FastDFS/conf/http.conf /etc/fdfs/  (如果安装后默认存在的话,这一步就不用处理了)

 

注:为了支持http,必须将这个文件拷贝到此目录

 

3.启动tracker服务器

fdfs_trackerd /etc/fdfs/tracker.conf 

至此tracker server已经启动成功

查看进程: ps -ef|grep fdfs


4.停止tracker server

stop.sh /etc/fdfs/tracker.conf


四、配置及启动Storage Server

1.修改etc/fdfs/storage.conf文件,修改如下:

修改base_path,该目录必须存在

base_path=/home/yuqing/fastdfs -> /home/fastdfs (在home下创建对应文件夹)

 

文件的存储位置,在一台storage server上可以指定多个存储位置

store_path0=/home/yuqing/fastdfs -> /home/fastdfs

store_path1=/home/yuqing/fastdfs -> /home/fastdfs1

store_path2=/home/yuqing/fastdfs -> /home/fastdfs2

..

几个存储位置store_path_count就要设置对应数量的

store_path_count=2

(注:如果是多个存储位置,系统存放按照tracker.conf中配置的来。store_lookup=X 0:轮询 1:specify group 2:按剩余空间大小 )

 

storage所在组

group_name=myGroup 

 

修改成tracker server的IP和端口信息

tracker_server=192.168.10.75:22122 

 

http支持

##include http.conf ->#include http.conf (没有找到##的话,直接新增一行)

 

2.启动storage服务器

启动storage时需要先启动tracker:

fdfs_trackerd /etc/fdfs/tracker.conf

fdfs_storaged /etc/fdfs/storage.conf

至此storage server已经启动成功


查看进程: ps -ef|grep fdfs

 

如果执行完命令没有卡住就代表启动成功了,如果卡住了,无法进入下一个命令行,那就是启动失败了,按ctrl+c可以进入下一个命令行。

 

启动失败后,可以去/home/fastdfs/logs中查看日志。

 

我第一次storage启动失败的理由是:storage_ip_changed_dealer.c, line: 180, connect to tracker server 192.168.10.75:22122 fail, errno: 111, error info: Connection refused

 

这个错误说明连接到tracker失败了,说明肯定是防火墙拦截了,我直接关闭防火墙就成功了。执行停止服务和禁止开机自启就可以了。

 

防火墙命令大全:

systemctl status firewalld #查看firewalld状态

systemctl stop firewalld #停止firewalld服务

systemctl disable firewalld #禁止防火墙开启自启

systemctl mask firewalld #禁用firewalld服务

systemctl start firewalld #启动firewalld服务

systemctl enable firewalld #启动防火墙开启自启

systemctl unmask firewalld #启动firewalld服务

 

 

3.停止storage server

stop.sh /etc/fdfs/storage.conf

 

4.多个storage

如果要扩展增加storage,可以直接新增storage服务器,配置同上,绑定tracker即可。

 

五、上传文件

FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载

1.修改/etc/fdfs/conf/client.conf文件修改如下:

base_path=/home/yuqing/fastdfs-> base_path=/home/fastdfs

tracker_server=192.168.10.75:22122

http.tracker_server_port=8090

##include http.conf ->#include http.conf

 

2. 上传文件

例如将安装包/root/FastDFS/conf中的测试图片anti-steal.jpg上传到FastDFS:

sudo /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload /root/FastDFS/conf/anti-steal.jpg

如果没有报错,而且显示出file url就代表上传文件成功,即fastdfs功能正常。 

 

3.记录地址,用于安装Nginx后打开文件

例:file url: http://192.168.10.75:8090/myGroup/M00/00/00/wKhzjFrv_sCAObTYAAKKTERYCgk969_big.jpg

 

4.安装nginx:

参考地址:http://blog.sina.com.cn/s/blog_13887bf130102xnk4.html

 

六、相关地址

Tracker.conf,storage.conf,client.conf等路径:etc/fdfs/

上传,下载等操作日志路径:base_path中配置的home/fastdfs/log/

 

七、java客户端相关说明

配置文件详解

connect_timeout = 2

network_timeout = 30

charset = ISO8859-1

http.tracker_http_port = 8090

http.anti_steal_token = no

http.secret_key = FastDFS1234567890     etc/fdfs/http.conf中配置的

tracker_server = 192.168.10.75:22122

 

 

 

trackerstorage的配置文件详解

tracker 的配置文件详解

disabled=false

#配置是否生效

 

bind_addr=192.168.10.75

#绑定IP

 

port=22122

#服务端口

 

connect_timeout=30

#连接超时时间

 

network_timeout=60

#tracker server的网络超时,单位为秒。

 

base_path=/home/fastdfs

#目录地址,里面会创建data(存放存储服务器信息)、logs,日志文件

 

max_connections=256

#系统提供服务最大连接数

 

work_threads=4

#线程数,通常设置CPU数

 

store_lookup=2

上传组(卷) 的方式 0:轮询方式 1: 指定组 2: 平衡负载(选择最大剩余空间的组(卷)上传)

这里如果在应用层指定了上传到一个固定组,那么这个参数被绕过

 

store_group=group1

当上一个参数设定为1 时 (store_lookup=1,即指定组名时),必须设置本参数为系统中存在的一个组名。如果选择其他的上传方式,这个参数就没有效了

 

store_server=0

选择哪个storage server 进行上传操作(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)

# 0: 轮询方式

# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)

# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority)

 

store_path=0

选择storage server 中的哪个目录进行上传。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。

# 0: 轮流方式,多个目录依次存放文件

# 2: 选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)

 

download_server=0

选择哪个 storage server 作为下载服务器

# 0: 轮询方式,可以下载当前文件的任一storage server

# 1: 哪个为源storage server 就用哪一个 (前面说过了这个storage server源 是怎样产生的) 就是之前上传到哪个storage server服务器就是哪个了

 

reserved_storage_space = 4GB

storage server 上保留的空间,保证系统或其他应用需求空间(指出 如果同组的服务器的硬盘大小一样,以最小的为准,也就是只要同组中有一台服务器达到这个标准了,这个标准就生效,原因就是因为他们进行备份)

 

log_level=info

#选择日志级别

 

run_by_group=

#操作系统运行FastDFS的用户组

 

run_by_user=

#操作系统运行FastDFS的用户

 

allow_hosts=*

#可以连接到此 tracker server 的ip范围(对所有类型的连接都有影响,包括客户端,storage server)

 

sync_log_buff_interval = 10

# 同步或刷新日志信息到硬盘的时间间隔,单位为秒

# 注意:tracker server 的日志不是时时写硬盘的,而是先写内存。

 

check_active_interval = 120

# 检测 storage server 存活的时间隔,单位为秒。

# storage server定期向tracker server 发心跳,如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,那边将认为该storage server已经下线。所以本参数值必须大于storage server配置的心跳时间间隔。通常配置为storage server心跳时间间隔的2倍或3倍。

 

thread_stack_size = 64KB

# 线程栈的大小。FastDFS server端采用了线程方式。更正一下,tracker server线程栈不应小于64KB,不是512KB。

# 线程栈越大,一个线程占用的系统资源就越多。如果要启动更多的线程(V1.x对应的参数为max_connections,

V2.0为work_threads),可以适当降低本参数值。

 

storage_ip_changed_auto_adjust = true

# 这个参数控制当storage server IP地址改变时,集群是否自动调整。注:只有在storage server进程重启时才完成自动调整。

 

storage_sync_file_max_delay = 86400

# V2.0引入的参数。存储服务器之间同步文件的最大延迟时间,缺省为1天。根据实际情况进行调整

 

storage_sync_file_max_time = 300

# V2.0引入的参数。存储服务器同步一个文件需要消耗的最大时间,缺省为300s,即5分钟。

 

 

 

http.disabled=true

#HTTP服务是否不生效 当然编译的时候我已经把 with_httpd宏去掉了

 

http.server_port=80

# HTTP服务端口

 

#下列参数只有 开启http服务才有用

http.check_alive_interval=30

http.check_alive_type=tcp

http.check_alive_uri=/status.html

http.need_find_content_type=true

 

 

storage.conf的配置

disabled=false

#配置是否生效

 

group_name=group1

#storage所在组(卷)

 

bind_addr=192.168.10.75

# 绑定IP,另一太 storage IP为 192.168.10.74

 

client_bind=true

#bind_addr通常是针对server的。当指定bind_addr时,本参数才有效。

 

port=23000

# 是storage 服务端口

 

connect_timeout=30

# 连接超时时间,针对socket套接字函数connect

 

network_timeout=60

# storage server 网络超时时间,单位为秒。

 

heart_beat_interval=30

# 心跳间隔时间,单位为秒

 

stat_report_interval=60

# storage server向tracker server报告磁盘剩余空间的时间间隔,单位为秒。

 

base_path=/home/fastdfs

# base_path 目录地址,根目录必须存在  子目录会自动生成

# 会产生data(数据存储地方)、 logs日志文件

 

max_connections=256

# 最大连接数

 

buff_size = 256KB

# 设置队列结点的buffer大小。

 

work_threads=4

# 工作线程数

 

disk_rw_separated = true

# 磁盘IO读写是否分离,缺省是分离的。

 

disk_reader_threads = 1

# 针对单个存储路径的读线程数,缺省值为1

 

disk_writer_threads = 1

# 针对单个存储路径的写线程数,缺省值为1

 

sync_wait_msec=200

# 同步文件时,如果从binlog中没有读到要同步的文件,休眠N毫秒后重新读取,0表示不休眠,立即再次尝试读取。

 

sync_interval=0

#  同步上一个文件后,再同步下一个文件的时间间隔,单位为毫秒,0表示不休眠,直接同步下一个文件。

 

sync_start_time=00:00

sync_end_time=23:59

# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定,相信sa都会明白。

 

write_mark_file_freq=500

# 把storage的mark文件定期同步到磁盘的时间间隔,单位为秒

 

store_path_count=1

# 存放文件时storage server支持多个路径(例如磁盘)。这里配置存放文件的基路径数目,通常只配一个目录。

 

store_path0=/home/fastdfs0

store_path1=/home/fastdfs1

#  逐一配置store_path个路径,索引号基于0。注意配置方法后面有0,1,2 ......,需要配置0到store_path - 1。

# 如果不配置base_path0,那边它就和base_path对应的路径一样。

 

subdir_count_per_path=32

# FastDFS存储文件时,采用了两级目录。这里配置存放文件的目录个数

 

tracker_server=192.168.10.75:22122

# tracker_server 的列表 要写端口的哦

 

log_level=info

# 日志级别

 

run_by_group=

# 运行storage 用户组

 

run_by_user=

# 运行storage 用户

 

allow_hosts=*

# 允许连接IP列表

 

file_distribute_path_mode=0

# 文件在data目录下分散存储策略。

# 0: 轮流存放

# 1: 随机存储

 

file_distribute_rotate_count=100

# 当上面的参数file_distribute_path_mode配置为0(轮流存放方式)时,本参数有效。

#当一个目录下的文件存放的文件数达到本参数值时,后续上传的文件存储到下一个目录中

 

fsync_after_written_bytes=0

# 当写入大文件时,每写入N个字节,调用一次系统函数fsync将内容强行同步到硬盘。0表示从不调用fsync

 

sync_log_buff_interval=10

# 同步或刷新日志信息到硬盘的时间间隔,单位为秒

 

sync_binlog_buff_interval=60

# 同步binglog(更新操作日志)到硬盘的时间间隔,单位为秒

 

sync_stat_file_interval=300

# 把storage的stat文件同步到磁盘的时间间隔,单位为秒。

 

thread_stack_size=512KB

# 线程栈的大小。FastDFS server端采用了线程方式。

# 线程栈越大,一个线程占用的系统资源就越多。

 

upload_priority=10

storage server作为源服务器,上传文件的优先级,可以为负数。值越小,优先级越高。这里就和 tracker.conf 中store_server= 2时的配置相对应了

 

if_alias_prefix=

check_file_duplicate=0

#是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个符号链接以节省磁盘空间。 结合 fastdfh使用的。 1是检测,0是不检测,我们不使用fastdfh 当然 0 

 

key_namespace=FastDFS 

# 当上个参数设定为1 或 yes时 (true/on也是可以的) , 在FastDHT中的命名空间

 

keep_alive=0

# 与FastDHT servers 的连接方式 (是否为持久连接)

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值