1 安装目的
为了商城可以动态的上传图片,目的是为了解决高并发,不用集群tomcat,造成混乱,用一个分布式文件系统即可FastDFS。
2 下载地址
tracker和storage使用相同的安装包,下载地址:http://sourceforge.net/projects/FastDFS/ 或https://github.com/happyfish100/FastDFS(推荐)
本文章下载:FastDFS_v5.05.tar.gz
3 FastDFS安装环境
FastDFS是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
3.1 安装libevent
FastDFS依赖libevent库,需要安装:
yum -y install libevent
3.2 安装libfastcommon
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。
将libfastcommonV1.0.7.tar.gz拷贝至/usr/local/下
cd /usr/local
tar -zxvf libfastcommonV1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install
注意:libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
要拷贝的文件如下:
3.3 tracker编译安装
将FastDFS_v5.05.tar.gz拷贝至/usr/local/下
tar -zxvf FastDFS_v5.05.tar.gz
cd FastDFS
./make.sh
./make.sh install
安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下。
4 配置
安装成功后进入/etc/fdfs目录:
拷贝一份新的tracker配置文件:
cp tracker.conf.sample tracker.conf
修改tracker.conf
vi tracker.conf
base_path=/home/yuqing/FastDFS
改为:
base_path=/home/FastDFS
5 启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
启动的日志显示先停止5619进程(实际环境不是5619)再启动,如下图:
注意:如果没有显示上图要注意是否正常停止原有进程。
5.1 设置开机自动启动。
[root@tracker FastDFS]# vim /etc/rc.d/rc.local
将运行命令行添加进文件:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
5.2 FastDFS--storage安装
在192.168.101.3上安装storage。
5.3 安装libevent
同tracker安装
5.4 安装libfastcommon
同tracker安装。
5.5 storage编译安装
同tracker编译安装。
5.6 配置
安装成功后进入/etc/fdfs目录:
拷贝一份新的storage配置文件:
cp storage.conf.sample storage.conf
修改storage.conf
vi storage.conf
group_name=group1
base_path=/home/yuqing/FastDFS改为:base_path=/home/FastDFS
store_path0=/home/yuqing/FastDFS改为:store_path0=/home/FastDFS/fdfs_storage
#如果有多个挂载磁盘则定义多个store_path,如下
#store_path1=.....
#store_path2=......
tracker_server=192.168.101.3:22122 #配置tracker服务器:IP
#如果有多个则配置多个tracker
tracker_server=192.168.101.4:22122
5.7 启动
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
启动的日志显示先停止8931进程(实际环境不是8931)再启动,如下图:
注意:如果没有显示上图要注意是否正常停止原有进程。
5.8 设置开机自动启动。
[root@storage1 FastDFS]# vim /etc/rc.d/rc.local
将运行命令行添加进文件:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
6 上传图片测试
6.1 通过fdfs_test程序
FastDFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作。
修改/etc/fdfs/client.conf
base_path=/home/fastdfs
tracker_server=192.168.101.3:22122
使用格式:
/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件
比如将/home下的图片上传到FastDFS中:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.png
http://192.168.101.3/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png就是文件的下载路径。
对应storage服务器上的
/home/fastdfs/fdfs_storage/data/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png文件。
由于现在还没有和nginx整合无法使用http下载。
6.2 通过java Client API
完整的测试方法参考测试源代码。
public class FastdfsClientTest { //客户端配置文件 public String conf_filename = "F:\\workspace_indigo\\fastdfsClient\\src\\cn\\itcast\\fastdfs\\cliennt\\fdfs_client.conf"; //本地文件,要上传的文件 public String local_filename = "F:\\develop\\upload\\linshiyaopinxinxi_20140423193847.xlsx"; //上传文件 @Test public void testUpload() { for(int i=0;i<100;i++){ try { ClientGlobal.init(conf_filename); TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); NameValuePair nvp [] = new NameValuePair[]{ new NameValuePair("item_id", "100010"), new NameValuePair("width", "80"), new NameValuePair("height", "90") }; String fileIds[] = storageClient.upload_file(local_filename, null, nvp); System.out.println(fileIds.length); System.out.println("组名:" + fileIds[0]); System.out.println("路径: " + fileIds[1]); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } }
7 运行效果
详见:nginx的安装及使用
之后后面补上连接即可