搭建与使用fastdfs分布式文件服务器

Dear 丶 2022-03-06 12:10 382阅读 0赞

一、环境
系统:Centos7.3
fastdfs:到 https://github.com/happyfish100 下载,都下载最新的:
fastdfs-master:下载地址:https://github.com/happyfish100/fastdfs.git
libfastcommon-master:下载地址:https://github.com/happyfish100/libfastcommon.git
fastdfs-nginx-module-master:下载地址:https://github.com/happyfish100/fastdfs-nginx-module.git
避免版本问题
Linux终端工具:xshell、xftp
Linux ip:192.168.1.186 外网IP
二、准备
安装zip、unzip与相关依赖

  1. yum install -y unzip zip

安装perl

  1. yum -y install perl

安装gcc

  1. yum install gcc-c++

三、安装fastdfs
3.1、解压libfastcommon-master.zip

  1. [root@root fastdfs-master]# cd /opt
  2. [root@root opt]# unzip -o libfastcommon-master.zip -d /usr/local

安装libfastcommon

  1. [root@root opt]# cd /usr/local/libfastcommon-master/
  2. [root@root libfastcommon-master]# ./make.sh
  3. [root@root libfastcommon-master]# ./make.sh install

3.2、解压fastdfs-master.zip

  1. [root@root opt]# unzip -o fastdfs-master.zip -d /usr/local

安装fastdfs

  1. [root@root opt]# cd /usr/local/fastdfs-master
  2. [root@root fastdfs-master]# ./make.sh
  3. [root@root fastdfs-master]# ./make.sh install

将fastdfs安装目录下的conf下的文件拷贝到/etc/fdfs/下

  1. [root@root fastdfs-master]# cp -r conf/* /etc/fdfs/

自此fastdfs安装完成了,接下来配置trackerd和storaged,并启动它们。

fastdfs执行命令

  1. [root@root fdfs]# ll /usr/bin/fdfs*

配置并启动trackerd、不改也可以,但是要保证/home/yuqing/fastdfs路径存在

  1. [root@root fdfs]# cd /etc/fdfs/
  2. [root@root fdfs]# vi tracker.conf
  3. base_path=/home/yuqing/fastdfs改成base_path=/data/fastdfs

3.3、创建trackerd数据、日志目录、 启动trackerd

  1. [root@root fdfs]# mkdir -p /data/fastdfs
  2. [root@root fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

其实也可以查看日志:/data/fastdfs/logs/trackerd.log,来判断trackerd是否正常启动起来。
3.4、配置并启动storaged/ 修改storage.conf

  1. [root@root fdfs]# cd /etc/fdfs/
  2. [root@root fdfs]# vi storage.conf
  3. base_path=/home/yuqing/fastdfs改为:base_path=/data/fastdfs
  4. store_path0=/home/yuqing/fastdfs改为:store_path0=/data/fastdfs/storage
  5. tracker_server=192.168.209.121:22122改为 tracker_server=192.168.1.168:22122,这个ip改成自己的

创建storaged数据、日志目录、 启动storaged

  1. [root@root fdfs]# mkdir -p /data/fastdfs/storage
  2. [root@root fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

其实也可以查看日志:/data/fastdfs/logs/storaged.log来判断storaged是否正常启动起来。

四、上传图片测试
从https://github.com/happyfish100/fastdfs-client-java下载源码,我下载的是zip包,解压后目录如下图:
在这里插入图片描述

  1. maven本地安装:mvn clean install
  2. 当然也可以用ant构建:ant clean package

五、项目代码:
在这里插入图片描述
在这里插入图片描述
fdfs_client_mine.conf

  1. connect_timeout =2
  2. network_timeout =30
  3. charset =UTF-8
  4. http.tracker_http_port =8080 #这个是trackerd的http_server_prot=8080端口
  5. http.anti_steal_token =no
  6. http.secret_key =FastDFS1234567890
  7. tracker_server =192.168.1.168:22122

FastdfsClientTest.java

  1. package com.citydo.fastdfs;
  2. import org.csource.common.NameValuePair;
  3. import org.csource.fastdfs.*;
  4. import org.junit.Test;
  5. import org.springframework.cache.annotation.Cacheable;
  6. import java.io.FileNotFoundException;
  7. import java.io.IOException;
  8. import java.util.logging.Logger;
  9. public class FastdfsClientTest {
  10. //客户端配置文件
  11. public String conf_filename = "fdfs_client_mine.conf";
  12. //本地文件,要上传的文件
  13. public String local_filename = "D:\\下载\\JVM.png";
  14. //访问地址:http://192.168.1.168:8888/group1/M00/00/00/wKgBU1yO-gGAVuoFABJ7r6REMUw182.png
  15. //上传文件
  16. @Test
  17. public void testUpload() {
  18. for(int i=0;i<5;i++){
  19. try {
  20. ClientGlobal.init(conf_filename);
  21. TrackerClient tracker = new TrackerClient();
  22. TrackerServer trackerServer = tracker.getConnection();
  23. StorageServer storageServer = null;
  24. StorageClient storageClient = new StorageClient(trackerServer, storageServer);
  25. NameValuePair nvp [] = new NameValuePair[]{
  26. new NameValuePair("item_id", "100010"),
  27. new NameValuePair("width", "80"),
  28. new NameValuePair("height", "90")
  29. };
  30. String fileIds[] = storageClient.upload_file(local_filename, null,
  31. nvp);
  32. System.out.println(fileIds.length);
  33. System.out.println("组名:" + fileIds[0]);
  34. System.out.println("路径: " + fileIds[1]);
  35. } catch (FileNotFoundException e) {
  36. e.printStackTrace();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. }
  44. }

六、FastDFS 和nginx整合
6.1、fastdfs-nginx-module安装

  1. 解压
  2. [root@root 00]# cd /opt
  3. [root@root opt]# unzip -o fastdfs-nginx-module-master.zip -d /usr/local
  4. 拷贝配置文件
  5. [root@root opt]# cd /usr/local/fastdfs-nginx-module-master/src
  6. [root@root src]# cp mod_fastdfs.conf /etc/fdfs/
  7. 编辑配置文件
  8. [root@root src]# cd /etc/fdfs/
  9. [root@root fdfs]# vi mod_fastdfs.conf
  10. base_path=/tmp改成:base_path=/data/fastdfs
  11. tracker_server=tracker:22122改成:tracker_server=192.168.1.168:22122
  12. url_have_group_name = false改成:url_have_group_name = true;#url中包含group名称
  13. store_path0=/home/yuqing/fastdfs改成:store_path0=/data/fastdfs/storage

6.2、nginx安装

  1. nginx依赖包安装
  2. [root@root fdfs]# cd /opt
  3. [root@root opt]# yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
  4. 解压nginx
  5. [root@root opt]# tar -zxvf nginx-1.13.12.tar.gz
  6. 安装nginx并添加fastdfs模块
  7. [root@root opt]# cd nginx-1.13.12
  8. [root@root nginx-1.13.12]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-master/src
  9. [root@root nginx-1.13.12]# make
  10. [root@root nginx-1.13.12]# make install
  11. 检查nginx模块
  12. [root@root nginx-1.13.12]# cd /usr/local/nginx/sbin/
  13. [root@root sbin]# ./nginx -V

已经把fastdfs模块添加进去了。

七、配置nginx、启动nginx

  1. vim /etc/fdfs/mod_fastdfs.conf
  2. #需要修改的内容如下
  3. tracker_server=192.168.1.168:22122 #tracker服务器IP和端口
  4. url_have_group_name=true
  5. store_path0=/home/dfs
  6. #配置nginx.config
  7. vim /usr/local/nginx/conf/nginx.conf
  8. #添加如下配置
  9. server {
  10. listen 8888; ## 该端口为storage.conf中的http.server_port相同
  11. server_name localhost;
  12. location ~/group[0-9]/M00/ {
  13. ngx_fastdfs_module;
  14. }
  15. error_page 500 502 503 504 /50x.html;
  16. location = /50x.html {
  17. root html;
  18. }
  19. }
  20. #测试下载,用外部浏览器访问刚才已传过的nginx安装包,引用返回的ID
  21. http://192.168.1.168:8888/group1/M00/00/00/wKgAQ1pysxmAaqhAAA76tz-dVgg.tar.gz
  22. #弹出下载单机部署全部跑通
  23. [root@root conf]# cd /usr/local/nginx/sbin/
  24. [root@root sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf

八、访问路径
http://192.168.1.168/group1/M00/00/00/wKgBz1salX-ATR4PAABHO7x65CM553.jpg
九、配置详解
tracker配置

  1. #服务器ip为 192.168.1.168
  2. #我建议用ftp下载下来这些文件 本地修改
  3. vim /etc/fdfs/tracker.conf
  4. #需要修改的内容如下
  5. port=22122 # tracker服务器端口(默认22122,一般不修改)
  6. base_path=/home/dfs # 存储日志和数据的根目录

storage配置

  1. vim /etc/fdfs/storage.conf
  2. #需要修改的内容如下
  3. port=23000 # storage服务端口(默认23000,一般不修改)
  4. base_path=/home/dfs # 数据和日志文件存储根目录
  5. store_path0=/home/dfs # 第一个存储目录
  6. tracker_server=192.168.1.168:22122 # tracker服务器IP和端口
  7. http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)

client测试

  1. vim /etc/fdfs/client.conf
  2. #需要修改的内容如下
  3. base_path=/home/dfs
  4. tracker_server=192.168.1.168:22122 #tracker服务器IP和端口
  5. #保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
  6. fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz

如果是阿里云服务器开放23000、22122、8888、8080至少四个端口。
如果是虚拟机一定关闭防火墙。

参考:https://github.com/happyfish100/fastdfs/wiki#tracker
参考:https://www.cnblogs.com/youzhibing/p/9160690.html

发表评论

表情:
评论列表 (有 0 条评论,382人围观)

还没有评论,来说两句吧...

相关阅读