FastDFS-Nginx - 本地搭建文件服務器同時實現在外遠程訪問「端口映射」

前言

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 目錄下

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

解壓文件

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 文件夾

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

1.5 配置 Storage

進入 / etc/fdfs 目錄

cd /etc/fdfs

修改 storage.conf

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 文件夾

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

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

接下來測試上傳文件, 這裏上傳了一張圖片到 / usr/local 目錄下, 作爲測試使用

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 做訪問下載

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

解壓 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-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 #指定文件存儲路徑

接下來將 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 目錄下

解壓,並進入解壓文件夾

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

然後編譯

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;
   }
}

啓動 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

關閉防火牆

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 搭建完成

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

向系統添加服務

sudo systemctl enable cpolar

啓動 cpolar 服務

sudo systemctl start cpolar

4. 配置公網訪問地址

成功啓動 cpolar 服務後, 我們在瀏覽器上訪問 Linux 局域網 ip 地址 + 9200 端口,登錄 cpolar web UI 管理界面。

登錄成功後,點擊左側儀表盤的隧道管理——創建隧道,創建一個 http 協議的隧道指向上面設置的 Nginx8089 端口:

點擊創建

然後打開在線隧道列表, 查看並且複製公網地址

然後打開瀏覽器, 輸入公網地址, 訪問我們上傳在 fastDFS 裏的文件, 即可遠程訪問成功

5. 固定公網地址

由於剛剛創建隧道使用的是隨機臨時地址,該地址會在 24 小時內發生變化,爲了長期和更穩定遠程訪問,我們接下來將這個公網地址配置爲固定的,

5.1 保留二級子域名

需升級至基礎套餐或以上才支持配置二級子域名, 如有下載文件的需求, 可以升級更高套餐以便獲取更大的帶寬, 提高下載速度

登錄 cpolar 官網後臺,點擊左側儀表盤的預留,找到保留二級子域名,爲 http 隧道保留一個二級子域名。

本例保留一個名稱爲 fasttest 的二級子域名。子域名保留成功後,我們將子域名複製下來,接下來需要將其配置到隧道中去。

5.2 配置二級子域名

登錄 cpolar web ui 管理界面。點擊左側儀表盤的隧道管理——隧道列表,找到需要配置二級子域名的隧道,點擊右側的編輯

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

修改完成後,點擊更新

隧道更新成功後,點擊左側儀表盤的狀態——在線隧道列表,可以看到隧道的公網地址,已經更新爲二級子域名了,將公網地址複製下來。

6. 測試訪問固定二級子域名

我們來測試一下訪問配置成功的二級子域名, 打開瀏覽器, 輸入公網地址加資源路徑, 訪問我們上傳在 fastDFS 裏的文件, 出現圖片即可遠程訪問成功。現在,我們全網唯一的私有二級子域名,就創建好了。

而且這個地址也不會再隨機變化,他是固定不變的,只要保持隧道在線,我們在外就可以通過這個公網地址,隨時隨地遠程訪問,無需公網 IP,也不用設置路由器。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ThvWKZh0Tz6sdbs6P9z5Rw