提示:如果在这里还没有安装Fastdfs的话可以参考:censtos下安装FastDFS
一、FastDFS的Nginx模块
资料: /s/14YQCvuMIRMj_JuSyJyfezg提取码:jg46
解压:
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
配置config文件:
# 进入配置目录cd /home/upload/fdfs/fastdfs-nginx-module/src/# 修改配置vim config# 执行下面命令(将配置中的/usr/local改为/usr)::%s+/usr/local/+/usr/+g
配置mod_fastdfs.conf
# 将src目录下的mod_fastdfs.conf复制到 /etc/fdfs目录:cp mod_fastdfs.conf /etc/fdfs/# 编辑该文件vim /etc/fdfs/mod_fastdfs.conf
修改配置:
connect_timeout=5 # 客户端访问文件连接超时时长(单位:秒)tracker_server=192.168.161.146:22122 # tracker服务IP和端口url_have_group_name=true # 访问链接前缀加上组名store_path0=/upload/fdfs/storage # 文件存储路径
复制 FastDFS的部分配置文件到/etc/fdfs目录
cd /home/upload/fdfs/FastDFS/conf/cp http.conf mime.types /etc/fdfs/
二、安装Nginx
解压
tar -zxvf nginx-1.14.2.tar.gz#然后cd nginx-1.14.2
配置
sudo ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/home/upload/fdfs/fastdfs-nginx-module/src
然后编译安装
make && make install
配置nginx整合fastdfs-module模块
我们需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中:
vim /opt/nginx/conf/nginx.conf
将文件中,原来的server 80{ ...}
部分代码替换为如下代码:
server {listen 80;#这个可以去c盘 \Windows\System32\drivers\etc 下的hosts进行配置 server_name ; # 监听域名中带有group的,交给FastDFS模块处理location ~/group([0-9])/ {ngx_fastdfs_module;}location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
然后启动nginx:
nginx # 启动nginx -s stop # 停止nginx -s reload # 重新加载配置
如果出现如图所示:说明配置成功:
3、创建项目实现图片上传、
3.1:引入对应依赖:这里使用一个开源的FastDFS客户端
地址:/tobato/FastDFS_Client
maven配置:
<!--SpringBoot依赖--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version><relativePath /><!--fastdfs-client依赖--><dependency><groupId>com.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>1.26.5</version></dependency><!--测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.0.0.RELEASE</version></dependency>
3.2、将FastDFS-Client客户端引入本地化项目的方式非常简单,在SpringBoot项目/src/[com.xxx.主目录]/conf
当引入配置类 如下:
@Configuration@Import(FdfsClientConfig.class)// 解决jmx重复注册bean的问题@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)public class FastClientImporter {}
3.3 在resoures 下的application.yml 编写FastDfs属性:
fdfs:so-timeout: 1501 #请求超时时间connect-timeout: 601 #连接超时时间thumb-image: # 缩略图 大小设置width: 80height: 80tracker-list: # tracker地址- 192.168.161.147:22122
3.4、编写测试类
/**** @author acer* @create /1/15* @since 1.0.0*/@RunWith(SpringRunner.class)@SpringBootTestpublic class FdfsTest {@Autowiredprivate FastFileStorageClient storageClient;@Autowiredprivate ThumbImageConfig thumbImageConfig;@Testpublic void testUploadAndCreateThumb() throws FileNotFoundException {File file = new File("E:\\mm.png");// 上传并且生成缩略图StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(new FileInputStream(file), file.length(), "png", null);// 带分组的路径System.out.println(storePath.getFullPath());// 不带分组的路径System.out.println(storePath.getPath());// 获取缩略图路径String path = thumbImageConfig.getThumbImagePath(storePath.getPath());System.out.println(path);}}
3.5、测试结果 如图:
3.6、启动nginx 进行访问地址 :/group1/M00/00/00/wKihk1w9646AKaNVABF8ik-Os-M715.png
测试缩略图:访问/group1/M00/00/00/wKihk1w9646AKaNVABF8ik-Os-M715_80x80.png