fastdfs执行流程(fastDFS详细安装步骤分享给小主们)

第一步:安装依赖包和开发工具

yum install vim vim-enhanced wget zip unzip telnet ntsysv compat* apr* pcre* pcre-* nasm* gcc gcc* gcc-c ntp make imake cmake automake autoconf zlib zlib-devel glibc glibc-devel glib2 libxml glib2-devel libxml2 libxml2-devel bzip2 bzip2-devel libXpm libXpm-devel libidn libidn-devel libtool libtool-ltdl-devel* libmcrypt libmcrypt-devel libevent-devel libmcrypt* curl curl-devel perl perl-Net-SSLeay pcre pcre-devel ncurses ncurses-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers krb5 krb5-devel e2fsprogs e2fsprogs-devel libjpeg libpng libjpeg-devel libjpeg-6b libjpeg-devel-6b libpng-devel libtiff-devel freetype freetype-devel fontconfig-devel gd gd-devel kernel screen sysstat flex bison nss_ldap pam-devel compat-libstdc -33 gettext-devel libXft-devel libXtst-devel

注意:第一步的时候,已经把需要的所有程序都安装了,其他的安装yum都无需再安装

第二步:

tracker 192.168.235.131:22122 CentOS

Group1-Storage11 192.168.235.133:23000 CentOS

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(1)

第三步:文件初始化:

按照我们第一步确认的目标,我们可以现在自由选择一个路径,创建一些文件夹目录,这些目录后边会在配置tracker和storage的过程中被用到。我在用虚拟机创建的时候,是在/opt这个目录下面创建相关的文件夹,详细如下,仅供参考:

1. 配置tracker所需的base_path: /opt/FastDFS_tracker。只需要mkdir fastdfs_tracker,这样既可

2. 配置storage所需的日志目录: /opt/fastdfs_storage_info。 备注: 这个目录是用来存储storage之间同步文件等日志的

3. 配置storage所需的存储文件目录: /opt/fastdfs_storage_data。备注: 这个目录是用来存储文件的

其实,我们在使用过程中并不是每个物理机上都会同时部署tracker和storage,那么根据自己的实际情况,如果只部署storage,则就创建storage的那两个文件夹;反之则只创建tracker的那个文件夹。后边在解释配置文件如何配置的过程中我将会按照上边的目录路径做配置,大家可以比对着看每个路径对应哪个配置。

第四步:安装libfastcommon-1.0.7.zip:

  1. 先进入到安装目录下; cd /usr/local/src

2、unzip libfastcommon-1.0.7.zip

3、然后进入 解压后的包libfastcommon

解压完成后,进入文件夹,会看到make.sh文件,执行./make.sh命令,可能会报没有安装gcc和perl的错误,截图如下:

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(2)

4、 为了解决2中的问题,安装gcc和perl:

a. 执行 yum -y install gcc 和 yum -y install gcc-c 这了两个命令安装

b. 安装perl时,我们可以直接用wget命令安装,我这里安装的版本是perl-5.20.2。

可以参考这篇文章安装perl http://blog.sina.com.cn/s/blog_68158ebf0100ndes.html 

wget http://www.cpan.org/src/5.0/perl-5.20.2.tar.gz

tar zxvf perl-5.20.2.tar.gz

mkdir /usr/local/perl

./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly

make

make install

perl -version

5、 安装完perl后,重新依次执行 ./make.sh 和 ./make.sh install 这两个命令,完成libfastcommon的安装。

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(3)

5. 注意,上述安装的路径在/usr/lib64/,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软连接如下:

sudo ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so sudo ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so sudo ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so sudo ln -s /usr/lib64/libfdfsClient.so /usr/lib/libfdfsclient.so

  1. 安装fastdfs;解压缩后cd到目录文件后 ./make.sh 会报错

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(4)

这是因为没有正确的安装libfastcomm,需要重新安装, 用zip压缩版的 ,不要用tar.gz 用tar.gz出这样的错误。

重新解压然后安装后 进行fastDFS的安装

前 边几步如果安装的都正确的话,这一步就比较简单了,解压缩fastdfs-5.05.tar.gz,然后依次执行 ./make.sh 和 ./make.sh install 这两个命令,过程中没有报错,并且打开 /etc/fdfs 这个目录发现有配置文件存在,就说明安装成功了。

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(5)

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(6)

有这三个文件表名创建成功

第七步,配置tracker:

前 边的这六步无论是配置tracker还是配置storage都是必须的,而tracker和storage的区别主要是在安装完fastdfs之后的配置 过程中。我们在第一步确认目标时,计划在192.168.224.20这台虚拟机上配置tracker,所以我们就在这台机器上演示。

1. 进入/etc/fdfs文件夹,执行命令:

cp tracker.conf.sample tracker.comnf

2. 编辑tracker.conf,执行命令: vi tracker.conf ,将以下几个选项进行编辑:

a. disabled=false #启用配置文件

b. port=22122 #设置tracker的端口号,一般采用22122这个默认端口

c. base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录(预先创建)

d. http.server_port=8080 #设置http端口号 注意,这个配置在fastdfs5.05这个版本中已经不用配置,不用管这个!

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(7)

3. 启动tracker,执行如下命令: /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

注意,一般fdfs_trackerd等命令在/usr/local/bin中没有,而是在/usr/bin路径下,所以命令修改如下:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

4. 启动完毕后,可以通过以下两个方法查看tracker是否启动成功:

a. netstat -unltp|grep fdfs,查看22122端口监听情况

b. 通过以下命令查看tracker的启动日志,看是否有错误: tail -100f /opt/fastdfs_tracker/logs/trackerd.log

5. 如果启动没有问题,可以通过以下步骤,将tracker的启动添加到服务器的开机启动中:

a. 打开文件 vi /etc/rc.d/rc.local

b. 将如下命令添加到该文件中 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

第八步,配置storage:

其实配置storage和配置tracker类似,只不过配置文件和配置内容不一样。我们以配置192.168.224.29配置storage为例。

1. 进入/etc/fdfs文件夹,执行命令:

cp storage.conf.sample storage.conf

2. 编辑storage.conf,执行命令: vi storage.conf ,将以下几个选项进行编辑:

a. disabled=false #启用配置文件

b. group_name=group2 #组名,根据实际情况修改

c. port=23001 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致

d. base_path=/opt/fastdfs_storage_info #设置storage的日志目录(需预先创建)

e. store_path_count=1 #存储路径个数,需要和store_path个数匹配

f. store_path0=/opt/fastdfs_storage_data #存储路径

g. tracker_server=192.168.224.20:22122 #tracker服务器的IP地址和端口号(注意的是这个和虚拟机的IP地址一样

h. http.server_port=8080 #设置http端口号 注意,这个配置在fastdfs5.05这个版本中已经不用配置,不用管这个!

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(8)

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(9)

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(10)

3. 启动storage,执行如下命令: /usr/local/bin/fdfs_storage /etc/fdfs/storage.conf restart

注意,一般fdfs_storage等命令在/usr/local/bin中没有,而是在/usr/bin路径下,所以命令修改如下:

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

4. 启动完毕后,如果第一次启动不成功,先把防火墙关了,再重新把命令粘贴启动下:

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

可以通过以下两个方法查看storage是否启动成功:

a. netstat -unltp|grep fdfs,查看23001端口监听情况

b. 通过以下命令查看storage的启动日志,看是否有错误: tail -100f /opt/fastdfs_storage_info/logs/storage.log

5. 启动成功后,可以通过fdfs_monitor查看集群的情况,即storage是否已经注册到tracker服务器中

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

查看192.168.224.29:23001 是ACTIVE状态即可

6. 如果启动没有问题,可以通过以下步骤,将storage的启动添加到服务器的开机启动中:

a. 打开文件 vi /etc/rc.d/rc.local

b. 将如下命令添加到该文件中

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

=============================================================== 长长的分割 线=================================================================

下面可以进行上传文件的测试了:

首先第一步:先把防火墙关闭,不然会连不上

关闭虚拟机防火墙:

关闭命令: service iptables stop

永久关闭防火墙:chkconfig iptables off

两个命令同时运行,运行完成后查看防火墙关闭状态service iptables status

1 关闭防火墙-----service iptables stop 2 启动防火墙-----service iptables start 3 重启防火墙-----service iptables restart 4 查看防火墙状态--service iptables status 5 永久关闭防火墙--chkconfig iptables off 6 永久关闭后启用--chkconfig iptables on

这是如何对待防火墙的指令。

这些做完后,就可以用Java做客户端进行文件上传了

使用方法:

1、把FastDFS提供的jar包添加到工程中

2、初始化全局配置。加载一个配置文件。

3、创建一个TrackerClient对象。

4、创建一个TrackerServer对象。

5、声明一个StorageServer对象,null。

6、获得StorageClient对象。

7、直接调用StorageClient对象方法上传文件即可。

Java里的代码如下

Client.conf 中的配置

storage server port = 23001

storage HTTP port = 8888

#链接tracker的url

tracker_server = 192.168.235.132:22122

#tracker_server = 192.168.0.119:22122

测试 代码

public class TestFastDFS {

@Test

public void testFastDfsClient() throws Exception {

// 1、把FastDFS提供的jar包添加到工程中

// 2、初始化全局配置。加载一个配置文件。

ClientGlobal.init("D:\\MyEclipseWorkSpace\\fastDfsDemo\\src\\main\\resources\\fdfs_client.conf");

// 3、创建一个TrackerClient对象。

TrackerClient trackerClient = new TrackerClient();

// 4、创建一个TrackerServer对象。

TrackerServer trackerServer = trackerClient.getConnection();

// 5、声明一个StorageServer对象,null。

StorageServer storageServer = null;

// 6、获得StorageClient对象。

StorageClient storageClient = new StorageClient(trackerServer, storageServer);

// 7、直接调用StorageClient对象方法上传文件即可。

String[] strings = storageClient.upload_File("C:\\Users\\T430\\Desktop\\1.png", "png", null);

/* for (String string : strings) {

System.out.println(string);

}*/

}

// FastDFSClient client = new FastDFSClient("D:\\MyEclipseWorkSpace\\fastDfsDemo\\src\\main\\resources\\fdfs_client.conf");

// String uploadFile = client.uploadFile("C:\\Users\\T430\\Desktop", "png", null);

// System.out.println(uploadFile);

}

===============================================================================分割线===================================================

以上八步其实已经完成了fastdfs的配置,如果此时你用java等api编辑客户端,实际上就可以完成文件的上传、同步和下载。但是为什么网上还会有 很多人说需要nginx呢???其实主要原因时因为,我们可以通过配置nginx为下载提供基于http协议的下载等功能。

其实,storage中安装nginx,主要是为了为提供http的访问服务,同时解决group中storage服务器的同步延迟问题。而tracker中安装nginx,主要是为了提供http访问的反向代理、负载均衡以及缓存服务

第九步,安装nginx的准备:

不管是在tracker中还是storage中安装nginx,前提都需要安装一些基础软件。一些大公司的服务器默认都会初始化这些软件,但是你在配置的时候可能还是最好自己利用命令确认一下。

1. yum install -y gcc 这个前边在安装libfastcommon之前已经安装了

2. yum install -y gcc-c 这个前边在安装libfastcommon之前已经安装了

3. yum install -y pcre pcre-devel

4. yum install -y zlib zlib-devel

5. yum install -y openssl openssl-devel

第十步,在storage中安装nginx:

1. 创建nginx默认的安装文件夹: mkdir /usr/local/nginx

2. 提前将 nginx1.7.8.tar.gz 和 fastdfs-nginx-module_v1.16.tar.gz 解压缩,然后进入nginx1.7.8的文件夹目录,执行如下命令:

./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src

3. 执行完上述命令,如果没有报错的话,我们继续执行 make 命令,此时编译有可能会报错,那是因为我们忘了做一项重要的工作,我们可以参考下面这篇文章http://bbs.chinaunix.net/thread-4163021-1-1.html中的解答,其实汇总就是下面两个意思:

a. 我们在解压缩fastdfs-nginx-module_v1.16.tar.gz之后,需要进入fastdfs-nginx-module/src目 录,编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

b. 建立软连接,这个软连接我们在第五步安装libfastcommon时的最后一个操作就已经建立了,所以此处不用再建立了。

4. 执行完3个步骤后,我们在重复执行2中的命令,

不报错以后,再输入 ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src 然后回车进行执行,成功后再依次执行 make 和 make install 这两个命令,没有报错误就是安装成功了。

5. 执行命令 cd /usr/local/nginx/conf,编辑 nginx.conf 这个文件,编辑如下:

listen 8080;

在server段中添加:

location ~/group[1-3]/M00{

root /opt/fastdfs_storage_data/data;

ngx_fastdfs_module;

}

具体看下面的示例配置:

注意,如果配置的storage是在group2组,则下面的location应该是 ~/group2/M00

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(11)

6. 执行命令 cd /usr/local/src/fastdfs-5.05/conf,即进入fastdfs5.0.5的安装文件夹的conf目录下,将目录下面的http.conf和mime.types拷贝到/etc/fdfs/下,如果不执行这一步,后边在启动nginx时会报错。

7. 执行命令 cd /usr/local/src/fastdfs-nginx-module/src,即进入 fastdfs-nginx-module_v1.16的安装文件夹的src目录下,将目录下面的mod_fastdfs.conf这个文件拷贝到 /etc/fdfs 目录下。

8. 打开 /etc/fdfs 这个目录,编辑 mod_fastdfs.conf 这个文件,如下:

注意以下配置是group2的第二个storage 192.168.224.29的配置,按照第一步确定的集群目标来配置的,供大家参考。

a. base_path=/opt/fastdfs_storage_info #保存日志目录

b. tracker_server=192.168.224.20:22122 #tracker服务器的IP地址以及端口号

c. storage_server_port=23001 #storage服务器的端口号

d. group_name=group2 #当前服务器的group名

c. url_have_group_name= true #文件url中是否有group名

d. store_path_count=1 #存储路径个数,需要和store_path个数匹配

e. store_path0=/opt/fastdfs_storage_data #存储路径

f. http.need_find_content_type=true #从文件扩展名查找文件类型(nginx时为true) 注意:这个配置网上一般都会列出,但是在fastdfs5.05的版本中是没有的

h. group_count= 2 #设置组的个数

i. 在文件的末尾,按照第一步确定的集群目标,追加如下图的配置:

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(12)

9. 建立建立 M00 至存储目录的符号连接:

ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/00

(此处如果出错的话,试着 sudo ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/00 )

10. 执行命令启动nginx:

/usr/local/nginx/sbin/nginx ,如果/usr/local/nginx/logs/error.log中没有报错,同时访问192.168.224.29:8080这个url能看到 nginx的欢迎页面。

测试

cp /ust/local/FastDFS/client.conf.sample /etc/fdfs/client.conf (复制前面的地址不是一直不变的,根据自己安装后的具体路径,也有可能就在etc/fdfs这个目录里)

vi /etc/fdfs/client.cof.sample

base_path=/opt/fastdfs_storage_data/data

tracker_server=192.168.235.132:22122

创建测试文件

vi test.txt

输入内容: hello,this is my first fastdfs test 运行

/usr/bin/fdfs_test /etc/fdfs/client.conf.sample 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.0.62, port=23000

storage_upload_by_filename

group_name=group1, remote_filename=M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607.txtsource ip address: 192.168.0.62file timestamp=2012-06-13 17:58:25file size=37file crc32=3584975788file url: http://192.168.0.62/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607.txt

storage_upload_slave_by_filename

group_name=group1, remote_filename=M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txtsource ip address: 192.168.68.114file timestamp=2012-06-13 17:58:25file size=37file crc32=3584975788file url: http://192.168.0.62/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txt

使用浏览器打开上传的文件

http://192.168.235.132:8080/group1/M00/00/00/wKhEck_YZEHqsZRSAAAAJdWuY6w607_big.txt

如果看到文件内容,说明配置成功!

fastdfs执行流程(fastDFS详细安装步骤分享给小主们)(13)

上传文件成功后,结果显示的不是我们上传的图片名,那么我们如何获取该图片呢?

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页