FastDFS+Nginx搭建本地服务器并实现远程访问

news2024/11/25 22:36:16

文章目录

  • 前言
  • 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/fastdfs

tracker_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端口,我们改成8089
        server_name  192.168.59.133;#这里需要使用你本机的局域网ip

        location /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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.预备知识-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 数据操作数据预处理一、N维数组样例二、创建数组三、访问元素四、数据操作D2L注意点五、数据预处理D2L注意点六、QA No.2 线性代数一、标量二、向量1、基本操作2、空间表示3、乘法 三、矩阵1、基本操作2、乘法3、空间表…

uniapp 微信小程ios端键盘弹起后导致页面无法滚动

项目业务逻辑和出现的问题整理 新增页面 用户可以主动添加输入文本框 添加多了就会导致当前页面出现滚动条,这就导致ios端滚动页面的时候去点击输入框键盘抬起再关闭的时候去滚动页面发现页面滚动不了(偶尔出现),经过多次测试发现是键盘抬起的时候 主动向上滑动 100%出现这种问…

[PyTorch][chapter 58][强化学习-2-有模型学习2]

前言: 前面我们讲了一下策略评估的原理,以及例子. 强化学习核心是找到最优的策略,这里 重点讲解两个知识点: 策略改进 策略迭代与值迭代 最后以下面环境E 为例,给出Python 代码 。 目录: 1: 策略改进 2&…

计算协方差

例如,有两组数据: 身高x(厘米) 体重y(公斤) 194 87 183 78 175 71 平均 184 78.7 现在要计算x和y的协方差。 手工计算 用excel计算 ​​​​​​​

Security ❀ HTTP协议常见DOS攻击详解

文章目录 1. 协议基础概述2. HTTP协议报文2.1 HTTP Request 请求包2.2 HTTP Response 应答包 3. HTTP GET Flood3.1. 攻击原理3.2. 防护方法 4. HTTP POST Flood4.1. 攻击原理4.2. 防护方法 5. 慢速CC攻击5.1. 攻击原理5.2. 防护方法 6. 总结 1. 协议基础概述 HTTP - HyperTex…

解决Hbulider 按F11不能退出免打扰模式

原因:F11快捷键并不是退出免打扰模式,需要覆盖配置 右侧如下图👇 [{"key":"ctrlf11","command":"workbench.action.distanceFreeMode"} ]

WheatA 轻量级生态数据软件

无论是在工作还是上学期间,大家想要做一个科研项目或者市场调查时,往往需要大量的数据用于分析总结,这时获得优质的数据就显得额外重要,数据的优劣往往决定了项目结果的好坏。数据来源的主要渠道主要有两种:无非是去数…

CTF-Reverse---VM虚拟机逆向[HGAME 2023 week4]vm题目复现【详解】

文章目录 前言0x1[HGAME 2023 week4]vm提取汇编指令mov指令push指令&pop指令运算操作cmp指令jmp指令je 和 jne exp 前言 没有前言。终于搞定第二题了。费劲是真的费。 题目在nssctf上有。 这一题写完才看到有提示,是关于构建结构体的,下次试试。 0x…

LiveNVR监控流媒体平台局域网Onvif/RTSP/SDK等方式接入监控视频后转GB28181/GB35114级联输出,上级平台无法播放如何抓包分析

1、第一步:抓包工具准备 1.1、Linux 使用 tcpdump 进行抓包,如果系统无此命令,自行安装 1.2、windows 下载安装 wireshark 进行抓包 2、第二步:找到上级平台ip 在基础配置里面GB28181级联配置中SIP服务IP 3、第三步&#…

重新理解B面供应链:在轻创业的潮流里

中国新式供应链正在成型。 在这个由于年轻的消费需求驱动的想法、AI大模型能力、严苛清晰的供应链、工厂图谱一共构成的链条上,越来越多的新创业和新产业模型都正在被加速成型,并真实转化为新的工业生产力。 作者|史圣园 编辑|皮爷 出品|产业家 …

Android 控件背景实现发光效果

主要实现的那种光晕效果&#xff1a;中间亮&#xff0c;四周逐渐变淡的。 这边有三种发光效果&#xff0c;先上效果图。 第一种、圆形发光体 实现代码&#xff1a;新建shape_light.xml&#xff0c;导入以下代码。使用时&#xff0c;直接给view设置为background。 <?xml …

IT开发怕失败?买个低代码搭建属于自己应用

目录 一、驱动低代码流行的主要几个特性 01、低代码缩短了开发时间 02、低代码允许平滑协作 03、低代码在云端和本地都可运行 二、低代码究竟好不好用 三、源码全交付的开发平台 01、高性能、高拓展 02、功能丰富&#xff0c;满足通用场景 03、私有化部署 04、部署方式 05、多数…

PFMEA详解结构分析——Sun FMEA软件

FMEA从1949年诞生到今天已经发生过多次更新&#xff0c;最新版本是2019年6月发布的《AIAG VDA FMEA手册》。新手册借鉴了AIAG的方框图、参数图、流程图等工具的运用&#xff0c;也借鉴了VDA的五步过程导向法&#xff0c;并在此基础上头尾各增加一步&#xff0c;形成了FMEA七步法…

【强化学习】14 —— A3C(Asynchronous Advantage Actor Critic)

A3C算法&#xff08; Asynchronous Methods for Deep Reinforcement Learning&#xff09;于2016年被谷歌DeepMind团队提出。A3C是一种非常有效的深度强化学习算法&#xff0c;在围棋、星际争霸等复杂任务上已经取得了很好的效果。接下来&#xff0c;我们先从A3C的名称入手&…

视频号的视频怎么保存到相册,第三方工具快速下载保存!

视频号是目前非常火爆的短视频平台之一&#xff0c;许多用户在上面发布了各种精彩的视频内容。然而&#xff0c;很多人都想把视频保存到自己的相册中&#xff0c;以便随时欣赏和分享。那么&#xff0c;如何将视频号的视频保存到相册呢&#xff1f; 我们需要了解一个专注于视频…

Nacos注册中心--适合小白体制

认识和安装NacosNacos快速入门Nacos服务分级存储模型Nacos环境隔离 代码获取&#xff1a;1693905917/springCloud: springCloud学习 (github.com) 认识和安装Nacos 认识Nacos Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&…

voronoi diagram(泰森多边形) 应用 - Panda Preserve

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 背景知识 voronoi 提出 voronoi 图一开始是由荷兰气候学家AHThiessen提出&#xff0c;是用来计算区域内的降雨量。 由于气象塔是离散放置的&#xff0c;该气候学家就…

大促来袭 线下门店查价同样重要

都说双十一是电商的狂欢&#xff0c;这话没错&#xff0c;但线下门店同样也会利用这波热度&#xff0c;做促销引流量&#xff0c;自然也会出现不同的低价&#xff0c;不管是线上还是线下低价&#xff0c;都会对各自的生意有所影响&#xff0c;当然也不是禁止低价&#xff0c;是…

C++17对if/switch的增强

C17之前不允许在if/switch语句中定义一个临时变量 但在C17之后可以了

Rocky9 上安装 redis-dump 和redis-load 命令

一、安装依赖环境 1、依赖包 dnf -y install perl gcc gcc-c zlib-devel2、编译openssl 1.X ### 下载编译 wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar xf openssl-1.1.1t.tar.gz cd openssl-1.1.1t ./config --prefix/usr/local/openssl make make ins…