FastDFS使用

Categories:

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。


原理

images

images

下载

官方网站:https://github.com/happyfish100/

准备

需要使用的安装包
images下载链接:

fastdfs-master.zip

fastdfs-nginx-module-master.zip

libfastcommon-master.zip

nginx-1.10.0.tar.gz

安装

安装依赖

yum install make cmake gcc gcc-c++

libfastcommon

解压libfastcommon-master.zip

unzip libfastcommon-master.zip

进入解压后的路径,执行

./make.sh

完成后执行

./make.sh install

FastDFS

解压fastdfs-master.zip

unzip fastdfs-master.zip

进入解压后的路径,执行

./make.sh

完成后执行

./make.sh install

配置Tracker

在/usr/local/software下创建fastdfs目录

mkdir -p fastdfs/tracker

复制tracker的配置文件

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

修改tracker.conf

images
开放22122端口

启动Tracker

/etc/init.d/fdfs_trackerd start

查看运行状态

ps ef|grep fdfs_trackerd

配置Storage

注:tracker和storage应在不同的服务器,即在两台服务器上都安装 LIBFASTCOMMON 和 FASTDFS ,其中一台配置tracker,另一台配置storage

在/usr/local/software下创建storage目录

mkdir -p fastdfs/storage

复制storage的配置文件

cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

修改storage.conf

images

images
images开放23000端口

启动Storage

/etc/init.d/fdfs_storaged start

查看运行状态

ps -ef|grep fdfs_storaged

测试

复制客户端配置文件

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

修改client.conf

images创建文件

vim /usr/123.txt

执行

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/123.txt

返回结果

imagesimages整合nginx

 

配置fastdfs

解压fastdfs-nginx-module-master.zip

unzip fastdfs-nginx-module-master.zip

进入解压后的src路径

复制配置文件

cp mod_fastdfs.conf /etc/fdfs/

修改/etc/fdfs/mod_fastdfs.conf

images

images

images

images
复制配置文件

cp /usr/lib64/libfdfsclient.so /usr/lib/

cp /usr/local/software/fasrdfs-master/conf/http.conf /etc/fdfs/

cp /usr/local/software/fasrdfs-master/conf/mime.types /etc/fdfs/

创建nginx/client目录

mkdir -p /var/temp/nginx/client

配置nginx

解压

tar -zxvf nginx-1.10.0.tag.gz

进入解压后的目录,安装依赖

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

完成后执行

./configure --prefix=/usr/local/software/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/software/fastdfs-nginx-module-master/src

完成后执行

make

完成后执行

make install

修改/usr/local/software/nginx/conf/nginx.conf配置文件

添加server

server {
    listen 8888;
    server_name  localhost;
    location /group1/M00/{
        ngx_fastdfs_module;
    }
}

启动ngnix

ngnix

停止ngnix

ngnix -s stop

重启ngnix

ngnix -s reload

开放8888端口

java使用FastDFS

pom.xml

<!-- fastdfs -->
<dependency>
    <groupId>fastdfs_client</groupId>
    <artifactId>fastdfs_client</artifactId>
    <version>1.25</version>
</dependency>

resources下client.conf

tracker_server=服务器的ip或域名:22122

测试代码

public class FastDFSTest {
    public static void main(String[] args) throws Exception {
        // 1、向工程中添加jar包
        // 2、创建一个配置文件。配置tracker服务器地址
        // 3、加载配置文件(绝对路径,工程目录不要有中文)
        ClientGlobal.init(FastDFSTest.class.getResource("/").getPath() + "client.conf");
        // 4、创建一个TrackerClient对象。
        TrackerClient trackerClient = new TrackerClient();
        // 5、使用TrackerClient对象获得trackerserver对象。
        TrackerServer trackerServer = trackerClient.getConnection();
        // 6、创建一个StorageServer的引用null就可以。
        StorageServer storageServer = null;
        // 7、创建一个StorageClient对象。trackerserver、StorageServer两个参数。
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        // 8、使用StorageClient对象上传文件。
        String[] strings = storageClient.upload_file("f:/abc.jpg", "jpg", null);
        for (String string : strings) {
            System.out.println(string);
        }
    }
}