FastDFS+Ngnix+上传图片Demo

由于公司要做一个app需要用到fastdfs上传问件,由于之前没有玩过,所以花了几天的时间,从零搭建fastdfs和ngnix。不多说废话,直接写教程。
博主的电脑是win7的,机子上已经安装了VMware,于是找来了一个CentOS Release 6.9的镜像直接全新安装。安装步骤不就像傻瓜式的安装。不过有一点要提的是,联网方式博主用的是桥接模式,为的是不让IP随便改变
这里写图片描述
然后修改虚拟机-》编辑-》虚拟网络编辑器,子网IP的网段要和自己本地的win的网段要一致。
这里写图片描述
这里写图片描述
然后检查虚拟机是否能上网,互ping一下是否能通,如果Ok那就没问题了。
基本的配置完了后面要开始正式操作了。
准备安装包
这里写图片描述
http://pan.baidu.com/s/1cEpFoq
安装过程
由于fastdfs5.0.5依赖libfastcommon,所以我们先安装libfastcommon,为了方便操作,首先切换到root用户,如果没有切换root用户,也可以用su root 回车+密码来切换root用户

su root

安装libfastcommon
我们把需要的安装包都上传到/usr/local文件目录下面,除了fastdfs-client-java-1.25.jar包

cd /usr/local
tar -xvf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install

注意安装过程中的输出信息,如果没有报错就表示libfastcommon安装成功了。 由于libfastcommon.so默认安装到了/usr/lib64/libfastcommon.so,而FastDFS主程序设置的lib目录是/usr/local/lib,所以需要设置软连接:

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

至此libfastcommon安装成功了,接下来安装FastDFS

安装FastDFS_v5.05
首先解压fastdfs-5.05:
tar -xvf fastdfs-5.05.tar.gz
进入fastdfs-5.05目录:
cd fastdfs-5.05
依次执行下面命令

./make.sh
./make.sh install

如果没报错就表示安装成功了,创建了上面的软链接安装基本就没问题了
配置前的准备

先复制3份配置文件:

cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf

我的CentOS的ip地址是:192.168.3.58(修改成自己机器上的ip地址就OK了), 用vim或者是gedit修改配置文件:
配置tracker
打开tracker.conf

gedit tracker.conf

修改配置文件的这几项(根据数据情况修改):

base_path=/home/test/fastdfs
bind_addr=192.168.3.58

启动trackerd服务:

fdfs_trackerd tracker.conf

通过如下命令查看trackerd服务是否启动:

netstat -tupln | grep trackerd

输出如下类似的信息表示已经启动了:

tcp 0 0 192.168.199.130:22122 0.0.0.0:* LISTEN 11309/fdfs_trackerd

也可以通过查看日志文件看下有没有出错(/home/test/fastdfs是前面配置的路径),如果没有报错,应该trackerd服务启动了:

vim /home/zq/fastdfs/logs/trackerd.log

配置storage
打开storage.conf:

gedit storage.conf

修改配置文件的这几项(根据数据情况修改):

base_path=/home/test/fastdfs
bind_addr=192.168.3.58 (这个可以为空)
store_path0=/home/test/fastdfs(上传文件的存储路径)
tracker_server=192.168.3.58:22122(指定trackerd服务的地址)

启动storaged服务:

fdfs_storaged storage.conf

通过如下命令查看storaged服务是否启动:

netstat -tupln | grep storaged

输出如下类似的信息表示已经启动了:
tcp 0 0 192.168.3.58:23000 0.0.0.0:* LISTEN 11413/fdfs_storaged

也可以通过查看日志文件看下有没有出错(/home/test/fastdfs是前面配置的路径),如果没有报错,应该storaged服务启动了:

gedit /home/test/fastdfs/logs/storaged.log

配置client并测试上传
打开client.conf:

gedit client.conf

修改配置文件的这几项(根据数据情况修改):

base_path=/home/test/fastdfs
tracker_server=192.168.3.58:22122

上传测试:

fdfs_upload_file client.conf client.conf.sample

将会上传client.conf.sample文件,如果看到类型下面的信息,那么恭喜你,配置成功了:

group1/M00/00/00/wKjHglYshRGAfbrTAAAFtTzeg5c.sample

安装和配置nginx插件

配置fastdfs-nginx-module
1 解压fastdfs-nginx-module_v1.16.tar.gz

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

2 修改config文件

cd fastdfs-nginx-module/src/
gedit config

修改配置,找到下面这行

CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。(很重要,很重要,很重要)
3修改mod_fastdfs.conf,先复制一份到/etc/fdfs目录下

cp mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
gedit mod_fastdfs.conf
修改如下几项:

tracker_server=192.168.3.58:22122
store_path0=/home/test/fastdfs
base_path=/home/test/fastdfs
url_have_group_name = true(配置多个tracker时,应该将此项设置为true

4建立文件服务器的软连接,并做一些需要的操作
建立软连接(配置文件中storage存放数据的路径):

ln -s /home/test/fastdfs/data /home/test/fastdfs/data/M00

将fastdfs-5.05配置目录下的2个文件复制到/etc/fdfs目录下:

cp /usr/local/fastdfs-5.05/conf/http.conf /etc/fdfs
cp /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs

安装nginx依赖
nginx依赖以下模块:
l gzip模块需要 zlib 库
l rewrite模块需要 pcre 库
l ssl 功能需要openssl库
1.安装pcre
获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
解压缩pcre-xx.tar.gz包。
进入解压缩目录,执行./configure。
依次执行make 和 make install命令
2.安装openssl
获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
解压缩openssl-xx.tar.gz包。
进入解压缩目录,执行./config。
依次执行make 和 make install命令
3.安装zlib
获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
解压缩zlib-xx.tar.gz包。
进入解压缩目录,执行./configure。
依次执行make 和 make install命令

安装和配置nginx:

解压nginx-1.7.8.tar.gz

tar -zxvf nginx-1.7.8.tar.gz

安装nginx(–prefix指定nginx安装到哪里, –add-module指定fastdfs-nginx-module的目录),

./configure –prefix=/usr/local/nginx –add-module=/usr/local/fastdfs-nginx-module/src/

执行完成后可以看到最后的输出:

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

然后依次执行下面的命令:

make
make install

配置nginx
打开nginx.conf配置文件

cd /usr/local/nginx/conf
gedit nginx.conf

在server节点加入下面的配置

#在最前面 把user的改为root
user root;
...

location /group1/M00{
    root /home/test/fastdfs/data;
    ngx_fastdfs_module;
}

打开浏览器输入:http://127.0.0.1,能看到下面的界面表示安装成功了!
这里写图片描述

接下来测试fdfs上传的文件是否也能显示,首先在桌面上准备一张图片:2.jpg,输入下面的命令
fdfs_upload_file /etc/fdfs/client.conf /home/zq/Desktop/2.jpg
返回的文件信息是:group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg
在浏览器输入:http://127.0.0.1/group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg,能看到如下的显示表示配置完成了:
这里写图片描述
至此配置完成了!

配置多台服务器的说明
1)nginx.conf
在server中增加配置:
访问路径不带group名(storage只有一个group的情况),如/M00/00/00/xxx:
location /M00 {
ngx_fastdfs_module;
}
访问路径带group名(storage对应有多个group的情况),如/group1/M00/00/00/xxx:
location ~ /group([0-9])/M00 {
ngx_fastdfs_module;
}
2)mod_fastdfs.conf
将fastdfs-nginx-module_v1.16解压目录fastdfs-nginx-module/src下的mod_fastdfs.conf复制到-DFDFS_MOD_CONF_FILENAME配置的目录下,如/etc/fdfs/。
修改配置:
tracker_server=192.168.199.130:22122 – tracker server的ip和端口,此处可以写多个tracker server,每行一个
url_have_group_name = true –访问路径带group时为true否则为false,多个group的情况下,必须为true,为false时,group_count必须为0

storage只有一个group的情况:
group=group1 –storage对应的group
store_path0=/home/zq/fastdfs –storage存储路径
group_count = 0

storage对应有多个group的情况:
url_have_group_name = true –必须设置为true才能支持多个group
group_count = 2 –storage的group个数

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/zq/fastdfs

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/zq/fastdfs2

Demo
在项目里导入fastdfs_client_v1.24.jar包

public class Fast {  
    /* 
     *  1、初始化全局配置。加载一个配置文件。 
     *  我的是client.conf里面的内容是tracker_server=192.168.206.133:22122(<span style="color:#ff0000;">这个ip是trackerIP就是在配置文件里经常配置的IP,里一个端口就不多说了</span>) 
     * */  
    public static void main(String[] args) throws Exception {  
        ClientGlobal.init("D:/project/Java6/src/client/client.conf");  
        //2.创建一个TrackerClient对象  
        TrackerClient trackerClient=new TrackerClient();  
        //3.创建一个TrackerServer对象  
        TrackerServer trackerServer=trackerClient.getConnection();  
        //4.声明一个StorageServer对象,为null  
        StorageServer storageServer=null;  
        //5.获得StorageClient对象  
        StorageClient storageClient=new StorageClient(trackerServer, storageServer);  
        //6.直接调用StorageClient对象方法上传文件即可。  
        String[] strs=storageClient.upload_file("C:/Users/WLSQ28/Desktop/d730ffebd2fefd6f906fc612a0c4f5ea.jpg", "jpg", null);  
        //7.可以打印出文件的地址,可以拼成URL访问  
        for(String str:strs){  
            System.out.println(str);  
        }  
    }  
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值