fastDFS入门

文章接着上一篇文章:fastDFS介绍(https://www.jianshu.com/p/d7e687967209)

3 fastDFS入门

3.1fastDFS安装与配置
3.1.1使用docker简易搭建FastDFS

启动docker:
systemctl start docker
另两篇文章的安装 https://blog.csdn.net/lizhihaooo/article/details/79261388 普通安装https://my.oschina.net/u/1867229/blog/829572
1、FastDFS镜像:
docker pull morunchang/fastdfs

2、创建tracker:
docker run -d --name tracker -v /home/fastdfs_docker/fdfs/tracker:/data/fast_data --privileged=true --net=host morunchang/fastdfs sh tracker.sh
执行如下命令查看tracker是否运行起来
docker container ls

如果想停止tracker服务,可以执行如下命令
docker container stop tracker

停止后,重新运行tracker,可以执行如下命令
docker container start tracker

3、创建storage:
docker run -d --name storage -v /home/fastdfs_docker/fdfs/storage_data:/data/fast_data --privileged=true --net=host -e TRACKER_IP=172.17.107:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh

4、验证是否安装上了
docker container ls --all

image.png
3.1.2linux小常识

修改.conf文件的时候,突然关闭了

方法1、此时你可以恢复文件:

vim -r nginx.conf

恢复以后把.swap文件删掉,在打开时就不会用提示良,注意.swap文件是个隐藏文件。可用:la查看。以.开头的是隐藏文件。

方法2、ls -a 查询隐藏文件


将后缀名为.swp的文件删除

rm -f .nginx.conf.swp

再次编辑文件不在出现提示警告!
拷贝文件到docker  https://blog.csdn.net/qq_28822933/article/details/83857357

修改文件

修改文件 vim 文件名  
i  是进入修改模式
: 输入命令
wq 保存  q 退出 !q强制退出
3.1.3Tracker配置

fastDFS的配置文件目录 :/etc/fdfs
主要的配置文件:/etc/fdfs/tracker.conf (tracker配置文件 );storage.conf(storage配置文件)

运行命令进入容器
docker exec -it tracker /bin/bash
进入/etc/fdfs

image.png

查看tracker.conf
cat tracker.conf

image.png

tracker.conf配置内容如下:
端口:port=22122
存储策略:store_lookup=
取值范围:0(轮询向storage存储文件)、1(指定具体的group)、2负载均衡,选择空闲的storage存储
指定具体的group:store_group= 如果store_lookup设置为1则这里必须指定一个具体的group。
tracker 基础目录:base_path=/home/fastdfs,tracker在运行时会向此目录存储storage的管理数据。

3.1.4storage配置
image.png

image.png

image.png

storage.conf配置 内容如下:
组名:group_name=
端口:port=
向tracker心跳间隔(秒):heart_beat_interval=30
storage基础目录:base_path=/home/fastdfs
磁盘存储目录,可定义多个store_path:
store_path0=/home/fastdfs/fdfs_storage 此目录下存储上传的文件,在/home/fastdfs/fdfs_storage/data下
store_path1=...

上报tracker的地址:tracker_server=192.168.101.64:22122
如果有多个tracker则配置多个tracker,比如:
tracker_server=192.168.101.64:22122
tracker_server=192.168.101.65:22122
....

3.2 文件上传下载测试

3.2.1搭建环境

这里我们使用javaApi测试文件的上传,java版本的fastdfs-client地址在:
https://github.com/happyfish100/fastdfs-client-java,参考此工程编写测试用例。

1)创建maven工程
pom.xml

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/net.oschina.zcx7878/fastdfs-client-java -->
        <dependency>
            <groupId>net.oschina.zcx7878</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
  1. 配置 文件
    在classpath:config下创建fastdfs-client.properties文件
fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.tracker_servers = 192.168.85.129:22122(配置的地址)
3.2.2 文件上传
@SpringBootTest
@RunWith(SpringRunner.class)
public class TestFastDFS {

    //上传文件
    @Test
    public void testUpload(){

        try {
            //加载fastdfs-client.properties配置文件
            ClientGlobal.initByProperties("config/fastdfs-client.properties");
            //定义TrackerClient,用于请求TrackerServer
            TrackerClient trackerClient = new TrackerClient();
            //连接tracker
            TrackerServer trackerServer = trackerClient.getConnection();
            //获取Stroage
            StorageServer storeStorage = trackerClient.getStoreStorage(trackerServer);
            //创建stroageClient
            StorageClient1 storageClient1 = new StorageClient1(trackerServer,storeStorage);
            //向stroage服务器上传文件
            //本地文件的路径
            String filePath = "F:/壁纸/003.jpg";
            //上传成功后拿到文件Id
            String fileId = storageClient1.upload_file1(filePath, "jpg", null);
            System.out.println(fileId);
            //group1/M00/00/00/wKhVgVw-qbmAXdpRAAp2uCv_JwU096.jpg

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
3.2.3 文件查询
    //查询文件
    @Test
    public void testQueryFile() throws IOException, MyException {
        ClientGlobal.initByProperties("config/fastdfs-client.properties");
        TrackerClient tracker = new TrackerClient();
        TrackerServer trackerServer = tracker.getConnection();
        StorageServer storageServer = null;
        StorageClient storageClient = new StorageClient(trackerServer,storageServer);

        FileInfo fileInfo = storageClient.query_file_info("group1",
                "M00/00/00/wKhVgVw-qbmAXdpRAAp2uCv_JwU096.jpg");
        System.out.println(fileInfo);
    }
3.2.4 文件下载
 //下载文件
    @Test
    public void testDownload(){
        try {
            //加载fastdfs-client.properties配置文件
            ClientGlobal.initByProperties("config/fastdfs-client.properties");
            //定义TrackerClient,用于请求TrackerServer
            TrackerClient trackerClient = new TrackerClient();
            //连接tracker
            TrackerServer trackerServer = trackerClient.getConnection();
            //获取Stroage
            StorageServer storeStorage = trackerClient.getStoreStorage(trackerServer);
            //创建stroageClient
            StorageClient1 storageClient1 = new StorageClient1(trackerServer,storeStorage);
            //下载文件
            //文件id
            String fileId = "group1/M00/00/00/wKhVgVw-qbmAXdpRAAp2uCv_JwU096.jpg";
            byte[] bytes = storageClient1.download_file1(fileId);
            //使用输出流保存文件
            FileOutputStream fileOutputStream = new FileOutputStream(new File("F:/003.jpg"));
            fileOutputStream.write(bytes);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }
    }
3.3.2 配置Nginx图片服务虚拟机主机

图片服务虚拟主机的作用是负载均衡,将图片请求转发到storage server上。
1、通过图片服务虚拟主机请求图片流程图


image.png

3、在nginx图片代理服务上配置图片服务器虚拟主机

#图片服务
        upstream img_server_pool{
        #server 192.168.101.64:80 weight=10;
        server 192.168.0.133:8888 weight=10;
        }
#服务
    server {
        listen 8888;
        server_name img.xuecheng.com;
        #个人中心
        location /group1 {
        proxy_pass http://img_server_pool;
        }
    }
3.3.3 图片服务器

因为要走外网的dns所以要记得设置host让它走本地

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容