FastDFS与Nginx结合搭建文件服务器,并实现公网访问【内网穿透】

news/2024/5/20 17:09:18/文章来源:https://blog.csdn.net/ks_wyf/article/details/132421371

文章目录

  • 前言
  • 1. 本地搭建FastDFS文件系统
    • 1.1 环境安装
    • 1.2 安装libfastcommon
    • 1.3 安装FastDFS
    • 1.4 配置Tracker
    • 1.5 配置Storage
    • 1.6 测试上传下载
    • 1.7 与Nginx整合
    • 1.8 安装Nginx
    • 1.9 配置Nginx
  • 2. 局域网测试访问FastDFS
  • 3. 安装cpolar内网穿透
  • 4. 配置公网访问地址
  • 5. 固定公网地址
    • 5.1 保留二级子域名
    • 5.2 配置二级子域名
  • 6. 测试访问固定二级子域名

前言

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

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

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

1. 本地搭建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目录下

1679321808236

解压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/

1679322527568

解压文件

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

1679321890447

编辑后保存退出,然后创建一个对应的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

1679321943356

1.5 配置Storage

进入/etc/fdfs目录

cd /etc/fdfs

修改storage.conf

vim storage.conf

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

1679322281423

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

1679322153239

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

1679322199689

创建对应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

image-20230319225348678

1.6 测试上传下载

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

修改/etc/fdfs/client.conf

vim /etc/fdfs/client.conf

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

base_path=/home/fastdfstracker_server=Linux局域网ip:22122

1679322420123

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

1679322482853

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做访问下载

1679322601788

1.7 与Nginx整合

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

[https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download](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

1679322637070

解压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/,然后保存退出

1679322770876

然后将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 #指定文件存储路径

1679405651550

接下来将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包:

nginx-1.16.1.tar.gz

上传到root目录下

1679323002737

解压,并进入解压文件夹

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

1679320271108

然后编译

make

安装

make install

1.9 配置Nginx

修改Nginx配置文件

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

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

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

1679406356346

启动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

1679321237969

关闭防火墙

service iptables stop

设置防火墙不自动启动

chkconfig iptables off

2. 局域网测试访问FastDFS

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

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

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

1679323425917

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

1679406429350

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

20230206171248

  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

4. 配置公网访问地址

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

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

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

点击创建

1679406828417

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

1679406894080

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

1679406972587

5. 固定公网地址

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

5.1 保留二级子域名

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

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

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

1679407261443

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

1679407306636

5.2 配置二级子域名

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

1679407950343

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

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

修改完成后,点击更新

1679407459593

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

1679407508347

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

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

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

1679407663302

转载自cpolar极点云的文章:FastDFS与Nginx结合搭建文件服务器,并内网穿透实现公网访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_348449.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka单节点部署

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

汽车检测报告小程序开发制作方案

传统的车辆检测流程通常繁琐且耗时,用户对更快速、便捷的检测方式有了更高的期望。基于这一需求,开发一款汽车检测报告小程序将成为现实生活中的实用工具。 产品定位为一款提供汽车检测报告查询的小程序,主要服务于需要进行汽车检测的车主、…

《Linux从练气到飞升》No.16 Linux 进程地址空间

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…

【最新附安装包】UG NX2023安装教程(CAD/CAM)

软件下载 软件:UG NX版本:2023语言:简体中文大小:10.78G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU3.0GHz 内存8G(或更高)下载通道①百度网盘丨64位下载链接:https://pan.baidu.c…

数据治理核心知识点总结-1

管理数据的人员必须由业务人员和信息技术人员两类角色共同承担; 数据管理的12个原则,这12个原则分为数据管理原则、数据价值、数据管理需求是业务的需求、数据管理依赖于不同的技能,数据管理是生命周期管理5个方面;这5个方面中&am…

Docker数据管理、网络通信和镜像创建

一、Docker 数据管理1、数据卷2、数据卷容器3、端口映射4、容器互联 二、Docker 镜像的创建1、基于现有的镜像创建1.1 首先启动一个镜像,在容器里做修改1.2 然后将修改后的容器提交为新的镜像,需要使用该容器的 ID 号创建新镜像 2、基于本地的模版创建3、…

工采电子受邀参加:维科网举办的2023全球数字经济产业大会

先进电子科技将引领着绿色出行、绿色能源、绿色制造的未来发展,协助我们应对环境、经济及社会等种种机遇与挑战。让我们聚焦并探讨如何持续促进智能化、网联化、低碳化、电动化技术的融合发展,牵引和拉动并实现产业效益,相互赋能,…

浅析Python爬虫ip程序延迟和吞吐量影响因素

作为一名资深的爬虫程序员,今天我们很有必要来聊聊Python爬虫ip程序的延迟和吞吐量,这是影响我们爬取效率的重要因素。这里我们会提供一些实用的解决方案,让你的爬虫程序飞起来! 网络延迟 首先,让我们来看看网络延迟对…

vue2.x项目从0到1(七)之用户权限

此章节偏理论知识 对于小一点的项目 比如说角色都是平级的 那我们直接像之前 vue2.x项目从0到1(二)之后台管理侧边栏(动态渲染路由以及高亮)_vue动态渲染侧边栏_关忆北_的博客-CSDN博客这样渲染就行了 但是一旦项目大了 …

二、6.锁和输入

字符打印执行过程中不能被切换成其他任务。字符打印过程中的三个步骤像原子一样不可拆分,因此字符打印必须具有原子性。 您肯定想到了,每个任务都有时间片限制,迟早会执行任务调度,所以,任务调度保不准就是在某个 线程…

LeetCodeHot100:Python 版本之动态规划

70. 爬楼梯 3.dp数组如何初始化(本题不初始化) 4.确定遍历顺序 5.举例推导dp数组 ​​​​​​118. 杨辉三角 198. 打家劫舍 ​​​​​​279. 完全平方数 322. 零钱兑换 139. 单词拆分 ​​​​​​300. 最长递增子序列 ​​​​​​152. 乘积最大子数组 416. 分割等和子集 …

尚品汇项目(Day1)

项目结构介绍 vue-cli 脚手架初始化项目 node webpack 淘宝镜像 node_modules文件夹:项目依赖文件夹 public文件夹:一般放置静态资源(图片),需要注意:放在public文件夹中的静态资源,webpac…

冠达管理:沪指失守3100点 大盘加速赶底

8月21日,A股商场缩量跌落,上证指数尾盘失守3100点。券商股领跌,环保板块逆势掀涨停潮。北向资金净卖出64.12亿元,这是自8月7日以来连续第11个交易日净卖出。 从盘面看,早盘三大指数小幅低开,以券商股为主的…

关于lattice planner

使用编程创建驾驶场景。 1.使用Driving scenario Designer 交互方式创建驾驶场景 2.导出matalb function 3.修正这个函数,创建原始场景的变体。 4.调用这个函数,生成drivingScenario object。 5.在simulink中仿真,导入这个objcet &…

ChatGPT、Google Bard、Claude2、新BING哪一款人工智能聊天机器人适合自己

人工智能聊天机器人正在提高数无数专业人士的工作效率。下面我们就来看看目前最流行的几款强大的人工智能工具,以及它们具体如何帮助到你。 今年7月AI圈最大的动静之一便是AI初创公司Anthropic发布了其AI聊天机器人Claude最新版本——Claude2。该聊天机器人对标Open…

模板方法模式(十六)

相信自己,请一定要相信自己 上一章简单介绍了代理模式(十五), 如果没有看过, 请观看上一章 一. 模板模式 引用 菜鸟教程里面的 模板模式介绍: https://www.runoob.com/design-pattern/template-pattern.html 在模板模式(Template Pattern)…

【图解】多层感知器(MLP)

图片是一个多层感知器(MLP)的示意图,它是一种常见的神经网络模型,用于从输入到输出进行非线性映射。图片中的网络结构如下:

阿里云服务器-修改ecs操作系统,把window系统更换成Linux操作系统

其他sql格式也在更新中,可直接查看这个系列,要是没有你需要的格式,可在评论或私信我 总目录 目录-后期更新打算 hive的nvl中的子查询 总目录我这个是window,默认应该都是window,我需要改成Linux系统第一步&#xff…

huggingface datasets离线加载文件的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

测试框架pytest教程(2)-用例依赖库-pytest-dependency

对于 pytest 的用例依赖管理,可以使用 pytest-dependency 插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插…