热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

FastDFS和Nginx的优化过程

生产环境结果应该如下:本文tracker、storage都在一台机器上!本机既是tracker,又是storage,仅用于测试!一、需要下载的fastdfs-nginx-module_v1.15.tar.gznginx-1.4.1.tar.gzlibevent-2.0.21-stable.tar.gzFastDFS_v

 生产环境结果应该如下:

本文tracker、storage都在一台机器上!本机既是tracker,又是storage,仅用于测试!

 

一、需要下载的

fastdfs-nginx-module_v1.15.tar.gz

nginx-1.4.1.tar.gz

libevent-2.0.21-stable.tar.gz

FastDFS_v4.06.tar.gz

二、安装

1、安装libevent,nginx都是一个套路

tar ?xvf xxxxxx.tar.gz

./configure --prefix=xxxxxxx

make && make install

不多说。

2、安装FastDFS

指定下刚才安装的libevent的path

/make.sh C_INCLUDE_PATH=/usr/local/libevent/include LIBRARY_PATH=/usr/local/libevent/lib
/make.shinstall

3、配置FastDFS

PS,FastDFS分为三个Server

Tracker:接受请求,调度请求,路由请求

Storage:文件存放的地方

Client:客户端,发起请求

默认配置文件在/etc/fdfs/,有需要可以修改。

配置项都有注释,仅列一下我修改了的


base_path=/fdfs


# base_path 附目录说明:


tracker server目录及文件结构:

${base_path}

|__data

|     |__storage_groups.dat:存储分组信息

|     |__storage_servers.dat:存储服务器列表

|__logs

|__trackerd.log:tracker server日志文件





base_path=/fdfs


store_path0=/fdfs


tracker_server=192.168.20.160:22122





base_path=/fdfs


tracker_server=192.168.20.160:22122


http.tracker_server_port=8888(改成nginx的端口)



改完上面的配置文件,已经基本OK了

启动tracker

fdfs_trackerd /etc/fdfs/tracker.conf

启动storage

fdfs_storaged /etc/fdfs/storage.conf

上传文件

fdfs_upload_file /etc/fdfs/http.conf /tmp/f.png

--返回group1/M00/00/00/wKgUoFGwT1WAFqIfAAA-xlb-210799.png

 

下面配置下nginx,让你上传文件可以通过url访问到


1.修改nginx配置文件




location /M00 {

           
root /fdfs/data;

           
ngx_fastdfs_module;

}





2.fastdfs的nginx的module中的mod_fastdfs.conf,copy到/etc/fdfs下,修改配置




base_path=/tmp


tracker_server=192.168.20.160:22122




store_path0=/fdfs


3.启动nginx,


http://192.168.20.160:8888/M00/00/00/wKgUoFGwT1WAFqIfAAA-xlb-210799.png


可以访问到刚才上传的图片!


这里不需要/group1,如果想在url中加入group1,需要修改fdfs的配置文件和nginx的配置文件!



三、Java client

 


    public String conf_filename =
"F:\\workspace\\fastdfs\\src\\fdfs_client.conf";

    public String local_filename =
"F:\\workspace\\fastdfs\\src\\fdfs_client.conf";


    @org.junit.Test

    public void testUpload() {


        try {

           
ClientGlobal.init(conf_filename);



           
TrackerClient tracker = new TrackerClient();

           
TrackerServer trackerServer = tracker.getConnection();

           
StorageServer storageServer = null;



           
StorageClient storageClient = new StorageClient(trackerServer,

                   
storageServer);

//           
NameValuePair nvp = new NameValuePair("age", "18");

           
NameValuePair nvp [] = new NameValuePair[]{

                   
new NameValuePair("age", "18"),

                   
new NameValuePair("sex", "male")

           
};

           
String fileIds[] = storageClient.upload_file(local_filename,
null,

                   
nvp);



           
System.out.println(fileIds.length);

           
System.out.println("组名:" + fileIds[0]);

           
System.out.println("路径: " + fileIds[1]);


        } catch
(FileNotFoundException e) {

           
e.printStackTrace();

        } catch (IOException e)
{

           
e.printStackTrace();

        } catch (MyException e)
{

           
e.printStackTrace();

        }

    }


    @org.junit.Test

    public void testDownload() {


        try {



           
ClientGlobal.init(conf_filename);



           
TrackerClient tracker = new TrackerClient();

           
TrackerServer trackerServer = tracker.getConnection();

           
StorageServer storageServer = null;



           
StorageClient storageClient = new StorageClient(trackerServer,

                   
storageServer);

           
byte[] b = storageClient.download_file("group1",

                   
"M00/00/00/wKgUoFGwPuSAS-QZAAAA4y5hK3c33.conf");

           
System.out.println(b);

           
getFile(b, "d:\\", UUID.randomUUID().toString()+".conf");

        } catch (Exception e)
{

           
e.printStackTrace();

        }

    }

    @org.junit.Test

    public void testGetFileInfo(){

        try {

           
ClientGlobal.init(conf_filename);



           
TrackerClient tracker = new TrackerClient();

           
TrackerServer trackerServer = tracker.getConnection();

           
StorageServer storageServer = null;



           
StorageClient storageClient = new StorageClient(trackerServer,

                   
storageServer);

           
FileInfo fi = storageClient.get_file_info("group1",
"M00/00/00/wKgUoFGwPuSAS-QZAAAA4y5hK3c33.conf");

           
System.out.println(fi.getSourceIpAddr());

           
System.out.println(fi.getFileSize());

           
System.out.println(fi.getCreateTimestamp());

           
System.out.println(fi.getCrc32());

        } catch (Exception e)
{

           
e.printStackTrace();

        }

    }

    @org.junit.Test

    public void testGetFileMate(){

        try {

           
ClientGlobal.init(conf_filename);



           
TrackerClient tracker = new TrackerClient();

           
TrackerServer trackerServer = tracker.getConnection();

           
StorageServer storageServer = null;



           
StorageClient storageClient = new StorageClient(trackerServer,

                   
storageServer);

           
NameValuePair nvps [] = storageClient.get_metadata("group1",
"M00/00/00/wKgUoFGwRMmASXSNAAAA4y5hK3c11.conf");

           
for(NameValuePair nvp : nvps){

               
System.out.println(nvp.getName() + ":" + nvp.getValue());

           
}

        } catch (Exception e)
{

           
e.printStackTrace();

        }

    }

    @org.junit.Test

    public void testDelete(){

        try {

           
ClientGlobal.init(conf_filename);



           
TrackerClient tracker = new TrackerClient();

           
TrackerServer trackerServer = tracker.getConnection();

           
StorageServer storageServer = null;



           
StorageClient storageClient = new StorageClient(trackerServer,

                   
storageServer);

           
int i = storageClient.delete_file("group1",
"M00/00/00/wKgUoFGwRMmASXSNAAAA4y5hK3c11.conf");

           
System.out.println( i==0 ? "删除成功" : "删除失败:"+i);

        } catch (Exception e)
{

           
e.printStackTrace();

        }

    }




推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
author-avatar
手机用户2502916257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有