当前位置: 代码迷 >> 综合 >> FastDFS--tracker安装—storage配置—整合nginx—测试
  详细解决方案

FastDFS--tracker安装—storage配置—整合nginx—测试

热度:92   发布时间:2023-12-11 23:14:31.0

目录

一、FastDFS--tracker安装

1 FastDFS安装环境

2 libevent

3 安装libfastcommon

(1)解压

(2)进入到解压后的文件夹中

(3)编译

(4)安装

(5)拷贝

4 安装tracker

(1)上传资料FastDFS_v5.05.tar.gz到 /usr/local 目录

(2)解压

(2)编译

(3)安装

(4)拷贝

(5)修改配置文件

(6)创建fastdfs文件夹

5 设置启动项

(1)启动服务

(2)拷贝安装目录下stop.sh 和restart.sh 到/usr/local/fdfs/

(3)修改启动脚本

(4)注册服务

(5)启动服务

二、FastDFS—storage配置

1 修改配置文件

2 创建fdfs_storage文件夹

3 设置服务

4 注册服务

5 启动服务

6 上传图片测试

(1)修改/etc/fdfs/client.conf

(2)测试上传

三、FastDFS整合nginx

1 安装nginx整合插件fastdfs-nginx-module

(1)上传fastdfs-nginx-module_v1.16.tar.gz上传到 /usr/local,并解压

(2)编辑配置文件:修改config文件将/usr/local/路径改为/usr/

(3)将FastDFS-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下

(4)修改mod_fastdfs.conf的内容

(5)将libfdfsclient.so拷贝至/usr/lib下

2 安装nginx

(1)创建nginx/client目录

(2)安装环境

(3)上传nginx

(4)编译

(5)安装

(6)编辑nginx.conf

(7)启动nginx

(8)设置开机启动

(9)需要关闭防火墙

(10)测试

四、fdfs和springboot的整合

1 通过git下载fdfs的客户端

2 将fdfs的客户端打包到本地maven仓库中

3 将fdfs整合到pom中

4、实现图片上传工具类


一、FastDFS--tracker安装

1 FastDFS安装环境

FastDFS是C语言开发,建议在linux上运行,本教程使用Centos7.4作为安装环境。

安装gcc 依赖环境:

yum install gcc-c++ -y

2 libevent

yum -y install libevent

如果没有perl库,需要使用yum install 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

3 安装libfastcommon

上传压缩包文件libfastcommonV1.0.7.tar.gz 到 /usr/local目录下,并解压。

(1)解压

tar -zxvf libfastcommonV1.0.7.tar.gz

(2)进入到解压后的文件夹中

(3)编译

./make.sh

如果出现编译perl 不识别 运行下面这段命令

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

(4)安装

./make.sh install

(5)拷贝

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

cp /usr/lib64/libfastcommon.so  /usr/lib/

4 安装tracker

(1)上传资料FastDFS_v5.05.tar.gz到 /usr/local 目录

(2)解压

tar -zxvf FastDFS_v5.05.tar.gz

(2)编译

cd FastDFS
./make.sh

(3)安装

./make.sh install

(4)拷贝

安装成功之后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

cd conf
cp  *  /etc/fdfs/

(5)修改配置文件

vi /etc/fdfs/tracker.conf

(6)创建fastdfs文件夹

mkdir /opt/fastdfs

5 设置启动项

(1)启动服务

mkdir  /usr/local/fdfs  

(2)拷贝安装目录下stop.sh 和restart.sh 到/usr/local/fdfs/

cp restart.sh  /usr/local/fdfs/cp stop.sh  /usr/local/fdfs/

(3)修改启动脚本

vi /etc/init.d/fdfs_trackerd

把启动脚本中的路径按照上图修改

修改完毕后

(4)注册服务

chkconfig  --add  fdfs_trackerd

(5)启动服务

service fdfs_trackerd start

二、FastDFS—storage配置

1 修改配置文件

vi /etc/fdfs/storage.conf

2 创建fdfs_storage文件夹

mkdir /opt/fastdfs/fdfs_storage

3 设置服务

vi  /etc/init.d/fdfs_storaged

4 注册服务

chkconfig  - -add  fdfs_storaged

5 启动服务

service fdfs_storaged start 

6 上传图片测试

FastDFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作。

(1)修改/etc/fdfs/client.conf

vi /etc/fdfs/client.conf

(2)测试上传

/usr/bin/fdfs_test /etc/fdfs/client.conf upload a.jpg 

对应的上传路径:

/opt/fastdfs/fdfs_storage/data

/00/00/wKhDo1qipbiAJC6iAAB1tayPlqs094_big.jpg

注意:但是此时是访问不到图片的,需要整合nginx

三、FastDFS整合nginx

1 安装nginx整合插件fastdfs-nginx-module

(1)上传fastdfs-nginx-module_v1.16.tar.gz上传到 /usr/local,并解压

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

(2)编辑配置文件:修改config文件将/usr/local/路径改为/usr/

vi fastdfs-nginx-module/src/config

(3)将FastDFS-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下

cp mod_fastdfs.conf /etc/fdfs/

(4)修改mod_fastdfs.conf的内容

vi /etc/fdfs/mod_fastdfs.conf

继续修改 url中包含group名称

继续修改  #指定文件存储路径

(5)将libfdfsclient.so拷贝至/usr/lib下

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

2 安装nginx

(1)创建nginx/client目录

mkdir -p /var/temp/nginx/client

(2)安装环境

安装pcre库

yum -y install pcre-devel

安装zlib库

yum install -y zlib-devel

(3)上传nginx

A上传nginx压缩包到/usr/local目录下,解压

tar -zxvf nginx-1.12.2.tar.gz

B 添加fastdfs-nginx-module模块

cd nginx-1.12.2
./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

配置成功

(4)编译

[root@localhost nginx-1.12.2]# make

(5)安装

[root@localhost nginx-1.12.2]# make install

(6)编辑nginx.conf

vim /usr/local/nginx/conf/nginx.conf

(7)启动nginx

/usr/local/nginx/sbin/nginx

(8)设置开机启动

[root@iZ2zednyjjxxq7k3i2dwsfZ nginx-1.12.2]# vim /etc/rc.d/rc.local

(9)需要关闭防火墙

service iptables stop

永久关闭:

 chkconfig  iptables  off

(10)测试

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/ty.jpg

显示结果:

四、fdfs和springboot的整合

1 通过git下载fdfs的客户端

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

2 将fdfs的客户端打包到本地maven仓库中

导入maven

 

3 将fdfs整合到pom中

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

4、实现图片上传工具类

package com.atguigu.gmall.manage.util;import org.csource.common.MyException;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;public class PmsUploadUtil {public static String uploadImage(MultipartFile multipartFile) {String imgUrl =  "http://192.168.222.20";// 上传图片到服务器// 配置fdfs的全局链接地址String tracker = PmsUploadUtil.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.getConnection();} catch (IOException e) {e.printStackTrace();}// 通过tracker获得一个Storage链接客户端StorageClient storageClient = new StorageClient(trackerServer,null);try {byte[] bytes = multipartFile.getBytes();// 获得上传的二进制对象// 获得文件后缀名String originalFilename = multipartFile.getOriginalFilename();// a.jpgSystem.out.println(originalFilename);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;}
}

tracker.conf