分布式文件系统FastDFS 技术整理( 六 )

  • 上面base_path目录要是不存在记得创建

分布式文件系统FastDFS 技术整理

文章插图
 
  • 进入nginx_fdfs的安装目录中,去nginx.conf中配置fastdfs-nginx的扩展模块
# 编辑nginx.conf文件vim /usr/local/nginx_fdfs/conf/nginx.conf # 配置内容location ~ /group[1-9]/M0[0-9] {ngx_fastdfs_module;}# 解读:ngx_fastdfs_module#这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager
分布式文件系统FastDFS 技术整理

文章插图
 
  • 启动nginx
/usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf-t /usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf # 保险起见,查看nginx是否启动成功ps -ef | grep nginx
分布式文件系统FastDFS 技术整理

文章插图
 

分布式文件系统FastDFS 技术整理

文章插图
 
  • 注意:这里很容易出现启动不起来,如果下面这个进程没有启动起来
nobody389538940 15:45 ?00:00:00 nginx: worker process
  • 那么:就去查看日志文件
cd /usr/local/nginx_fdfs/logs# 还有一份日志中也可能出现错误信息cd /opt/fastdfs/nginx_mod
分布式文件系统FastDFS 技术整理

文章插图
 

分布式文件系统FastDFS 技术整理

文章插图
 
 
2.4、Java操作FastDFS2.3.2、扩展模块执行流程
  • 下面这个流程很重要,涉及到另外更深入的知识( 如:集群部署FastDFS,本篇博客没有说明集群部署,哪些就是固定命令和流程,百度复制粘贴修改即可 )

分布式文件系统FastDFS 技术整理

文章插图
 
 
2.4.1、文件上传
  • 在resources目录下创建fastdfs.conf文件,并编写如下内容:
tracker_server=服务器ip:22122
  • 编写文件上传代码
package com.zixieqing; import org.csource.common.MyException;import org.csource.fastdfs.*; import java.io.IOException; /** * @author : ZiXieQing * @version : V1.0.0 * @className : UploadFile * @description : 该类功能 FastDFS文件上传 * @packageName : com.zixieqing */ public class UploadFile {public static void main(String[] args) {TrackerServer trackerServer = null;StorageServer storageServer = null;try {// 1、初始化配置文件ClientGlobal.init("fastdfs.conf");// 2、创建tracker客户端TrackerClient trackerClient = new TrackerClient();// 3、获取trackerServertrackerServer = trackerClient.getConnection();// 4、获取storageServerstorageServer = trackerClient.getStoreStorage(trackerServer);// 5、创建storage客户端 - 这个对象就是用来上传文件、下载文件、删除文件的StorageClient storageClient = new StorageClient(trackerServer, storageServer);// 6、上传文件/*这里有两个API需要了解String[] upload_file(byte[] file_buff, int offset, int length, String file_ext_name, NameValuePair[] meta_list)这个API常用来web中上传文件的参数1 file_buff、文件字节offset、length、从文件的那个位置开始上传,截止位置参数4 file_ext_name、文件后缀参数5 meta_list、文件的属性文件String[] upload_file(String local_filename, String file_ext_name, NameValuePair[] meta_list)这个API是上传本地文件的参数1 local_filename、本地文件的绝对路径参数2 file_ext_name、文件后缀名参数3 meta_list、文件的属性文件,linux1中的哪个meta data,一般都不传上述这两个API,注意返回值,这个String[] 很重要,就是涉及到linux中的那个组名group 和 远程文件名remote_filename,这个group和remote_fileName一般是存在数据库中的*/String[] result = storageClient.upload_file("C:\Users\ZiXieQing\Desktop\图库\19.jpg", "jpg", null);// 7、验证一下for (String data : result) {System.out.println("data = https://www.isolves.com/it/rj/jy/2022-06-06/" + data);}} catch (IOException e) {throw new RuntimeException(e);} catch (MyException e) {throw new RuntimeException(e);} finally {// 8、释放资源if (storageServer != null) {try {storageServer.close();} catch (IOException e) {throw new RuntimeException(e);}}if (trackerServer != null) {try {trackerServer.close();} catch (IOException e) {throw new RuntimeException(e);}}}}}
分布式文件系统FastDFS 技术整理


推荐阅读