目录
一、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