Linux 系统安装fastdfs分布式文件系统能够进行上传和下载

前置:

netstat -tunlp 是查看所有的在使用的端口号情况

netstat -tunlp | grep 端口号 是查看所查询的端口号情况

备注:

-t:(tcp)仅显示TCP相关端口

-u:(udp)仅显示UDP相关端口

-n:不进行DNS轮询,显示IP(可以加速操作)

-l:仅列出有在Listen(监听)的服务端口

-p:显示建立相关链接的程序名

正文

  1. fastDFS是由Tracker Server(跟踪服务器),存储服务器(Storage Server),和客户端(Clent)组成
  2. 下面直接开始fastDFS及其组成服务的安装及使用
    1. 安装的环境为Linux CentOS7 初始安装的系统
    2. 需要下载的文件点击下载 -------传送门
      在这里插入图片描述
    3. 点击下载
      在这里插入图片描述
      上传到Linux系统并进行解压,我上传的路径为–/opt/fastdfs
      并使用解压命令进行解压
unzip nginx-1.2.9.zip

unzip fastdfs-master.zip

unzip fastdfs-nginx-module-master.zip

如果找不到unzip命令或unzip命令无效直接yum命令进行安装unzip

yum -y install unzip

解压后如下所示

在这里插入图片描述

此时,环境已经准备好了。

  1. 由于是新安装的Linux系统此时需要安装编译工具

yum -y install gcc-c++

进入libfastcommon-mastercd 目录
编译并安装:

./make.sh && ./make.sh install

然后建立一个软连接,实际上就是windows的快捷键

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

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

libfastcommon-mastercd 安装成功

  1. 安装 fastdfs-master

进入到 fastdfs-master目录中,编译并安装:

./make.sh && ./make.sh install

正常情况下安装成功,从安装日志中可以看出,fastdfs会在etc下创建fdfs目录。
我们进入该目录:

cd /etc/fdfs/

将 client.conf.sample, storage.conf.sample, tracker.conf.sample三份文件分别复制。

cp client.conf.sample client.conf

cp storage.conf.sample storage.conf

cp tracker.conf.sample tracker.conf

然后fastdfs-master安装成功

  1. 安装Tracker
    首先创建tracker工作目录,我创建的工作路径为:

/home/admin/tracker

然后修改tracker配置文件:

vim /etc/fdfs/tracker.conf

修改以下内容

# 绑定IP,为空绑定所有,默认为空,正式环境需填写,这里我们可以不填
bind_addr=

# tracker 服务的端口号
port=22122

# tracker的工作目录,这里是我刚刚创建的文件路径
base_path=/home/admin/tracker

# 为服务器预留多少空间,默认是10%。可根据自己环境条件自行修改
reserved_storage_space = 10%

# tracker访问开放端口号,默认是8080,到时候用来访问文件会用到
http.server_port=9527

保存之后即可启动tracker服务,可以使用如下命令启动:

service fdfs_trackerd start
fdfs_trackerd /etc/fdfs/tracker.conf start

启动成功之后我们可以看一下刚刚我们新增的tracker文件夹,目录中会多了data和logs两个目录

安装 storage
创建文件路径

/home/admin/storage

修改storage配置文件:vim /etc/fdfs/storage.conf
主要修改一下内容:

# 设置group_name,默认为:group1
group_name=group1

# 绑定IP,为空绑定所有,默认为空,正式环境需填写,这里我们可以不填
bind_addr=

# storage服务端口号
port=23000

# storage的工作目录,这里是我刚刚创建的文件路径
base_path=/home/admin/storage

# 实际文件的存储路径的个数
store_path_count=1

# 实际文件的存储路径
store_path0=/home/admin/file

# 生成存储文件夹的个数,此个数根据该配置的值的平方获得
# 默认值为256,那么生成存储文件夹的个数则为:256 * 256
# 我这里设置的16,那么生成存储文件夹的个数则为:16 * 16
subdir_count_per_path=16

# tracker服务,必须对应我们开启的tracker服务,192.168.10.170为当前系统的ip地址
tracker_server=192.168.25.110:22122

# 对应的http端口号,默认8888。可自行修改
http.server_port=8888

保存之后即可启动storage服务,可以使用如下命令启动:

service fdfs_storaged start

fdfs_storaged /etc/fdfs/storage.conf start

启动成功之后我们可以看一下刚刚我们新增的storaged文件夹,目录中会多了data和logs两个目录
然后我们再看文件实际存放的路径,我的实际存放路径为:

/home/admin/file

这个时候我们可以看到,除了我自己新增的两个文件夹之外多出了一个data文件夹。

我们进入到data文件夹中查看,即可看到我们当时设置存储文件夹的个数,我设置的是16。

OK,至此storage安装完成

校验整合

执行命令:

fdfs_monitor /etc/fdfs/storage.conf

出现以下内容则表示storage是否注册到了tracker中去了。

DEBUG - base_path=/usr/local/FastDFS/storage, connect_timeout=10, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=1, server_index=0
tracker server is 192.168.25.110:22122
group count: 1
Group 1:
group name = group1
disk total space = 51175 MB
disk free space = 44966 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 16
current write server index = 0
current trunk file id = 0

    Storage 1:
            id = 192.168.25.110
            ip_addr = 192.168.10.170 (localhost.localdomain)  ACTIVE
            http domain = 
            version = 5.12
            join time = 2019-01-02 16:04:36
            up time = 2019-01-06 18:03:09
            total storage = 51175 MB
            free storage = 44966 MB
            upload priority = 10
            store_path_count = 1
            subdir_count_per_path = 16
            storage_port = 23000
            storage_http_port = 8888
            current_write_path = 0
            source storage id = 
            if_trunk_server = 0
            connection.alloc_count = 256
            connection.current_count = 0
            connection.max_count = 6
            total_upload_count = 418
            success_upload_count = 418
            total_append_count = 0
            success_append_count = 0
            total_modify_count = 0
            success_modify_count = 0
            total_truncate_count = 0
            success_truncate_count = 0
            total_set_meta_count = 414
            success_set_meta_count = 414
            total_delete_count = 158
            success_delete_count = 158
            total_download_count = 55
            success_download_count = 55
            total_get_meta_count = 8
            success_get_meta_count = 8
            total_create_link_count = 0
            success_create_link_count = 0
            total_delete_link_count = 0
            success_delete_link_count = 0
            total_upload_bytes = 285418826
            success_upload_bytes = 285418826
            total_append_bytes = 0
            success_append_bytes = 0
            total_modify_bytes = 0
            success_modify_bytes = 0
            stotal_download_bytes = 731115
            success_download_bytes = 731115
            total_sync_in_bytes = 0
            success_sync_in_bytes = 0
            total_sync_out_bytes = 0
            success_sync_out_bytes = 0
            total_file_open_count = 481
            success_file_open_count = 481
            total_file_read_count = 63
            success_file_read_count = 63
            total_file_write_count = 1340
            success_file_write_count = 1340
            last_heart_beat_time = 2019-02-15 17:21:14
            last_source_update = 2019-01-30 22:59:59
            last_sync_update = 1970-01-01 08:00:00
            last_synced_timestamp = 1970-01-01 08:00:00

至此,安装成功!

接着进入我们安装的 fastdfs-master 目录下的conf目录
将http.conf和mime.types拷贝到/etc/fdfs目录下:

cp http.conf /etc/fdfs/

cp mime.types /etc/fdfs/

目录如下所示:

在这里插入图片描述
然后进入我们解压好的

/opt/fastdfs/fastdfs-nginx-module-master

src 目录下
mod_fastdfs.conf也拷贝到/etc/fdfs目录下

cp mod_fastdfs.conf /etc/fdfs/

修改刚拷贝的文件

vim /etc/fdfs/mod_fastdfs.conf

主要修改以下内容:

# tracker路径
base_path=/home/admin/tracker

# tracker服务 虚拟机的ip+22122
tracker_server=192.168.25.110:22122

# storage服务端口号
storage_server_port=23000

# 分组名称
group_name=group1

# 地址中是否包含分组名
url_have_group_name = true

# 存储路径个数
store_path_count=1

# 存储路径
store_path0=/home/admin/file

# 分组个数
group_count = 1

# 分组配置
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/admin/file

创建M00至存储目录连接

ln -s /home/admin/file/data/M00

下载nginx

网址为: 传送门
我选择的版本为1.2.9版本
安装nginx所需要的依赖:

yum -y install pcre pcre-devel

yum -y install zlib zlib-devel

yum -y install openssl openssl-devel

将下载好的nginx进行解压:

tar xvf nginx-1.2.9.tar.gz

进入我们解压号的nginx目录,然后进行配置编译:

./configure --prefix=/opt/fastdfs/nginx-1.2.9 --add-module=/opt/fastdfs/fastdfs-nginx-module-master/src

# prefix:安装目录
# add-module:解压后/opt/fastdfs/fastdfs-nginx-module-master/src所在的位置

配置编译应该没有问题。然后我们直接进行安装:

make && make install

安装完成之后,我们进入安装目录:

cd /opt/fastdfs/nginx-1.2.9

修改nginx配置文件:

vim conf/nginx.conf

修改内容如下:

# 新增一个服务,监听之前配置开放的端口号
server {
	listen    9527; #对应之前开放的端口号
	server_name    localhost;

	location / {
	    root   html;
	    index   index.html index.htm;
	}

	location ~/group([0-9])/M00 {
	    ngx_fastdfs_module;
	}
	
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
	    root   html;
	}
}

注意: 同时还要加上

user root;

如下所示:

#user  nobody;
worker_processes  1;
user root;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}
...

要不然就会出现能够上传成功但是启动nginx访问出现404

开启 nginx: 在/opt/fastdfs/nginx-1.2.9 目录下

./sbin/nginx

修改一下fdfs下的客户端文件:vim /etc/fdfs/client.conf
修改以下内容:

# the base path to store log files
base_path=/home/admin/tracker

# 本机ip+22122
tracker_server=192.168.25.110:22122

# 对应tracker中的开放端口
http.tracker_server_port=9527

访问nginx服务出现如下:
在这里插入图片描述
如此Nginx安装成功,然后我们上传图片测试一下
执行上传命令:

fdfs_upload_file /etc/fdfs/client.conf /home/a.png

备注 /home/a.png 为文件的完整路径
返回如下路径:
在这里插入图片描述

group1/M00/00/00/wKgZbl3cxhiAIXtYAAykaFSHwkI368.png

之后使用

http://192.168.25.110:9527/group1/M00/00/00/wKgZbl3cxhiAIXtYAAykaFSHwkI368.png

访问就圆满成功啦!
在这里插入图片描述
然后附上java上传文件到fastFDS的代码

package com.hlwxy.bootcurd;

import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;

/**
 * @author mgy
 * @Description:
 * @date 2019/11/25 15:16
 */
public class FastDFSTest {
    //    测试文件上传
    private static Logger logger = LoggerFactory.getLogger(FastDFSTest.class);

    @Test
    public void test01() {
//            加载配置文件
//            String filePath = new ClassPathResource("").getFile().getAbsolutePath();;
        try {
            String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();;
            ClientGlobal.init(filePath);
//            ClientGlobal.initByProperties("fastdfs_client.properties");
            TrackerClient trackerClient = new TrackerClient();
            TrackerServer trackerServer = trackerClient.getConnection();
            StorageServer storageServer = null;
            StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
            NameValuePair[] metaList = new NameValuePair[1];
            metaList[0] = new NameValuePair("fileName", "1.png");
            String png = storageClient1.upload_file1("E:\\壁纸\\电脑壁纸精选\\4bccdee4f93e48d732ff909325f4ade7.jpg", "png", metaList);
            logger.info("上传的文件路径为:{}", png);
        } catch (Exception e) {
            logger.error("FastDFS Client Init Fail!", e);
        }
    }

}

其中fdfs_client.conf配置文件如下:

connect_timeout = 60
network_timeout = 60
charset = UTF-8              编码格式
http.tracker_http_port = 9527          Nginx端口
http.anti_steal_token = false
tracker_server = 192.168.25.110:22122  虚拟机ip+22122

执行测试代码如下所示:

14:38:02.657 [main] INFO com.hlwxy.bootcurd.FastDFSTest 
- 上传的文件路径为:group1/M00/00/00/wKgZbl3cyEuAPQkjAAugk8hrYTM742.png

再次进行测试:

在这里插入图片描述
设置fastDFS 设置开机启动:

编辑如下文件

vim /etc/rc.d/rc.local

添加如下代码:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

/opt/fastdfs/nginx-1.2.9/sbin/nginx

测试:
重启虚拟机–直接访问Nginx
显示如下:
在这里插入图片描述

	                        	 备注:

本文实现是摘抄@难受啊马飞。博主的文章,有兴趣的可以继续观看@难受啊马飞。博主的文章,如有不对之处请加以指教.

安装fastdfs 执行 ./make.sh./make.sh install 时 出现以下报错

Makefile:4: *** Recursive variable 'ENABLE_STATIC_LIB' references itself (eventually). Stop. ./make.sh: line 178: perl: command not found ./make.sh: line 179: perl: command not found ./make.sh: line 180: perl: command not found

  1. 测试执行代码: yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值