FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」
作者:mmseoamin日期:2023-12-13

文章目录

  • 前言
  • 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目录下

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679321808236,第1张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322527568,第2张

        解压文件

        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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679321890447,第3张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679321943356,第4张

        1.5 配置Storage

        进入/etc/fdfs目录

        cd /etc/fdfs
        

        修改storage.conf

        vim storage.conf
        

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322281423,第5张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322153239,第6张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322199689,第7张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,image-20230319225348678,第8张

        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
        

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322420123,第9张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322482853,第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做访问下载

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322601788,第11张

        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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322637070,第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/,然后保存退出

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679322770876,第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 #指定文件存储路径

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679405651550,第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包:

        nginx-1.16.1.tar.gz

        上传到root目录下

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679323002737,第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
        

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679320271108,第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;
                }
        }
        

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679406356346,第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
        

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679321237969,第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
        

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679323425917,第19张

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

        FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679406429350,第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
            

            FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,20230206171248,第21张

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

                4. 配置公网访问地址

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

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

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

                  点击创建

                  FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679406828417,第22张

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

                  FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679406894080,第23张

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

                  FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679406972587,第24张

                  5. 固定公网地址

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

                  5.1 保留二级子域名

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

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

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

                    FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679407261443,第25张

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

                    FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679407306636,第26张

                    5.2 配置二级子域名

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

                    FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679407950343,第27张

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

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

                      修改完成后,点击更新

                      FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679407459593,第28张

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

                      FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679407508347,第29张

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

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

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

                      FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」,1679407663302,第30张

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