一、准备工作-安装libevent
FastDFS 内部绑定了 libevent 作为 http 服务器 ,在V2.X版本必须安装 libevent ,本文安装的是V2.2版本,因此必须安装libevent。(官方也推荐使用 http 方式下载 文件 )
如果已经安装了 libevent,请确认安装路径是 /usr , 因为 FastDFS 在编译源程序时,需要到此目录下查找一些依赖文件,否则编译 FastDFS 会出错 。如果不是,建议首先卸载 libevent ,然后安装到 /usr 下。Ubuntu10.4默认是安装了libevent,可以到软件中心卸载掉然后按照下面介绍的方式安装。举棚
安装锋答蠢步骤:
解压 libevent ,然后进入解压后的目录分别执行:
Shell代码
./configure --prefix=/usr
make clean
make
make install
安装libevent完成。
二、安装 FastDFS
1、下载 FastDFS 源程序
2、在 FastDFS_v4.05.tar.gz 所在文件夹下执行:
Shell代码
sudo tar vxzf FastDFS_v4.05.tar.gz /home/soar/FastDFS
注: /home/soar/FastDFS 也可以是其他目录,记住这是解压目录,以后用 %FastDFS% 表示)
3、由于要使用内置的 http 服务,因此编辑 %FastDFS%/make.sh 文件,找到
#WITH_HTTPD=1
修改成
WITH_HTTPD=1
以支持 http
4、进入 %FastDFS% 目录,执行:
Shell代码
sudo ./make.sh
5、在 %FastDFS% 目录下,执行:
Shell代码
sudo ./make.sh install
如果运行如上命令后,在命令行信息最后看到类似
Shell代码
#ln -fs /usr/local/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so
#ln -fs /usr/local/lib/libfdfsclient.so.1 /usr/local/lib/libfdfsclient.so
sh ./fdfs_link_library.sh
恭喜你,已经安装成功了!
FastDFS的配置文件在%FastDFS%/conf目录下,其中包括
Client.conf客户端上传配置文件
Storage.conf文件存储服务器配置文件
Tracker.conf负责均衡调度服务器配置文件
http.confhttp服务器配置文件
配置文件需要根据服务器环境的不同,进行不同的配置,具体可以参考FastDFS官方的安装配置文档http://code.google.com/p/fastdfs/wiki/Setup,以及FastDFS原理介绍文档http://code.google.com/p/fastdfs/wiki/Overview
在本例中,Tracker Server,Storage Server都安装在一台服务器上,IP:10.0.2.15
1、配置及启动Tracker Server
A、修改%FastDFS%/conf/tracker.conf文件,修改如下
#可以自己指定目录位置,但目录必须存在,用于存储日志及storage server等信息,否则tracker server无法启动
Txt代码
base_path=/home/yuqing/fastdfs ->base_path=/home/soar/fastdfs_tracker
#改成你想要的http端口,将来http下载文件的端口就是他了
Txt代码
http.server_port=8080 ->http.server_port=8090
#http支持
Txt代码
##include http.conf ->#include http.conf
#默认4GB,如果空间不足,建议调小,否则会报no free space的异常,无法正常启动
Txt代码
reserved_storage_space = 4GB ->reserved_storage_space = 1GB
#tracker server对storage server供服务的端口,使用默认的即可,也可以自定义
Txt代码
port=22122
B、将http.conf文件拷贝到/etc/fdfs目录下,执行
Shell代码
sudo cp %FastDFS%/conf/http.conf /etc/fdfs/
注:为了支持http,必须将这个文件拷贝到此目录,否则无法启动,报param http.XXX not exist or is empty类似的错误
C、进入/usr/local/bin/目录,启动tracker服务器,执行
Shell代码
sudo fdfs_trackerd %FastDFS%/conf/tracker.conf
D、进入/home/soar/fastdfs_tracker/logs/trackerd.log查看tracker的启动日志,如果看到类似
Shell代码
[2010-11-04 16:21:25] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_tracker, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s
[2010-11-04 16:21:25] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html
恭喜你,tracker server已经启动成功!
2、配置及启动Storage Server
A、修改%FastDFS%/conf/storage.conf文件,修改如下:
#可以自定义,但必须存在此目录,用于存储storage相关的log、group内的相关信息
Txt代码
base_path=/home/yuqing/fastdfs ->/home/soar/fastdfs_storge
#文件的存储位置,在一台storage server上可以指定多个存储位置
Txt代码
store_path0=/home/yuqing/fastdfs ->store_path0=/home/soar/fastdfs_storge
#必须指定
Txt代码
group_name=group1
#修改成tracker server的IP和端口信息
Txt代码
tracker_server=192.168.209.121:22122 ->tracker_server=10.0.2.15:22122
#http支持
Txt代码
##include http.conf ->#include http.conf
B、进入/usr/local/bin/目录,启动storage服务器,执行
Shell代码
sudo fdfs_storaged %FastDFS%/conf/storage.conf
C、进入/home/soar/fastdfs_tracker/logs/storage.log查看storage服务器启动日志,如果看到类似
Shell代码
[2010-11-04 16:37:16] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_storge, store_path_count=1, subdir_count_per_path=256, group_name=group1, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=200ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=60s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_duplicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain name=
[2010-11-04 16:37:16] INFO - HTTP supported: server_port=8888, http_trunk_size=262144, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0
[2010-11-04 16:37:16] INFO - file: storage_param_getter.c, line: 48, storage_ip_changed_auto_adjust=1
[2010-11-04 16:37:19] INFO - file: tracker_client_thread.c, line: 274, successfully connect to tracker server 10.0.2.15:22122, as a tracker client, my ip is 10.0.2.15
恭喜你,storage server已经启动成功!
经过前面的安装、配置、启动,马上就可以看到FastDFS的效果了,我们先上传一个文件,然后再通过http下载。
一、上传文件
FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载。
1、修改%FastDFS%/conf/client.conf文件,修改如下:
#可自定义,但此目录必须存在,用于存放文件上传log
Txt代码
base_path=/home/yuqing/fastdfs->base_path=/home/soar/fastdfs_tracker
Txt代码
tracker_server=192.168.209.121:22122 ->tracker_server=10.0.2.15:22122
Txt代码
http.tracker_server_port=8080 ->http.tracker_server_port=8090
#支持http
Txt代码
##include http.conf ->#include http.conf
2、进入/usr/local/bin/目录,上传文件,执行
Txt代码
sudo fdfs_test %FastDFS%/conf/client.conf upload a.txt
注:a.txt可以在/usr/local/bin/目录下自己创建一个
如果命令行反馈类似如下:
则说明上传文件成功。
关于fastdfs集群和备份配置
1、修改tracker.conf文件中store_lookup=2 平衡负载
2、修改tracker.conf文件中store_server=0 采用轮询方式。
如果希望只使用一台文件存储服务器,其他二台做备份,则修改文件tracker_server为某台主机的IP,只启动文件存储服务器的tracker,其他二台备份服务器不需要启动tracker。
如果希望三台服务器集群使用,互相备份,比如:使用A机器存储文件,这时候A机器会将文件同步到B机器和C机器,同理使用B机器存储文件,则会同时将文件同步到A机器和C机器。这时候需要将所有的机器IP和端口号
都配置在storage.conf中,如下所示:
tracker_server=10.207.16.127:22122
tracker_server=10.207.16.129:22122
项目中使用了FastDFS作为文件系统,这里记录一下它的安装和配置过程
由于是测试环境,所以只提供了一台服务器,后续软件的安装和配置都在这台服务器上完成
1、安装fastdfs公共库橘颤返libfastcommon,注意fastdfs和libfastcommon的安装目录,后面安装fastdfs-nginx-module时需要进行相关配置
2、安装fastdfs
3、配置Tracker
注意一下存放数据和日志的目录,启动后需要查看日志信息
4、启动Tracker
5、查看日志
为了确保Tracker启动成功,我们可以在刚在配置的日志目录中查看日志信息
出现上述信息表示Tracker已启动成功
6、遇到的问题
Tracker启动后,如果改了Tracker的配置文件想要重新启动,执行启动命令后发现日志中报错
这是因为此时Tracker已经启动了,再执行启动命令就会报错地址已被使用,此时可以执行restart命令进行重启
或者
安装步骤在上面Tracker的安装中已经做好了,直接配置即可
1、配置Storage
注意tracker的地址配置是否正确,否则启动时会报错
2、启动Storage
3、查看日志
出现上述信息表示Storage已启动成功
4、遇到的问题
Storage启动后,如果改了Storage的配置文件想要重新启动,执行启动命令后发现日志中报错
这是因为此时Storage已经启动了,再执行启动命令就会报错地址已被使用,此时可以执行restart命令进行重启
或者
之前阿里云ESC实例迁移,导致服务器内网ip地址发生了改变,重启Storage时日志报错
这是由于Storage配置文件中tracker_server的ip地址还是旧地址,所以会出现连接超时的问题,将配置文件中的地址改成新的地址重启Storage
1、配置fastdfs-nginx-module所需的配置文件,包括mod_fastdfs.conf,http.conf,mime.types
注意tracker_server地址,否则启动后会报错
2、安装配置
注意CORE_INCS和CFLAGS两项的配置
1、建立nginx用户
2、安装配置
3、更改nginx目录权限
4、配置文件nginx.conf
提供一个最简单的配置方式供参考,由于项目中nginx还做了其他处理,配置洞宴文件比较复杂,这里就不贴出来了
5、启动nginx
两种方式
或者
使圆饥用过程中有其他问题多查看日志报错情况,或者查阅 Nginx 跳转fastdfs存储图片地址报错问题分析过程汇总 ,详细原理讲解和测试查阅下面的参考文档
参考: 分布式文件系统FastDFS实践
1.系统环境
最小化安装的 CentOS 6.2
tracker1: 192.168.68.113
tracker1: 192.168.68.116
storage1: 192.168.68.114
storage1: 192.168.68.115
2.环境准备[所有服务器都需要]
安装EPEL源
rpm -ivh epel-release-6-6.noarch.rpm
安枣轿装开发工具和编译nginx所需的开发备蚂包
yum groupinstall -y "Development Tools"
yum install -y libevent-devel pcre-devel zlib-devel
3.在tracker上的安装配置
[root@tracker1]# wget http://fastdfs.googlecode.com/files/FastDFS_v3.06.tar.gz
[root@tracker1]# tar xvzf FastDFS_v3.06.tar.gz
[root@tracker1]# cd FastDFS
[root@tracker1]# vi make.sh
#将找到下面两行,将前边的"#"去掉,目的是安装httpd和fdfs_trackerd/fdfs_storaged服务
WITH_HTTPD=1
WITH_LINUX_SERVICE=1
[root@tracker1]# ./make.sh
[root@tracker1]# ./make.sh install
[root@tracker1]# vi /etc/fdfs/tracker.conf
修改/etc/fdfs/tracker.conf,主要修改以下两处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。
# 配置data和log的存放路径,该路径如果不存在,需要自己创建
base_path=/home/tracker1/fastdfs
# 找到下面这行包含两凳滚肆个"##"号
##include http.conf
# 去掉一个"#"
#include http.conf
[root@tracker1]# mkdir -p /home/tracker1/fastdfs
启动tracker服务
[root@tracker1]# service fdfs_trackerd start
确认8080,22122端口已经监听
[root@tracker1]# netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:80800.0.0.0:* LISTEN
tcp0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:45372 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:22122 0.0.0.0:* LISTEN
tcp0 0 :::111 :::*LISTEN
tcp0 0 :::22 :::*LISTEN
tcp0 0 :::45032:::*LISTEN
4.在storage上的安装配置
下载FastDFS,Nginx和fastdfs-nginx-module
[root@storage1]# wget http://fastdfs.googlecode.com/files/FastDFS_v3.06.tar.gz
[root@storage1]# wget http://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz
[root@storage1]# wget http://nginx.org/download/nginx-1.0.11.tar.gz
安装FastDFS =>安装方法与tracker1上相同。
安装nginx和fastdfs-nginx-module
[root@storage1]# tar xvzf nginx-1.0.11.tar.gz
[root@storage1]# tar xvzf fastdfs-nginx-module_v1.10.tar.gz
[root@storage1]# cd nginx-1.0.11
[root@storage1]# ./configure --prefix=/usr/local/nginx --add-module=/home/fastdfs-nginx-module/src
[root@storage1]# make
[root@storage1]# make install
[root@storage1]# vi /etc/fdfs/storage.conf
修改/etc/fdfs/storage.conf,主要修改以下几处,如有其他调整,可参考文档自行调整,默认的配置也可以工作。
# HTTP settings
# 关闭内置的web server
http.disabled=true
# the port of the web server on this storage server
# web server的端口改成80
http.server_port=80
# the name of the group this storage server belongs to
# 此台storage1所属的服务器组名,同组内storage数据完全相同
group_name=group1
# the base path to store data and log files
# 放置data和log的目录
base_path=/home/storage1/fastdfs
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# 放置文件的目录
store_path0=/home/storage1/fastdfs
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# tracker server的ip和端口,此处可以写多个tracker server,每行一个
tracker_server=192.168.68.113:22122
tracker_server=192.168.68.116:22122
[root@storage1]# cp /home/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
[root@storage1]# vi /etc/fdfs/mod_fastdfs.conf
# the base path to store log files
# 放置log的目录
base_path=/home/storage1/fastdfs
# FastDFS tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# tracker1的ip和端口,此处可以写多个tracker server,每行一个
tracker_server=192.168.68.113:22122
tracker_server=192.168.68.116:22122
# the group name of storage server
# 此台storage server所属的服务器组名
group_name=group1
# if uri including group name
# default value is false
# 在URL中包含group名称
url_have_group_name = true
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# 放置文件的目录
store_path0=/home/storage1/fastdfs
[root@storage1]# mkdir -p /home/storage1/fastdfs
在nginx的server配置段中增加M00的location声明
[root@storage1]# vi /usr/local/nginx/conf/nginx.conf
location /group1/M00 {
root /home/storage1/fastdfs/data
ngx_fastdfs_module
}
创建M00目录的软连接
[root@storage1]# ln -s /home/storage1/fastdfs/data /home/storage1/fastdfs/data/M00
启动storage服务
[root@storage1]# service fdfs_storaged start
启动nginx,启动之前,要确定fdfs_trackerd服务已启动且相关防火墙端口已开放
[root@storage1]# /usr/local/nginx/sbin/nginx
确认80,23000端口已经监听
[root@storage1]# netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:23000 0.0.0.0:* LISTEN
tcp0 0 0.0.0.0:34169 0.0.0.0:* LISTEN
tcp0 0 :::111 :::*LISTEN
tcp0 0 :::22 :::*LISTEN
tcp0 0 :::60001:::*LISTEN
5.在tracker上的 *** 作[作为client测试]
[root@tracker1]# /etc/fdfs/client.conf
# the base path to store log files
base_path=/tmp
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.68.113:22122
tracker_server=192.168.68.116:22122
创建一个用于测试的文件test.txt
[root@tracker1]# vi test.txt
输入内容: hello,this is my first fastdfs test
保存。使用自带的fdfs_test上传文件测试
[root@tracker1]# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload test.txt
This is FastDFS client test program v3.06
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2012-06-13 17:58:25] INFO - base_path=/tmp, connect_timeout=30, network_timeout=60, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key
length=0
tracker_query_storage_store_list_without_group:
server 1. group_name=group1, ip_addr=192.168.68.114, port=23000
group_name=group1, ip_addr=192.168.68.114, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607.txt
source ip address: 192.168.68.114
file timestamp=2012-06-13 17:58:25
file size=37
file crc32=3584975788
file url: http://192.168.68.113:8080/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607.txt
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txt
source ip address: 192.168.68.114
file timestamp=2012-06-13 17:58:25
file size=37
file crc32=3584975788
file url: http://192.168.68.113:8080/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txt
6.使用浏览器打开上传的文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)