FastDFS图片文件上传下载(FastDFS&Nginx)

4 篇文章 0 订阅
1 篇文章 0 订阅

FastDFS

下载libfastcommon

  • libfastcommon是fastDFS依赖的函数库
1. 切换到/usr/local,下载libfastcommon命令:
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
2. 解压目录
tar -zxvf V1.0.7.tar.gz
3. 进入libfastcommon-1.0.7目录,依次执行两条命令完成编译和安装:
./make.sh			--编译
./make.sh install	 --安装
4. 建立软连接
  • 你会发现你的/usr/local多了一个目录:lib64,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
    

下载安装FastDFS

1、还是在/usr/local下,先下载FastDFS,命令:
wget -c "https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz" -O fastdfs-6.06.tar.gz
2、解压,解压完毕后/usr/local会有一个目录fastdfs-5.05,进入到这个目录
tar -zxvf fastdfs-6.06.tar.gz
cd fastdfs-6.06
3、编译、安装
./make.sh
./make.sh install
4、建立软连接
  • FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下。
    建立 /usr/bin 到 /usr/local/bin 的软链接(这一步关系到后面某些命令的执行)。
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/fdfs_storaged /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin

配置Tracker

1、进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf

命令:

cd /etc/fdfs
cp tracker.conf.sample tracker.conf
2、切换到home目录下,创建fastdfs目录,在目录下再创建4个子目录:

client,file,storage,tracker

cd /home
mkdir -p fastdfs/{client,file,storage,tracker}
3、编辑tracker.conf ( vim tracker.conf)

下面的参数需要修改下,其它的默认即可

配置文件是否不生效,false 为生效
disabled=false

提供服务的端口(默认端口)
port=22122

Tracker 数据和日志目录地址(上面已经创建)
base_path=/home/fastdfs/tracker

HTTP 服务端口
http.server_port=80(默认端口需和nginx等保持一致)

启动Tracker

  • 启动:

    进入到nginx安装目录的sbin文件夹

    /etc/init.d/fdfs_trackerd start
    
  • 会在 /home/fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录。

  • 查看FastDFS是否启动成功:

netstat -unltp|grep fdfs //查看fastdfs是否启动

配置 FastDFS 的 Storage

1、进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf

命令:

cd /etc/fdfs
cp storage.conf.sample storage.conf
2、修改storage.conf( vim storage.conf)参数
配置文件是否不生效,false 为生效
    disabled=false
    
指定此 storage server 所在 组(组可以自定义,但在每个配置文件中要保持一致)
    group_name=group1
    
storage server 服务端口
    port=23000
    
心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
    heart_beat_interval=30
    
Storage 数据和日志目录地址(前面已经创建)
    base_path=/home/fastdfs/storage
    
保存文件时 storage server 支持多个存储路径。这里配置存放文件的基路径数目,通常只配一个目录。
    store_path_count=1
    
逐一配置 store_path_count 个路径,索引号基于 0,如果不配置 store_path0,那它就和 base_path 对应的路径一样。
    store_path0=/home/fastdfs/file
    
FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。
如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
    subdir_count_per_path=256
    
tracker_server 代表要连接tracker的ip和端口 ,会主动连接 tracker_server,当存在多个 tracker server 时,每个 tracker server 写一行
    tracker_server=ip:22122 #这里的ip是虚拟机IP地址:ifconfig
        
允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
    sync_start_time=00:00
    sync_end_time=23:59
            
访问端口:
    http.server_port=80(与ngnix和trackeSever的端口一致)

启动 Storage

  • 启动Storage前确保Tracker是启动的(一定要确保tracker是启动)。初次启动成功,会在 /home/fastdfs/storage目录下创建 data、 logs 两个目录。
/etc/init.d/fdfs_trackerd start //启动tracker
/etc/init.d/fdfs_storaged start //启动storage
  • 关闭Storage命令:
service fdfs_storaged stop
查看Storage和Tracker是否在通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

配置Client

1、 修改 Tracker 服务器中的客户端配置文件
cd /etc/fdfs   #进入执行目录
cp client.conf.sample client.conf   #更名
vim client.conf   #进入编辑文件
2、配置
Client 的数据和日志目录
    base_path=/home/fastdfs/client
Tracker端口
    tracker_server=ip:22122(tracker地址)(ip为centos系统服务器ip:ifconfig)

上传图片测试

  • 进入图片路径目录下
示例:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 123.jpg  #图片文件目录/图片名称
    
    执行结果:
    group1/M00/00/00/wKhYgGO74XmAWMrrAABsH53bFyY870.jpg   #成功

安装nginx _ fastdfs _module

  • 下载
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
  • 解压
tar -zxvf V1.22.tar.gz
1、更改配置文件
cd fastdfs-nginx-module文件目录下 /src
    
vim config

1)ngx_module_incs路径更改为usr/include路径;
2)ngx_module_libs中libfastcommon.so、libfdfsclient.so两个so文件路径更改为usr/lib下对应文件路径;
3)DFDFS_MOD_CONF_FILENAME指向执行目录/etc/fdfs下mod_fastdfs.conf文件路径;
4)CORE_INCS后路径更改为usr/include路径;
5)DFDFS_MOD_CONF_FILENAME指向执行目录/etc/fdfs下mod_fastdfs.conf文件路径;
2、复制文件到指定目录
cp mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs
ll
    fastdfs安装目录下的文件复制到运行目录etc/fdfs
    http.conf
    cp fastdfs安装目录/http.conf 执行目录/etc/fdfs/
    
    mime.types
    cp fastdfs安装目录/mime.types 执行目录/etc/fdfs/

安装Nginx

1、安装nginx所需环境
gcc 安装
    yum install gcc-c++
    
PCRE pcre-devel 安装
    yum install -y pcre pcre-devel

zlib 安装
    yum install -y zlib zlib-devel
    
OpenSSL 安装
    yum install -y openssl openssl-devel
2、安装Nginx
  • 下载nginx,压缩包建议存在在/usr/local
wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
  • 解压
tar -zxvf nginx-1.12.1.tar.gz
  • 新建文件夹
mkdir /var/temp/nginx -p
  • 编译、安装,使用默认配置
    命令:
cd nginx-1.12.1
./configure \ 
    --prefix=/home/sunline/app/nginx \ 
    --add-module=/home/sunline/app/fastdfs/fastdfs-nginx-module-1.22/src
    
1--prefix后为指定nginx安装路径
2--add-module后为fastdfs-nginx-module安装目录下src文件夹路径;
    
make
make install
  • 进入/etc/fdfs/
cd /etc/fdfs/
mkdir /usr/local/fastdfs/tmp
vim mod_fastdfs.conf
  • 修改配置文件
base_path=/usr/local/fastdfs/tmp          #和Tracker里面的配置一样
store_path0=/usr/local/fastdfs/storge     #和Tracker里面的配置一样
     
    设置tracker访问地址ip为服务器ip地址
tracker_server=ip:22122
    
    更改组名称
group_name=group1
    
    启用
url_have_group_name = true
3、更改nginx配置
cd /usr/local/nginx/conf/
    
vim nginx.conf
    
    更改配置:
server {
        listen       80; #端口号为tracker中配置的端口号
        server_name  localhost;
        access_log  logs/access.log;

        location /group1 {
            ngx_fastdfs_module;
        }

启动nginx

1、关闭防火墙
systemctl stop firewalld.service
    
查看防火墙状态
    systemctl status firewalld
2、启动
cd /usr/local/nginx/sbin/

    启动
./nginx
    
    关闭
./nginx -s quit
    
    重启
./nginx -s reopen(此方法为热重载,新进程若有问题则继续使用旧进程)
service nginx restart(此方法为重启,先停止nginx服务再重新启动,会造成服务暂时中断;若配置文件有问题,则会导致服务长时间中断)
    
    查看进程号
ps -ef|grep nginx
    
    查看是否启动成功
netstat -unltp|grep nginx
3、查看url是否可以正常调用
curl 域名+端口/上传图片返回的path
    curl http://ip:80/group1/M00/00/00/wKhYgGO74YCADj-PAAB58-dxAdE342.jpg

Nginx设置内外网前置机跳转

提供一台服务器A,一台前置机B供程序部署。服务器A仅能访问内网(IP:192.168.1.2),前置机B与A网络互通(IP:192.168.3.2),且提供一个外网地址(IP:123.0.12.1)可映射访问前置机B(B不可访问外网),关系如图:
在这里插入图片描述

在内网中也可以访问程序,在外网中也可访问程序

nginx正反向代理

正向代理
  • 代理服务器配置在客户端
  • 正向代理代替客户端去发送请求
反向代理
  • 代理服务器配置在服务端
  • 反向代理代替服务端接受请求

配置前置机

  • fastdfs的storage机器增加vip的配置;
  • 进入通讯接入服务器,配置nginx前置机,将纳入前置机服务器,找到对应配置路径文件中,配置请求转发:
//示例:
location /test/image/ads {
  proxy_pass   http://ip:80/group1/M00/; #ip为tracker服务器ip地址
}

1/test/image/ads为映射到外网的前缀地址
2、proxy_pass  http://ip:80/group1/M00/,为需要替换的前缀(ip+端口/组名称grup1/M00/
  • 外网服务器配置,接收到内网nginx前置区转发出的地址后,截取/test/image/后将地址变更为“域名(http://***.com/psbc)+/image/test/”,提供给外网访问程序。(***为最后一层代理,直接使用此域名进行访问)
  • 注:如果只需要内网环境访问图片,则不需要配置外网服务访问地址,可直接配置前置机服务后,通过替换后的前缀+path路径访问

创建连接并上传

//导入maven依赖
<dependency>
    <groupId>org.csource</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.29-SNAPSHOT</version>
</dependency>

//后端代码:
//从客户端获取tracker对象
InetAddress ip = InetAddress.getByName("ip地址");
InetSocketAddress inetSocketAddress = new InetSocketAddress(ip,端口号);
TrackerServer trackerServer = new TrackerServer(inetSocketAddress);
//创建storage客户端
StorageServer storageServer = null;
//连接
StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);
//获取上传图片名称
String name = imageFileUpDownloadRequest.getImageName();
//扩展名, 获取扩展名
String extension = FilenameUtils.getExtension(name);
//获取上传图片文件大小
long size = fileBytes.length;
//设置图片meta信息
NameValuePair[] metaList = new NameValuePair[3];
metaList[0] = new NameValuePair("filename", name);
metaList[1] = new NameValuePair("fileext", extension);
metaList[2] = new NameValuePair("filesize", String.valueOf(size));
//上传且返回path
String storePath = storageClient1.upload_file1(fileBytes, extension, metaList);
//返回路径为group1/M00/08/03/FMb3H2PYySSAaiUSAANRpfiG7Yc251.jpg
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值