nginx集成FastDFS

一、前期准备 
安装nginx和FastDFS,并保证能正常运行。 

下载nginx和FastDFS的集成模块,fsatdfs-nginx-module_v1.16.tar.gz,存放到/usr/local/FastDFS目录下,并执行tar –zxvf  fsatdfs-nginx-module_v1.16.tar.gz解压. 


二、集成 
进入/usr/local/hjlc_file/nginx-1.6.2(这是nginx的源码路径,不是nginx的安装路径),执行configure进行配置,命令如下:

./configure --with-pcre=/usr/local/hjlc_file/pcre-8.38 --with-zlib=/usr/local/hjlc_file/zlib-1.2.7  --with-openssl=/usr/local/hjlc_file/ openssl-1.0.0a  --add-module=/usr/local/FastDFS/fastdfs-nginx-module/src

上述命令成功执行后,再执行make进行编译(注意:这里不需要覆盖安装,不要执行make install),编译过后,将源码目录中objs目录下的nginx复制到nginx安装目录的sbin下即可。 


然后将fastdfs-nginx-module模块的src目录下的mod_fastdfs.conf文件复制到/etc/fdfs/目录下。 

三、配置 
配置mod_fastdfs.conf,修改以下信息: 
#保存日志目录 
base_path=/usr/local/FastDFS/logs 

#tracker服务器的IP地址以及端口号 
tracker_server=172.18.8.35:22122 

#storage服务器的端口号 
storage_server_port=23000 

#文件url中是否有group名 
url_have_group_name= true 

#存储路径个数,需要和store_path个数匹配 
store_path_count=1 

#存储路径,多个路径用1,2,3..来区分如store_path1,store_path2,store_path3 
store_path0=/usr/local/fast_dfs_storage 

配置好后,重启nginx和FastDFS。 

  配置/usr/local/nginx/conf/nginx.conf,通过url,将请求转到FastDFS的存储目录,

server {  
         listen 13110;  
    server_name 127.0.0.1;  
    charset utf-8;  
          location ~.*/M00    {  
          root /usr/local/fast_dfs_storage/data/;  
          ngx_fastdfs_module;  
        }  
     } 

 增加一个server节点,监听13110端口,FastDFS返回url格式为group1/M00/00/00/xxxx,location ~.*/M00就是配置当遇到FastDFS请求时,访问存储目录。 

四、java客户端开发 
下载FastDFS的java客户端jar包fastdfs_client_v1.20.jar。 
在项目中增加fdfs_client.conf配置文件,内容如下: 
connect_timeout = 2 
network_timeout = 30 
charset = UTF-8 
http.tracker_http_port = 80 
http.anti_steal_token = no 
tracker_server = 172.18.8.35:22122 

   Java代码: 

//初始化(通过文件),忽略异常处理  
  String url = getClass().getResource("/fdfs_client.conf").getFile();  
url = java.net.URLDecoder.decode(url,"utf-8");  
ClientGlobal.init(url);  
  
也可以通过自己设置参数来初始化,代码如下:  
//初始化(手动初始化参数)  
ClientGlobal.setG_connect_timeout(3000);  
ClientGlobal.setG_charset(“UTF-8”);  
ClientGlobal.setG_network_timeout(30000);  
ClientGlobal.setG_tracker_http_port(80);  
ClientGlobal.setG_anti_steal_token(false);  
InetSocketAddress[] group = new InetSocketAddress[1];  
group[i] = new InetSocketAddress(“172.18.8.35”,22122);  
ClientGlobal.setG_tracker_group(new TrackerGroup(group));  
  
  
  //上传,忽略异常处理  
  String url = "";  
  TrackerClient trackerClient = new TrackerClient();   
  TrackerServer trackerServer = null;  
  FileInputStream fis = null;  
trackerServer = trackerClient.getConnection();  
StorageServer storageServer = null;  
StorageClient client = new StorageClient(trackerServer, storageServer);  
fis = new FileInputStream(file);  
byte[] file_buff = null;  
if(fis != null){  
int len;  
    len = fis.available();  
    file_buff = new byte[len];  
    fis.read(file_buff);  
}  
String[] result = null;  
result = client.upload_file(file_buff, FilenameUtils.getExtension(file.getName()), null);  
  result为返回的参数result[0]为分组名,如group1,result[1]为目录地址:如/M00/00/00/XXXX  
   
  //删除,忽略异常处理  
TrackerClient trackerClient = new TrackerClient();   
  TrackerServer trackerServer = null;  
trackerServer = trackerClient.getConnection();  
StorageServer storageServer = null;    
  StorageClient1 client = new StorageClient1(trackerServer, storageServer);  
if(url.indexOf("/") == 0)  
  {  
      url = url.substring(1);  
  }  
  client.delete_file1(url);  

 

转载于:https://my.oschina.net/aidelingyu/blog/808169

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值