Linux部署fastDFS(单机)

安装fastDFS

创建目录
mkdir -p /usr/local/fastdfs
上传需要的压缩包
链接: https://pan.baidu.com/s/1vEbDkDWa0HU926NII-qC1Q?pwd=fast 提取码: fast 

解压
在这里插入图片描述
因为fastDFS是c语言开发的所以需要下载依赖 执行下面的命令

yum -y install cmake make gcc-c++

进入libfastcommon-1.0.43目录 按照顺序执行下面的五个命令

./make.sh
./make.sh install
# 下面三个命令是挂在软连接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

进入/usr/local/fastdfs/fastdfs-6.06目录下编辑make.sh文件,改为/usr/local
在这里插入图片描述

然后执行下面两个命令

./make.sh
./make.sh install

执行完成之后启动脚本会生成在/etc/init.d目录下
在这里插入图片描述
配置文件模版会在/etc/fdfs目录下生成(.conf结尾的是我复制出来的,后续修改这个配置文件就可以)
在这里插入图片描述

配置tracker

进入/etc/fdfs目录vim tracker.conf,进行如下修改,然后别忘记保存之后退出,然后创建这个目录
在这里插入图片描述
进入/etc/init.d目录执行下面的命令启动

./fdfs_trackerd start

ps 查看进程是否正常
在这里插入图片描述

配置storaged

进入/etc/fdfs目录 vim storaged.conf文件进行如下修改,别忘记保存退出,然后创建对应的两个目录,tracker_server 需要一个就可以,注释一个,然后把剩下的ip需要修改成本机ip,linux查看本机ip命令是ifconfig(第二个目录就是上传文件要保存的目录)
在这里插入图片描述
在这里插入图片描述
然后进入/etc/init.d目录执行下面的命令启动storaged

./fdfs_storaged start

ps查看进程是否正常
在这里插入图片描述
然后可以进入到我们创建的目录中查看日志是否正常

配置Client

进入/usr/fdfs目录vim client.conf (别忘记创建目录)
在这里插入图片描述

测试文件上传

进入/usr/local/fastdfs/fastdfs-6.06/client

在这里插入图片描述
有上面这么多脚本这里就不多介绍了,可以自己去查每个具体的用法,测试上传下载是fdfs_upload_file,fdfs_download_file,还有删除fdfs_delete_file

安装Nginx

进入/usr/local/fastdfs/fastdfs-nginx-module-1.22/src目录 vim config

在这里插入图片描述
执行下面的命令安装依赖

yum install -y gcc gcc-c++ make automake autoconf libtool pcre zlib-devel openssl openssl-devel

执行这个命令创建目录mkdir -p /var/temp/nginx
进入/usr/local/fastdfs/nginx-1.21.5目录,直接复制下面的命令,粘贴到命令行中,回车执行

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs/fastdfs-nginx-module-1.22/src

命令执行完成之后然后在按照顺序执行下面两个命令

make
make install

nginx配置

进入/usr/local/fastdfs/fastdfs-nginx-module-1.22/src目录执行下面的命令进行拷贝

cp mod_fastdfs.conf /etc/fdfs

进入/etc/fdfs对这个配置文件进行如下修改
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
修改完成之后保存退出执行下面的两个命令在复制配置文件

cp /usr/local/fastdfs/fastdfs-6.06/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs/fastdfs-6.06/conf/mime.types /etc/fdfs/

执行下面的命令创建nginx启动的软连接

ln -s /usr/local/lib64/libfdfsclient.so /usr/lib64/libfdfsclient.so
ln -s /fastdfs/storage/store/data /fastdfs/storage/store/data/M00

进入/usr/local/nginx/conf目录vim nginx.conf进行如下编辑
在这里插入图片描述
在这里插入图片描述
都修改完成之后需要重启storaged
进入/etc/init.d目录执行下面两个命令

./fdfs_storaged stop
./fdfs_storaged start

进入/usr/local/nginx/sbin目录执行下面命令启动nginx

./nginx

所有服务都已经启动可以上传文件,上传文件命令如下

/usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf 文件名

Java操作fastDFS的demo

创建项目
在这里插入图片描述
在这里插入图片描述
导入maven依赖

    <dependency>
      <groupId>org.csource</groupId>
      <artifactId>fastdfs-client-java</artifactId>
      <version>1.27-SNAPSHOT</version>
    </dependency>

如果报红,下载不下来,就下载下面的压缩包,把jar包放到自己maven的.m2文件夹下

链接: https://pan.baidu.com/s/1G_Ii3v4ykaZ0m8zXbk0bNQ?pwd=fast 提取码: fast 

在这里插入图片描述
添加下面的配置

#连接超时
connect_timeout = 2
#网络超时
network_timeout = 30
#编码格式
charset = UTF-8
#tracker端口
http.tracker_http_port = 8080
#防盗链功能
http.anti_steal_token = no
#密钥
http.secret_key = FastDFS1234567890
#tracker ip/port
tracker_server = 114.55.142.184:22122
#连接池配置
connection_pool.enabled = true
connection_pool.max_count_per_entry = 500
connection_pool.max.idle_time = 3600
connection_pool.max_wait_time_in_ms = 1000

在这里插入图片描述
创建实体类
在这里插入图片描述

创建工具类

package com.bryce.fastdemo.utils;

import com.bryce.fastdemo.pojo.FastDFSFile;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.slf4j.LoggerFactory;

import org.slf4j.Logger;
import org.springframework.core.io.ClassPathResource;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FastDFSClient {

  private static Logger logger = LoggerFactory.getLogger(FastDFSClient.class);

  /**
   * 读取配置文件,并初始化对应的属性
   */
  static {
    try {
      String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();
      ClientGlobal.init(filePath);
    } catch (Exception e) {
      logger.error("FastDfs Client init Fail!",e);
    }
  }

  /**
   * 生成storage客户端
   * @return
   * @throws IOException
   */
  private static StorageClient getStorageClient() throws IOException {
    TrackerServer trackerServer = getTrackerServer();
    StorageClient storageClient = new StorageClient(trackerServer,null);
    return storageClient;
  }

  /**
   * 生成tracker服务器端
   * @return
   */
  private static TrackerServer getTrackerServer() throws IOException {
    TrackerClient trackerClient = new TrackerClient();
    return trackerClient.getConnection();
  }

  /**
   * 文件上传
   * @param file
   * @return
   */
  public static String[] upload(FastDFSFile file){
    logger.info("File Name:"+file.getName());
    NameValuePair[] meta_list = new NameValuePair[1];
    meta_list[0] = new NameValuePair("author",file.getAuthor());
    
    long startTime = System.currentTimeMillis();
    
    String[] uploadResults = null;
    StorageClient storageClient = null;

    try {
      storageClient = getStorageClient();
      uploadResults = storageClient.upload_file(file.getContent(),file.getExt(),meta_list);
    } catch (Exception e) {
      logger.error("上传失败:"+e);
    }
    logger.info("上传时间:"+(System.currentTimeMillis()-startTime)+"ms");
    if (uploadResults==null&&storageClient!=null){
      logger.error("上传失败:"+storageClient.getErrorCode());
    }
    logger.info("上传成功");
    return uploadResults;
  }

  /**
   * 下载文件
   * @param groupName
   * @param remoteFileName
   * @return
   */
  public static InputStream downFile(String groupName,String remoteFileName){
    try {
      StorageClient storageClient = getStorageClient();
      byte[] fileByte = storageClient.download_file(groupName,remoteFileName);
      InputStream ins = new ByteArrayInputStream(fileByte);
      return ins;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }

  /**
   * 删除文件
   * @param groupName
   * @param remoteFileName
   */
  public static void deleteFile(String groupName,String remoteFileName){
    try {
      StorageClient storageClient = getStorageClient();
      int i = storageClient.delete_file(groupName, remoteFileName);
      logger.info("删除成功");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * 查看文件信息
   * @param groupName
   * @param remoteFileName
   * @return
   */
  public static FileInfo getFile(String groupName,String remoteFileName){
    try {
      StorageClient storageClient = getStorageClient();
      FileInfo fileInfo = storageClient.get_file_info(groupName, remoteFileName);
      return fileInfo;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }

  /**
   * 获取文件路径
   * @return
   * @throws IOException
   */
  public static String getTrackerUrl() throws IOException {
    return "http://"+getTrackerServer().getInetSocketAddress().getHostName()+":8888";
  }
  
}


在这里插入图片描述
之后就可以使用这个工具类去使用fastDFS了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding_Bryce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值