FastDfs文件服务器安装

FastDfs文件服务器安装

官方FasDfs 的SDK地址

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

FastDfs安装环境(CentOs7)
第一步

安装gcc环境

yum  install  gcc-c++  -y

安装libevent

yum -y install libevent

安装perl库

yum install perl*

整体命令

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget

安装libfastcommon依赖地址
https://github.com/happyfish100/libfastcommon
1、上传libfastcommo.tar.gz 到/opt 目录下 并解压

tar -zxvf libfastcommo.tar.gz

2、进入到解压目录进行编译和安装

./make.sh
./make.sh install

3、libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

cp /usr/lib64/libfastcommon.so /usr/lib/
第二步

安装tracker
https://github.com/happyfish100/fastdfs
1、上传 fastdfs.tar.gz 到 /opt目录下
2、解压编译安装

	2.1、tar -zxvf FastDFS_v5.05.tar.gz
	2.2、cd FastDFS
	2.3、./make.sh
	2.4、./make.sh install
	2.5、安装成功之后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下。
	2.6、cd conf
	2.7、cp  *  /etc/fdfs/

3、修改配置文件

3.1 vi /etc/fdfs/tracker.conf

tracker配置文件

3.2、vi /etc/fdfs/storage.conf

storage配置
storage配置
创建fastdfs文件夹

mkdir /opt/fastdfs
mkdir /opt/fastdfs/fdfs_storage

设置启动项

进入/etc/init.d启动脚本目录,默认fastdfs已经生成
启动脚本
修改 fdfs_trackerd 文件

vi fdfs_trackerd

修改fdfs_trackerd
修改 fdfs_storage 文件

vi /etc/init.d/fdfs_storage

在这里插入图片描述
创建fdfs文件夹

mkdir /usr/local/fdfs
cd  /opt/FastDFs
cp restart.sh  /usr/local/fdfs/
cp stop.sh  /usr/local/fdfs/

将启动脚本加入linux服务

cd /etc/init.d
chkconfig --add fdfs_trackerd
chkconfig --add fdfs_storaged 

启动服务

service fdfs_trackerd  start
service fdfs_storaged  start

fastdfs-nginx-module整合nginx插件

https://github.com/happyfish100/fastdfs-nginx-module
上传fastdfs-nginx-module.tar.gz上传到 /opt ,并解压 ,编辑被配置文件修改config文件 将/usr/local路径改成/usr

vi fastdfs-nginx-module/src/config

整合nginx
将fastdfs-nginx-module/src 下的 mod_fastdfs.conf 拷贝至 /etc/fdfs/下

cp mod_fastdfs.conf /etc/fdfs/

修改mod_fastdfs.conf

vi /etc/fdfs/mod_fastdfs.conf

在这里插入图片描述
在这里插入图片描述
将libfdfsclient.so拷贝至/usr/lib下

 cp /usr/lib64/libfdfsclient.so /usr/lib/

安装nginx

http://nginx.org/
创建nginx/client 目录

mkdir -p /var/temp/nginx/client

上传nginx到/opt目录下并解压,进入到文件目录下添加fastdfs-nginx-module模块

./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=/opt/fastdfs-nginx-module/src

配置成功
在这里插入图片描述
编译和安装

	 make
	 make install

编辑nginx.conf

vi /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
启动nginx

/usr/local/nginx/sbin/nginx

上传测试

修改 /etc/fdfs/client.conf

 vi /etc/fdfs/client.conf

测试配置
比如将 /root 下的1.png 上传到FastDFS中 :

/usr/bin/fdfs_test  /etc/fdfs/client.conf  upload  /root/1.png

文件测试
访问路径http://192.168.1.157/group1/M00/00/09/wKgBnV4hObiAHIQZAAAqVjatUNg628.png
访问路径
Spring Boot整合fastdfs
下载fastdfs-client-java 添加到项目module下
在pom文件中添加依赖

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

在启动类的resources目录下创建tracker.conf

#文件服务器地址
tracker_server=192.168.1.157:22122

# 连接超时时间,针对socket套接字函数connect,默认为30秒
connect_timeout=30000

# 网络通讯超时时间,默认是60秒
network_timeout=60000

文件上传和文件删除工具类

/**
 * @author YLY
 * @Date 2019/11/13
 */
public class FileUploadUtil {

    /**
     * 文件上传
     *
     * @param multipartFile
     * @return
     */
    public static String uploadImage(MultipartFile multipartFile) {

        String imgUrl = "http://192.168.1.157";

        // 上传图片到服务器
        // 配置fdfs的全局链接地址
        // 获得配置文件的路径
        String tracker = FileUploadUtil.class.getResource("/tracker.conf").getPath();

        try {
            ClientGlobal.init(tracker);
        } catch (Exception e) {
            e.printStackTrace();
        }

        TrackerClient trackerClient = new TrackerClient();

        // 获得一个trackerServer的实例
        TrackerServer trackerServer = null;
        try {
            trackerServer = trackerClient.getTrackerServer();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 通过tracker获得一个Storage链接客户端
        StorageClient storageClient = new StorageClient(trackerServer, null);

        try {
            // 获得上传的二进制对象
            byte[] bytes = multipartFile.getBytes();

            // 获得文件后缀名
            String originalFilename = multipartFile.getOriginalFilename();
            int i = originalFilename.lastIndexOf(".");
            String extName = originalFilename.substring(i + 1);

            String[] uploadInfos = storageClient.upload_file(bytes, extName, null);
            for (String uploadInfo : uploadInfos) {
                imgUrl += "/" + uploadInfo;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return imgUrl;
    }


    /**
     * 删除文件
     *
     * @param groupName 文件组名 group1
     * @param fileId    文件id group1/M00/00/00/wKgBvV34ZCqAGVe1AACWfTh8WzQ38.docx
     * @return 删除成功返回0,非0则操作失败,返回错误代码
     */
    public static int delete(String groupName, String fileId) {
        TrackerClient trackerClient = new TrackerClient();
        TrackerServer trackerServer = null;
        StorageServer storageServer = null;
        StorageClient1 storageClient1 = null;
        try {
            trackerServer = trackerClient.getTrackerServer();
            if (trackerServer == null) {
            }
            storageServer = trackerClient.getStoreStorage(trackerServer, groupName);
            storageClient1 = new StorageClient1(trackerServer, storageServer);
            return storageClient1.delete_file1(fileId);
        } catch (Exception ex) {
            return 1;
        } 
    }

}

开放端口号22122、23000

- 查看开放的端口号
- [root@localhost sbin]# firewall-cmd --list-all
- 设置开放的端口号
- [root@localhost sbin]# firewall-cmd --add-port=80/tcp --permanent
- 重启防火墙
- [root@localhost sbin]# systemctl reload firewalld.service
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值