首页 > 系统相关 >centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」

时间:2023-11-21 11:05:48浏览次数:51  
标签:文件 nginx fastdfs FastDFS Nginx usr 服务器 fdfs

前言

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

配备一台公网服务器作为文件上传下载,花费资源和开销比较大,如果在本地搭建FastDFS服务,只把上传后的文件通过cpolar内网端口转发工具将文件配置可通过互联网访问,极大了减少服务器费用及开销,本文介绍详细搭建FastDFS教程,并结合Nginx+cpolar工具实现远程访问文件。

简介

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,
在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,
FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,
以键值对(key value)方式表示,如:width=1024,其中的key为width,value为1024。
文件metadata是文件属性列表,可以包含多个键值对。
跟踪器和存储节点都可以由一台或多台服务器构成。
跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。
其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。
存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。
一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

上传交互过程

1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。

下载交互过程

1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

准备工具


首先下载好所需的压缩包,上传到Linux服务器上。

1.FastDFS_v5.05.tar.gz

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

3.libfastcommon-1.0.7.tar.gz

4.nginx-1.16.1.tar.gz

本地搭建FastDFS文件系统

1.1 环境安装

由于fastDFS是由c语言编写,所以我们需要安装gcc

yum -y install gcc-c++

FastDFS依赖libevent库,需要安装。执行如下命令:

yum -y install libevent

1.2 安装libfastcommon

进入local目录

cd /usr/local

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。点击下面链接即可获取:

https://github.com/happyfish100/libfastcommon/releases/tag/V1.0.7

获取后,上传到local目录下

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名

解压libfastcommon

tar -zxvf libfastcommonV1.0.7.tar.gz

进入解压文件夹

cd libfastcommon-1.0.7/

编译

./make.sh

安装

./make.sh install

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

cp /usr/lib64/libfastcommon.so /usr/lib/

1.3 安装FastDFS

进入local目录

cd /usr/local

点击下列地址,可获取下载FastDFS_v5.05.tar.gz文件:

https://sourceforge.net/projects/fastdfs/

下载文件后,上传FastDFS_v5.05.tar.gz到/usr/local/

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_02

解压文件

tar -zxvf FastDFS_v5.05.tar.gz

进入解压文件夹

cd FastDFS

编译

./make.sh

安装

./make.sh install

安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

cd conf/

拷贝

cp * /etc/fdfs/

1.4 配置Tracker

接下来进行配置,安装成功后进入/etc/fdfs目录

cd /etc/fdfs/

修改tracker.conf

vim tracker.conf

把base_path=/home/yuqing/fastdfs改为base_path=/home/fastdfs

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_03

编辑后保存退出,然后创建一个对应的fastdfs文件夹

mkdir /home/fastdfs

然后启动

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

设置开机启动

vim /etc/rc.d/rc.local

将运行命令行添加进文件

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

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_04

1.5 配置Storage

进入/etc/fdfs目录

cd /etc/fdfs

修改storage.conf

vim storage.conf

把base_path=/home/yuqing/fastdfs改为base_path=/home/fastdfs

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_二级_05

把 store_path0=/home/yuqing/fastdfs 改为store_path0=/home/fastdfs/fdfs_storage

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_06

继续修改,设置tracker服务器:IP,tracker_server=Linux局域网ip:22122 ,设置好后保存退出

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_二级_07

创建对应fdfs_storage文件夹

mkdir /home/fastdfs/fdfs_storage

然后启动

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

设置开机自动启动

vim /etc/rc.d/rc.local

将运行命令行添加到文件,然后保存

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

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_08

1.6 测试上传下载

FastDFS安装成功可通过/usr/bin/fdfs_test命令测试上传、下载等操作。

修改/etc/fdfs/client.conf

vim /etc/fdfs/client.conf

修改如下内容,然后保存:

base_path=/home/fastdfs

tracker_server=Linux局域网ip:22122

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_09

接下来测试上传文件,这里上传了一张图片到/usr/local目录下,作为测试使用

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_10

FastDFS上传文件使用格式:

/usr/bin/fdfs_test /etc/fdfs/client.conf upload+ 上传文件的路径

然后按照格式,测试将test23.png图片上传到FastDFS中

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png

执行后,我们可以看到返回地址信息,表示成功,但是目前还访问不了,需要结合Nginx做访问下载

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_11

1.7 与Nginx整合

点击下载下面链接下载fastdfs-nginx-module_v1.16:

https://sourceforge.net/projects/fastdfs/files/FastDFS Nginx Module Source Code/fastdfs-nginx-module_v1.16.tar.gz/download

进入 /usr/local/文件夹下

cd /usr/local/

上传fastdfs-nginx-module_v1.16.tar.gz

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_12

解压fastdfs-nginx-module_v1.16.tar.gz

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

进入src,然后编辑配置文件

cd fastdfs-nginx-module/src/

修改config文件

vim config

修改这三个位置,将里面原本是/usr/local/的路径改为/usr/,然后保存退出

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_13

然后将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下

cp mod_fastdfs.conf /etc/fdfs/

修改mod_FastDFS.conf的内容:

vim /etc/fdfs/mod_fastdfs.conf

修改内容如下:

base_path=/home/fastdfs

tracker_server=Linux局域网ip地址:22122

url_have_group_name=true #url中包含group名称

store_path0=/home/fastdfs/fdfs_storage #指定文件存储路径

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_14

接下来将libfdfsclient.so拷贝至/usr/lib下

cp /usr/lib64/libfdfsclient.so /usr/lib/

创建nginx/client目录即可

mkdir -p /var/temp/nginx/client

1.8 安装Nginx

首先安装系列环境

yum -y install pcre pcre-devel  

yum -y install zlib zlib-devel  

yum -y install openssl openssl-devel

然后点击下载Nginx包:

http://nginx.org/en/download.html

上传到root目录下

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_15

解压,并进入解压文件夹

tar -zxvf nginx-1.16.1.tar.gz && cd nginx-1.16.

添加FastDFS-nginx-module模块,执行以下命令:

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_二级_16

然后编译

make

安装

make install

1.9 配置Nginx

修改Nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

添加server,添加后保存退出:

server {
   listen       8089;#为了防止80端口,我们改成8089
   server_name  192.168.59.133;#这里需要使用你本机的局域网ip

   location /group1/M00/{
           ngx_fastdfs_module;
   }
}

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_17

启动Nginx

/usr/local/nginx/sbin/nginx

如果启动nginx出现以下错误:

nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)

可以执行如下命令,然后再次启动:

mkdir /var/run/nginx

设置开机自动启动。

vim /etc/rc.d/rc.local

将运行命令行添加进文件,然后保存退出:

/usr/local/nginx/sbin/nginx

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_18

关闭防火墙

service iptables stop

设置防火墙不自动启动

chkconfig iptables off

2. 局域网测试访问FastDFS

然后按照格式,测试将上面我们上传的test23.png图片上传到FastDFS中

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png

执行后,我们可以看到返回地址信息,表示成功

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_19

然后使用上面的地址,在浏览器访问,即可看到我们上传的图片,fastDFS搭建完成

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_二级_20

3. 安装cpolar内网穿透

上面我们在本地Linux虚拟机安装了fastDFS分布式文件服务,下面我们安装cpolar内网穿透工具,通过cpolar的http公网地址,我们可以很容易远程也可以访问fastDFS里面上传的文件,而无需自己注册域名购买云服务器.下面是安装cpolar内网穿透步骤

cpolar官网:https://www.cpolar.com/

使用一键脚本安装命令

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

token认证

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里:

cpolar authtoken xxxxxxx

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_21

向系统添加服务

sudo systemctl enable cpolar

启动cpolar服务

sudo systemctl start cpolar

4. 配置公网访问地址

成功启动cpolar服务后,我们在浏览器上访问Linux局域网ip地址+9200端口,登录cpolar web UI管理界面。

登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个http协议的隧道指向上面设置的Nginx8089端口:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8089
  • 域名类型:免费选择随机域名
  • 地区:选择China VIP

点击创建

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_22

然后打开在线隧道列表,查看并且复制公网地址

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_23

然后打开浏览器,输入公网地址,访问我们上传在fastDFS里的文件,即可远程访问成功

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_24

5. 固定公网地址

由于刚刚创建隧道使用的是随机临时地址,该地址会在24小时内发生变化,为了长期和更稳定远程访问,我们接下来将这个公网地址配置为固定的,

5.1 保留二级子域名

需升级至基础套餐或以上才支持配置二级子域名,如有下载文件的需求,可以升级更高套餐以便获取更大的带宽,提高下载速度

登录cpolar官网后台,点击左侧仪表盘的预留,找到保留二级子域名,为http隧道保留一个二级子域名。

  • 地区:选择服务器地区
  • 名称:填写您想要保留的二级子域名(可自定义)
  • 描述:即备注,可自定义填写

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_25

本例保留一个名称为fasttest的二级子域名。子域名保留成功后,我们将子域名复制下来,接下来需要将其配置到隧道中去。

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_二级_26

5.2 配置二级子域名

登录cpolar web ui管理界面。点击左侧仪表盘的隧道管理——隧道列表,找到需要配置二级子域名的隧道,点击右侧的编辑

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_子域名_27

修改隧道信息,将二级子域名配置到隧道中:

  • 域名类型:改为选择二级子域名
  • Sub Domain:填写我们刚刚所保留的二级子域名(本例为fasttest)

修改完成后,点击更新

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_28

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到隧道的公网地址,已经更新为二级子域名了,将公网地址复制下来。

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_nginx_29

6. 测试访问固定二级子域名

我们来测试一下访问配置成功的二级子域名,打开浏览器,输入公网地址加资源路径,访问我们上传在fastDFS里的文件,出现图片即可远程访问成功。现在,我们全网唯一的私有二级子域名,就创建好了。

而且这个地址也不会再随机变化,他是固定不变的,只要保持隧道在线,我们在外就可以通过这个公网地址,随时随地远程访问,无需公网IP,也不用设置路由器。

centos7.9 部署FastDFS+Nginx本地搭建文件服务器 高性能的文件服务器集群 同时实现在外远程访问「端口映射」_二级_30

END

标签:文件,nginx,fastdfs,FastDFS,Nginx,usr,服务器,fdfs
From: https://blog.51cto.com/u_64214/8497663

相关文章

  • 29.8k star,推荐一个酷炫、强大的现代开源文件资源管理器
    先看张图,下载地址在文末:「Files」是一款为Windows设计的现代化文件管理器,它具有美观的界面、强大的功能和高效的操作。本文将介绍「Files」的基本信息、使用方法、特点和安装方式,并对其进行总结。「Files」简介「Files」是一个由社区驱动的开源项目,由数百名贡献者共同设计和......
  • springboot中实现上传文件的功能简单示例
    在SpringBoot中实现文件上传可以通过以下步骤:配置文件上传相关的依赖:在项目的pom.xml文件中,添加以下依赖:<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>创建文件上传接口:在......
  • cenots7使用GPG加密文件
    1、安装gpgyum-yinstallgnupg2、生成密钥对gpg--gen-key中文翻译后输入如下:请选择您要使用的密钥种类:(1)RSAandRSA(default)(2)DSAandElgamal(3)DSA(仅用于签名)(4)RSA(仅用于签名)您的选择?1RSA密钥长度应在1024位与4096位之间。您想要......
  • Nginx实现基于请求头的访问控制配置
    在Nginx中,可以使用"allow"和"deny"指令来实现IP访问限制。"allow"指令用于允许特定的IP地址或IP地址段访问服务器,"deny"指令用于阻止特定的IP地址或IP地址段访问服务器。以下是一个简单的配置示例:复制12345location/{    deny192.168.0.1;    allow19......
  • Nginx实现基于IP地址的访问控制配置
    一、Nginx配置中的IP地址变量在Nginx的配置文件中,通过一些变量来表示客户端的IP地址。其中最常用的是$remote_addr变量,它代表了客户端的IP地址。二、简单的IP地址过滤配置允许特定IP地址访问复制1234location/{  allow192.168.1.100;  denyall;}......
  • Nginx实现基于请求URL的请求重写配置
    在Nginx中,可以使用rewrite指令来进行请求重写。其基本语法如下:复制1rewriteregexreplacement[flag];其中,regex表示正则表达式,用于匹配当前请求URL;replacement表示目标URL,替换原来的URL;flag是可选的标志位,用于控制重写的行为。例如,下面的重写规则可以将以“/pa......
  • 命令行方式启动nginx
    果nginx在d:/software/nginx目录下,那么命令行启动方式是:1、进入d:/software/nginx目录下复制1cdd:/software/nginx2、启动nginx复制1startnginx3、如果需要关闭nginx,则执行如下命令:复制1nginx-sstop......
  • nginx 启用SSL证书
    #usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}http{includemime.types;defau......
  • Nginx限制IP访问配置,提升网站安全性
    Nginx限制IP访问配置,提升网站安全性随着互联网的快速发展,网络安全问题逐渐受到人们的重视。对于网站管理员来说,确保服务器的安全是非常重要的。Nginx作为一款高性能的Web服务器,具有灵活的配置选项,可以通过限制IP访问来提升网站的安全性。本文将介绍如何在Nginx中配置IP访问限制,并......
  • 启动ASP.NET项目报“/”应用程序中的服务器错误,解决方案
    当使用浏览器启动aspx项目时,如果浏览器出现下面错误  需要检查系统服务中的ASP.NETStateService服务是否启动 如果没有启动,会报这种错误,及时启动起来,就可以解决......