Linux系统搭建FastDFS文件服务结合内网穿透实现公网访问本地文件

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

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

前言

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

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

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

1. 本地搭建 FastDFS 文件系统

1.1 环境安装

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

shell 复制代码
yum -y install gcc-c++

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

shell 复制代码
yum -y install libevent

1.2 安装 libfastcommon

进入 local 目录

shell 复制代码
cd /usr/local

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

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

获取后,上传到local目录下

解压 libfastcommon

shell 复制代码
tar -zxvf libfastcommonV1.0.7.tar.gz

进入解压文件夹

shell 复制代码
cd libfastcommon-1.0.7/

编译

shell 复制代码
./make.sh

安装

shell 复制代码
./make.sh install

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

shell 复制代码
cp /usr/lib64/libfastcommon.so /usr/lib/

1.3 安装 FastDFS

进入 local 目录

shell 复制代码
cd /usr/local

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

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

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

解压文件

shell 复制代码
tar -zxvf FastDFS_v5.05.tar.gz

进入解压文件夹

shell 复制代码
cd FastDFS

编译

shell 复制代码
./make.sh

安装

shell 复制代码
./make.sh install

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

shell 复制代码
cd conf/

拷贝

shell 复制代码
cp * /etc/fdfs/

1.4 配置 Tracker

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

shell 复制代码
cd /etc/fdfs/

修改 tracker.conf

shell 复制代码
vim tracker.conf

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

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

shell 复制代码
mkdir /home/fastdfs

然后启动

shell 复制代码
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

设置开机启动

shell 复制代码
vim /etc/rc.d/rc.local

将运行命令行添加进文件

shell 复制代码
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

1.5 配置 Storage

进入/etc/fdfs 目录

shell 复制代码
cd /etc/fdfs

修改 storage.conf

shell 复制代码
vim storage.conf

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

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

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

创建对应 fdfs_storage 文件夹

shell 复制代码
mkdir /home/fastdfs/fdfs_storage

然后启动

shell 复制代码
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

设置开机自动启动

shell 复制代码
vim /etc/rc.d/rc.local

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

shell 复制代码
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

1.6 测试上传下载

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

修改/etc/fdfs/client.conf

shell 复制代码
vim /etc/fdfs/client.conf

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

shell 复制代码
base_path=/home/fastdfs

tracker_server=Linux局域网ip:22122

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

FastDFS 上传文件使用格式:

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

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

shell 复制代码
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png

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

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

进入 /usr/local/文件夹下

shell 复制代码
cd /usr/local/

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

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

shell 复制代码
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

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

shell 复制代码
cd fastdfs-nginx-module/src/

修改 config 文件

shell 复制代码
vim config

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

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

shell 复制代码
cp mod_fastdfs.conf /etc/fdfs/

修改 mod_FastDFS.conf 的内容:

shell 复制代码
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 #指定文件存储路径

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

shell 复制代码
cp /usr/lib64/libfdfsclient.so /usr/lib/

创建 nginx/client 目录即可

shell 复制代码
mkdir -p /var/temp/nginx/client

1.8 安装 Nginx

首先安装系列环境

shell 复制代码
yum -y install pcre pcre-devel
shell 复制代码
yum -y install zlib zlib-devel
shell 复制代码
yum -y install openssl openssl-devel

然后点击下载 Nginx 包:

nginx-1.16.1.tar.gz

上传到 root 目录下

解压,并进入解压文件夹

shell 复制代码
tar -zxvf nginx-1.16.1.tar.gz && cd nginx-1.16.

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

shell 复制代码
./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

然后编译

shell 复制代码
make

安装

shell 复制代码
make install

1.9 配置 Nginx

修改 Nginx 配置文件

shell 复制代码
vim /usr/local/nginx/conf/nginx.conf

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

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

        location /group1/M00/{
                ngx_fastdfs_module;
        }
}

启动 Nginx

shell 复制代码
/usr/local/nginx/sbin/nginx

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

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

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

shell 复制代码
mkdir /var/run/nginx

设置开机自动启动。

shell 复制代码
vim /etc/rc.d/rc.local

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

shell 复制代码
/usr/local/nginx/sbin/nginx

关闭防火墙

shell 复制代码
service iptables stop

设置防火墙不自动启动

shell 复制代码
chkconfig iptables off

2. 局域网测试访问 FastDFS

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

shell 复制代码
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png

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

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

3. 安装 cpolar 内网穿透

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

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

  • 使用一键脚本安装命令
shell 复制代码
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • token 认证

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

shell 复制代码
cpolar authtoken xxxxxxx
  • 向系统添加服务
shell 复制代码
sudo systemctl enable cpolar
  • 启动 cpolar 服务
shell 复制代码
sudo systemctl start cpolar

4. 配置公网访问地址

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

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

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

点击创建

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

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

5. 固定公网地址

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

5.1 保留二级子域名

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

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

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

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

5.2 配置二级子域名

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

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

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

修改完成后,点击更新

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

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

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

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

觉得有用的话点个赞 👍🏻 呗。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关推荐
方竞16 分钟前
Linux空口抓包方法
linux·空口抓包
sun0077001 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
海岛日记1 小时前
centos一键卸载docker脚本
linux·docker·centos
oi772 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
AttackingLin2 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
吃肉不能购3 小时前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫3 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920113 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器