• linux下纯手动安装fastDFS/nginx,基于springboot实现fastDFS文件上传下载


    第一部分linux下实现安装fastDFS以及nginx

    安装所需的环境:

    yum install perl pcre pcre-devel zlib zlib-devel openssl openssl-devel 

    1.需要四个安装包:

    fastdfs-5.11.tar.gz

    nginx-1.15.2.tar.gz

    fastdfs-nginx-module_v1.16.tar.gz

    libfastcommon-1.0.35

    2.安装创建目录上传所有安装包

    mkdir -p /fileservice/fast

    3.开始逐个安装配置

      3.1. libfastcommon-1.0.35的安装配置

        3.1.1 解压  tar zxvf  libfastcommon-1.0.35

        3.1.2 进入解压好的目录  cd  libfastcommon-1.0.35

        3.1.3 执行编译安装  ./make.sh   &&  ./make.sh install  

      3.2. fastdfs-5.11的安装配置

        3.2.1 解压  tar zxvf fastdfs-5.11.tar.gz

        3.2.2 进入解压好的目录  cd  fastdfs-5.11

        3.2.3 执行编译安装  ./make.sh   &&  ./make.sh install

        3.2.4 进入   cd /etc/fdfs/  复制配置 如下:      

            cp client.conf.sample    client.conf
           cp storage.conf.sample    storage.conf
           cp storage_ids.conf.sample    storage_ids.conf
           cp tracker.conf.sample    tracker.conf

        3.2.5 修改tracker的存放数据和日志的目录
           mkdir -p  /home/fastdfs/tracker

        3.2.6 配置和启动tracker 
           cd /etc/fdfs/

        3.2.7 .修改文件

          vim tracker.conf

           修改 base_path=/home/fastdfs/tracker 存放数据和日志的目录


        3.2.8 配置storage 

           切换目录到  cd /etc/fdfs/

           修改文件 vim storage.conf     

           修改路径 base_path=/home/fastdfs/storage

           store存放文件的位置 store_path0=/home/fastdfs/storage

        3.2.9 创建文件 mkdir -p /home/fastdfs/storage

        3.2.10 运行storaged  service fdfs_storaged  start

        3.2.11 修改client.conf   vim client.conf     

            base_path=/home/fastdfs/storage
           tracker_server=192.168.43.209:22122

        3.2.12 模拟上传: /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /home/333.jpg  成功即ok

      3.3   fastdfs-nginx-module_v1.16的安装配置

        3.3.1 路径 cd /fileservice/fast

        3.3.2解压 tar zxvf fastdfs-nginx-module_v1.16.tar.gz

        3.3.3 切换目录  cd fastdfs-nginx-module/src

        3.3.4 修改 vim config   替换掉所有local:   %s/local///g

        3.3.5 拷贝文件  cp mod_fastdfs.conf  /etc/fdfs/

        3.3.6编辑拷贝的配置文件  vim /etc/fdfs/mod_fastdfs.conf

        3.3.7修改如下:

          store_path0=/home/fastdfs/storage

          tracker_server=192.168.43.209:22122

          url_have_group_name = trues

        3.3.8 进入 cd /fileservice/fast/fastdfs-5.11/conf  将俩个文件移入/etc/fdfs/目录:    cp http.conf mime.types /etc/fdfs/

      3.4  nginx的安装配置

        3.4.1 进入压缩包路径 cd /fileservice/fast

        3.4.2 解压   tar zxvf  nginx-1.15.2.tar.gz

        3.4.3 进入解压包:cd nginx-1.15.2

        3.4.4 加入模块命令配置: 

          ./configure --prefix=/opt/ngnix --sbin-path=/usr/bin/nginx --add-module=/fileservice/fast/fastdfs-nginx-module/src

        3.4.5 执行编译安装:make && make install

        3.4.6 修改nginx配置: cd /opt/ngnix/conf      vim nginx.conf

           配置如下:

            location ~/group([0-9]){
            # root html;
            #index index.html index.htm;
            ngx_fastdfs_module;}

        3.4.7 进入下列目录:cd /usr/bin  启动ngnix : ./nginx

    至此linux下完美安装好了fastDFS以及nginx!!

    第二部分 springboot下实现fastDFS文件上传下载

      1.1 pom

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- taobao fastdfs依赖 -->
            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>1.26.5</version>
            </dependency>
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
    </dependency>

      1.2 yml配置

    server:
      port: 8080
    fdfs:
      connect-timeout: 600
      so-timeout: 1500
      pool:
        jmx-enabled: false
      thumb-image:
         100
        height: 50
        #跟踪器地址TrackerList参数,支持多个,我这里只有一个,如果有多个在下方加- x.x.x.x:port
      trackerList: 192.xxx.xx.xxx:22122  #你linux下的地址
    spring:
      thymeleaf:
        prefix: classpath:/templates/
        suffix: .html

      1.3 工具类实现文件上传,下载,删除

    @Component
    public class FastDFSClientUtil {
        private static final Logger LOGGER = LoggerFactory.getLogger(FastDFSClientUtil.class);
        @Resource
        private FastFileStorageClient storageClient;
    
        /**
         * 上传文件
         *
         * @param multipartFile
         * @return
         */
        public String upload(MultipartFile multipartFile) throws IOException {
            String originalFilename = multipartFile.getOriginalFilename().substring(
                    multipartFile.getOriginalFilename().lastIndexOf(".") + 1
            );
            StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(
                    multipartFile.getInputStream(),
                    multipartFile.getSize(),
                    originalFilename,
                    null
            );
            return storePath.getFullPath();
    
        }
        /**
         * 删除文件
         */
        public void deleteFile(String fileUrl) {
            if (StringUtils.isEmpty(fileUrl)) {
                LOGGER.info("fileUrl == >>文件路径为空...");
                return;
            }
            try {
                StorePath storePath = StorePath.parseFromUrl(fileUrl);
                storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
            } catch (Exception e) {
                LOGGER.info(e.getMessage());
            }
        }
    
        /**
         * 下载文件
         */
        public byte[] downloadFile(String fileUrl){
            String group = fileUrl.substring(0, fileUrl.indexOf("/"));
            String path = fileUrl.substring(fileUrl.indexOf("/") + 1);
            DownloadByteArray downloadByteArray = new DownloadByteArray();
            byte[] bytes = this.storageClient.downloadFile(group, path, downloadByteArray);
            try {
                
                FileOutputStream fileOutputStream = new FileOutputStream("f:\111.jpg");
                fileOutputStream.write(bytes);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bytes;
        }
    
    }

    1.4 controller层

    @Controller
    public class FsatFDSController {
        @Autowired
        private FastDFSClientUtil clientUtil;
    
        /**
         * 文件下载
         * @param fileUrl
         * @return
         */
        @RequestMapping("/download")
        @ResponseBody
        public byte[] downloadFile(String fileUrl){
            return clientUtil.downloadFile("group1/M00/00/00/wKgr0V9ZkH6AIq_JAAAg2jn0LiI783.jpg");
        }
    
    
        /**
         * 文件上传
         * @param mf
         * @return
         */
        @RequestMapping("/upload")
        @ResponseBody
        public String upload(MultipartFile mf){
            try {
                String upload = clientUtil.upload(mf);
                return upload;
            } catch (IOException e) {
                e.printStackTrace();
                return "上传失败";
            }
        }
        @RequestMapping("/page")
        public String page(){
            return "index";
        }
    
    }

    1.5 lindex页面:只有上传功能

    <!DOCTYPE html>
    <html lang="en"  xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="mf">
        <input type="submit" value="上传">
    </form>
    </body>
    </html>
  • 相关阅读:
    ViScript 1.0 Released
    How to: 修改程序的拖拽行为
    API Hooking 的原理
    小T历险记
    我的酒窝.NET
    MSN Space
    Naive Container 发布1.0版本
    EFT acceptance and functional testing tool for Windows application
    [译]JavaScript:如何判断值的类型
    [译]JavaScript:多行字符串
  • 原文地址:https://www.cnblogs.com/hyy9527/p/13644772.html
Copyright © 2020-2023  润新知