您现在的位置是:主页 > news > 上海虹口网站制作/太原seo顾问

上海虹口网站制作/太原seo顾问

admin2025/6/8 5:33:11news

简介上海虹口网站制作,太原seo顾问,记事本怎样做网站,建设机械官方网站文章目录6.FastDFS安装和使用6.1 安装总体介绍6.2 安装libfastcommon (安装方式二选一)6.3 安装fastdfs (安装方式二选一)6.4 安装fastdfs-nginx-module (安装方式二选一)6.5 安装nginx (安装方式二选一)7.单机部署fastdfs8.集群部署fastdfs9.java整合fastDFSfastdfs-client-ja…

上海虹口网站制作,太原seo顾问,记事本怎样做网站,建设机械官方网站文章目录6.FastDFS安装和使用6.1 安装总体介绍6.2 安装libfastcommon (安装方式二选一)6.3 安装fastdfs (安装方式二选一)6.4 安装fastdfs-nginx-module (安装方式二选一)6.5 安装nginx (安装方式二选一)7.单机部署fastdfs8.集群部署fastdfs9.java整合fastDFSfastdfs-client-ja…

文章目录

    • 6.FastDFS安装和使用
      • 6.1 安装总体介绍
      • 6.2 安装libfastcommon (安装方式二选一)
      • 6.3 安装fastdfs (安装方式二选一)
      • 6.4 安装fastdfs-nginx-module (安装方式二选一)
      • 6.5 安装nginx (安装方式二选一)
    • 7.单机部署fastdfs
    • 8.集群部署fastdfs
    • 9.java整合fastDFS
        • fastdfs-client-java使用

6.FastDFS安装和使用

6.1 安装总体介绍

    1. 首先安装libfastcommon (fastdfs依赖的函数库)
    1. 接着安装fastdfs(其实就是把client , tracker ,storage安装完成了)
    1. 接下来安装fastdfs-nginx-module (fastdfs提供对nginx的依赖模块)
    1. 最后安装nginx(如果此前安装好了,可以不用重新安装)

    注意: 安装分为在线安装(要求提供良好的网络)或者离线安装(将相关的软件包下载下来后离线安装,安装资料在资料\fastdfs\安装包)

    1. 安装之前,创建两个目录

      /usr/local/soft: 安装包所在的目录,执行命令: mkdir -p /usr/local/soft

      /data/fastdfs: 数据所在的目录(fastdfs上传文件和日志所在的目录) 执行命令: mkdir -p /data/fastdfs

6.2 安装libfastcommon (安装方式二选一)

  • 在线安装

    步骤一:   git clone https://github.com/happyfish100/libfastcommon.git --depth 1
    步骤二:   cd libfastcommon/
    步骤三:#编译安装
    ./make.sh && ./make.sh install
    
  • 离线安装

    步骤一:   unzip libfastcommon-master.zip
    步骤二:   cd libfastcommon-master
    步骤三:   ./make.sh && ./make.sh install
    

6.3 安装fastdfs (安装方式二选一)

  • 在线安装

    cd ../ 															#返回上一级目录 ,回到soft所在的目录
    git clone https://github.com/happyfish100/fastdfs.git --depth 1 #下载fastdfs.git
    cd fastdfs/ 													#进入fastdfs
    ./make.sh && ./make.sh install 									#编译安装
    #供nginx访问使用
    cp /usr/local/soft/fastdfs/conf/http.conf /etc/fdfs/			
    cp /usr/local/soft/fastdfs/conf/mime.types /etc/fdfs/
    
  • 离线安装

    步骤一:  unzip fastdfs-master.zip  #首先切换到soft目录
    步骤二:  cd fastdfs-master
    步骤三:  ./make.sh && ./make.sh install#供nginx访问使用
    cp /usr/local/soft/fastdfs-master/conf/http.conf /etc/fdfs/			
    cp /usr/local/soft/fastdfs-master/conf/mime.types /etc/fdfs/
    

6.4 安装fastdfs-nginx-module (安装方式二选一)

  • 在线安装

    cd ../ #返回上一级目录
    git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
    cp /usr/local/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
    
  • 离线安装

    步骤一:   unzip fastdfs-nginx-module-master.zip 
    步骤二:   cp /usr/local/soft/fastdfs-nginx-module-master/src/mod_fastdfs.conf  /etc/fdfs
    

6.5 安装nginx (安装方式二选一)

  • 在线安装

    wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包
    tar -zxvf nginx-1.15.4.tar.gz #解压
    cd nginx-1.15.4/
    #添加fastdfs-nginx-module模块
    ./configure --add-module=/usr/local/soft/fastdfs-nginx-module/src/
    make && make install #编译安装
    
  • 离线安装

    步骤一: tar -zxvf nginx-1.8.1.tar.gz   #切换到/usr/local/soft目录下面
    步骤二: 安装nginx依赖sudo apt-get install openssl libssl-devsudo apt-get install libpcre3 libpcre3-devsudo apt-get install zlib1g-dev
    步骤三: 切换进入nginx目录cd /usr/local/soft/nginx-1.8.1
    步骤四: 将fastdfs提供的nginx依赖配置到nginx里面sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master/src(对应的绝对路径)
    步骤五:  make &&make install如果执行步骤五错,那么首先删除nginx-1.8.1/objs/Makefile这个文件,
    命令为: rm -rf /usr/local/soft/nginx-1.8.1/objs/Makefile
    然后再次执行步骤五

7.单机部署fastdfs

  • 注意注意!!!

    由于离线安装和在线安装,生成的配置文件名称不一致,

    如果是离线安装,那么需要修改配置文件名称

    #执行如下命令
    cd /etc/fdfs
    mv  tracker.conf.sample  tracker.conf
    mv  storage.conf.sample  storage.conf
    mv  client.conf.sample  client.conf
  • 步骤一: 配置虚拟主机

    比如:
    编辑虚拟机的host文件:  vim  /etc/hosts
    添加这段内容:  192.168.200.13 fastdfs.com
    注意: ip写自己主机的ip, fastdfs.com域名 可以随意起.如果通过windows浏览器访问虚拟机的fastdfs,同时需要配置C:\Windows\System32\drivers\etc\hosts文件
    添加这段内容:  192.168.200.131 www.fastdfs.com
  • 步骤二: 配置tracker

    vim /etc/fdfs/tracker.conf
    #需要修改的内容如下
    port=22122 # tracker服务器端口(默认22122,一般不修改)
    base_path=/data/fastdfs # 存储日志和数据的根目录
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ACym2O3p-1644893557649)(images/image-20210813114423920-1634240524033.png)]

  • 步骤三: 配置storage

    vim /etc/fdfs/storage.conf
    #需要修改的内容如下
    port=23000 # storage服务端口(默认23000,一般不修改)
    base_path=/data/fastdfs # 数据和日志文件存储根目录
    store_path0=/data/fastdfs # 第一个存储目录
    tracker_server=fastdfs.com:22122 # tracker服务器IP和端口
    http.server_port=80 # http访问文件的端口(默认8888,看情况修改,和nginx的端口中保持一致)
    
  • 步骤四: 启动服务测试

    1. 先启动服务
    # 永久关闭防火墙
    systemctl disable firewalld.service
    #启动tracker
    /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
    #启动storage
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
    # 重启storage
    /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
    
    1. client测试

      vim /etc/fdfs/client.conf
      #需要修改的内容如下
      base_path=/data/fastdfs
      tracker_server=fastdfs.com:22122 #tracker服务器IP和端口
      #保存后测试,返回ID表示成功 如:group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg
      # 上传文件
      fdfs_upload_file /etc/fdfs/client.conf /usr/local/soft/fox.jpg
      # 删除文件
      fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgDCmD1LHaADXrMAAW3EDO1WQ106.jpg

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1U64B95N-1644893557650)(images/image-20210813115618007-1634240524033.png)]:上传成功!

  • 步骤五: 配置nginx访问(client)

    vim /etc/fdfs/mod_fastdfs.conf#需要修改的内容如下tracker_server=fastdfs.com:22122 #tracker服务器IP和端口url_have_group_name=truestore_path0=/data/fastdfs
    #配置nginx.configvim /usr/local/nginx/conf/nginx.conf
    #添加如下配置
    server {listen 80; ## 该端口为storage.conf中的http.server_port相同server_name localhost;location ~/group[0-9]/ {ngx_fastdfs_module;} error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
    }
    

    Nginx测试:

    1.启动服务

    /usr/local/nginx/sbin/nginx #启动nginx
    /usr/local/nginx/sbin/nginx -s reload #重启nginx
    /usr/local/nginx/sbin/nginx -s stop #停止nginx
    

    2.测试,如果能看到图片表示成功**(后面的图片是自己的图片名称)**

    http://fastdfs.com:8888/group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg

8.集群部署fastdfs

  • 声明: 集群部署fastdfs时,

    服务器规划:

    ​ 跟踪服务器1【主机】(Tracker Server):192.168.200.131

    ​ 跟踪服务器2【备机】(Tracker Server):192.100.200.132

    ​ 存储服务器1(Storage Server):192.168.200.x1

​ 存储服务器2(Storage Server):192.168.200.x2

​ 存储服务器3(Storage Server):192.168.200.x3

​ 存储服务器4(Storage Server):192.168.200.x4

最好: 保证 tracker 和 storage安装在不同ip的主机上, 避免报错.

​ 具体流程如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kIkPzhLT-1644893557651)(images/image-20210813133125040-1634240524033.png)]

  • 步骤一: 准备3台服务器(至少2台)

    * 存储服务器:192.168.200.131(同时也是调度器)​ 存储服务器:192.168.200.132​ 存储服务器:192.168.200.133                    
    

    同时配置虚拟主机:

    比如:
    编辑虚拟机的host文件:  vim  /etc/hosts
    添加这段内容:  192.168.200.131 fastdfs.com192.168.200.132 fastdfs2.com192.168.200.133 fastdfs3.com
    注意: ip写自己主机的ip, fastdfs.com域名 可以随意起.如果通过windows浏览器访问虚拟机的fastdfs,同时需要配置C:\Windows\System32\drivers\etc\hosts文件
    添加这段内容:  192.168.200.131 www.fastdfs.com192.168.200.132 www.fastdfs2.com192.168.200.133 www.fastdfs3.com
    
  • 步骤二: tracker配置

    如果配置3台主机上,那么就是配置了3台tracker

    vim /etc/fdfs/tracker.conf
    #需要修改的内容如下
    port=22122 # tracker服务器端口(默认22122,一般不修改)
    base_path=/data/fastdfs # 存储日志和数据的根目录
    
  • 步骤三: storage配置

    如果配置3台主机上,那么就是配置了3台storage

    vim /etc/fdfs/storage.conf
    #需要修改的内容如下
    port=23000 # storage服务端口(默认23000,一般不修改)
    base_path=/data/fastdfs # 数据和日志文件存储根目录
    store_path0=/data/fastdfs # 第一个存储目录
    tracker_server=fastdfs.com:22122 # 服务器1
    tracker_server=fastdfs2.com:22122 # 服务器2
    tracker_server=fastdfs3.com:22122 # 服务器3
    http.server_port=80 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
    
  • 步骤四: client测试

    • 1.先启动服务

      # 永久关闭防火墙
      systemctl disable firewalld.service
      #启动tracker
      /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
      #启动storage
      /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
      # 重启storage
      /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
      
    • 查询启动是否成功

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0XxpoBDw-1644893557651)(images/image-20210813153317072-1634240524033.png)]

    • 2.配置客户端测试:

      * 配置client.conf
      vim /etc/fdfs/client.conf
      #需要修改的内容如下
      base_path=/data/fastdfs
      tracker_server=fastdfs.com:22122 # 服务器1
      tracker_server=fastdfs2.com:22122 # 服务器2
      tracker_server=fastdfs3.com:22122 # 服务器3#保存后测试,返回ID表示成功 如:group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg
      fdfs_upload_file /etc/fdfs/client.conf  /usr/a.jpg   (文件所在目录)
      
  • 步骤五: 配置nginx

    vim /etc/fdfs/mod_fastdfs.conf
    #需要修改的内容如下
    tracker_server=fastdfs.com:22122 # 服务器1
    tracker_server=fastdfs2.com:22122 # 服务器2
    tracker_server=fastdfs3.com:22122 # 服务器3
    url_have_group_name=true
    store_path0=/data/fastdfs
    #配置nginx.config
    vim /usr/local/nginx/conf/nginx.conf
    #添加如下配置
    server {listen 80; ## 该端口为storage.conf中的http.server_port相同检测集群server_name localhost;location ~/group[0-9]/ {ngx_fastdfs_module;} error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
    }

    检测集群 :

    /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
    # 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息
    
  • 操作相关命令

    启动和关闭tracker和storage

    sudo service fdfs_trackerd start		[stop]
    sudo service fdfs_storaged start		[stop]
    

    启动和关闭nginx

     cd  /usr/local/nginx/sbin/ 文件夹sudo ./nginx  #启动sudo ./nginx -s stop #关闭sudo ./nginx -s reload #重新加载
    
  • 查询服务是否启动

    ps -ef | grep tracker
    ps -ef | grep storage
    ps -ef | grep nginx
    
  • 检测集群

    /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
    # 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息
    

9.java整合fastDFS

  • fastDFS配置文件

    fdfs_client.conf

    connect_timeout = 60  #连接超时
    network_timeout = 60  #网络超时
    charset = UTF-8
    http.tracker_http_port = 8080  #tracker 访问端口
    tracker_server = 192.168.200.128:22122 #traker storage 安装所在主机ip
    
  • fastdfs-client-java使用

    fastdfs-client-java使用
    https://github.com/happyfish100/fastdfs-client-java

    步骤一:引入依赖

    <dependency>
    <groupId>com.taoyuanx</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.29-SNAPSHOT</version>
    </dependency

    步骤二: java代码

    //长传文件
    public class UploadDemo {public static void main(String[] args) throws IOException, MyException {//1、加载配置文件ClientGlobal.init("fdfs_client.conf");//2、创建一个TrackerClient对象。TrackerClient trackerClient = new TrackerClient();//3、使用TrackerClient对象获得trackerserver对象。TrackerServer trackerServer = trackerClient.getTrackerServer();//4、创建一个StorageClient对象。trackerserver、StorageServer两个参数。StorageClient storageClient = new StorageClient(trackerServer, null);String path = System.getProperty("user.dir")+ File.separator+"1.jpg";//5、使用StorageClient对象上传文件。String[] strings = storageClient.upload_file(path, "jpg", null);//返回的数组包含两个元素分别类似于://group1//M00/00/00/wKgDCmDtis2AAsj9AAW3ED-O1WQ151.jpgfor (String string : strings) {System.out.println(string);}}
    }//下载文件
    public class DownloadDemo {public static void main(String[] args) {try {//1、加载配置文件ClientGlobal.init("fdfs_client.conf");//2、创建一个TrackerClient对象。TrackerClient trackerClient = new TrackerClient();//3、使用TrackerClient对象获得trackerserver对象。TrackerServer trackerServer = trackerClient.getTrackerServer();//4、创建一个StorageClient对象。trackerserver、StorageServer两个参数。StorageClient storageClient = new StorageClient(trackerServer,null);String path = System.getProperty("user.dir")+File.separator+"fox.jpg";//5、使用StorageClient对象下载文件。storageClient.download_file("group1","M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg",path);} catch (IOException e) {e.printStackTrace();} catch (MyException e) {e.printStackTrace();}}
    }
    
  • fastDFS_Client使用
    在原作者YuQing与yuqih发布的java客户端基础上进行了大量重构工作,便于Java工作者学习与阅读。
    主要特性
    \1. 对关键部分代码加入了单元测试,便于理解与服务端的接口交易,提高接口质量
    \2. 将以前对byte硬解析风格重构为使用 对象+注解 的形式,尽量增强了代码的可读性
    \3. 支持对服务端的连接池管理(commons-pool2)
    \4. 支持上传图片时候检查图片格式,并且自动生成缩略图
    \5. 在SpringBoot当中自动导入依赖

    https://github.com/tobato/FastDFS_Client

  • 上传图片和下载图片

    • 步骤一:引入依赖

      <
      dependency>
      <groupId>com.github.tobato</groupId>
      <artifactId>fastdfs-client</artifactId>
      <version>1.27.2</version>
      </dependency>
      
    • 步骤二: 在yml配置

      # 分布式文件系统FDFS配置
      fdfs:
      so-timeout: 1500 # 读取时间
      connect-timeout: 600 # 连接超时时间
      thumb-image: #缩略图生成参数
      width: 150
      height: 150
      tracker-list: #Tracker服务配置地址列表
      - 192.168.3.10:22122
      - 192.168.3.12:22122
      - 192.168.3.13:22122
      pool:
      #从池中借出的对象的最大数目(配置为-1表示不限制)
      max-total: -1
      #获取连接时的最大等待毫秒数(默认配置为5秒)
      max-wait-millis: 5000
      #每个key最大连接数
      max-total-per-key: 50
      #每个key对应的连接池最大空闲连接数
      max-idle-per-key: 10
      #每个key对应的连接池最小空闲连接数
      min-idle-per-key: 5
      upload:
      base-url: http://fastdfs.com:8888/
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0nltMpuu-1644893557652)(images/image-20210819114333103-1634240524033.png)]

      解决方案:添加config配置

      @Configuration
      public class FileConfig {
      /**
      * 解决上传文件过大导致异常的问题。
      * the request was rejected because its size (170982031) exceeds the
      configured
      * @return
      */
      @Bean
      public MultipartConfigElement multipartConfigElement() {MultipartConfigFactory factory = new MultipartConfigFactory();factory.setMaxRequestSize(DataSize.ofBytes(200*1048576L));factory.setMaxFileSize(DataSize.ofBytes(200*1048576L));return factory.createMultipartConfig();
      }
      
    • 步骤三: web层-service层代码

      @RestController
      public class UploadController {@Autowiredprivate UploadService uploadService;@RequestMapping("/upload")@ResponseBodypublic Map<String,Object> upload(MultipartFile file){Map<String, Object> map =new HashMap<>();String path = this.uploadService.uploadImage(file);map.put("path",path);return map;}
      }@Service
      @Slf4j
      public class UploadService {@Autowiredprivate FastFileStorageClient fastFileStorageClient;@Value("${upload.base-url}")private String baseUrl;/*** 上传图片* @param file* @return*/public String uploadImage(MultipartFile file) {try {//校验文件BufferedImage image = ImageIO.read(file.getInputStream());if (image == null || image.getWidth() == 0 || image.getHeight() ==0) {throw new RuntimeException("上传文件不是图片");}} catch (IOException e) {log.error("校验文件内容失败....{}", e);throw new RuntimeException("校验文件内容失败" + e.getMessage());} try {// 获取扩展名String extension =StringUtils.substringAfterLast(file.getOriginalFilename(), ".");StorePath storePath =fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(),extension, null);// 返回路径return baseUrl+storePath.getFullPath();} catch (IOException e) {log.error("【文件上传】上传文件失败!....{}", e);throw new RuntimeException("【文件上传】上传文件失败!" + e.getMessage());}}
      }
      
    • 上传缩率图

      //上传略缩图
      StorePath storePath =
      fastFileStorageClient.uploadImageAndCrtThumbImage(file.getInputStream(),
      file.getSize(), extension, null)
      

      缩略图为上传文件名+缩略图后缀(默认_150x150)
      如:源图上传后路径为 xxx.jpg,缩略图为 xxx_150x150.jpg

    • 测试

      • 测试页面 index.html ,代码如下:

        <form  action="/upload"  enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" value="上传图片">
        </form>