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 端口:
-
隧道名稱:可自定義,注意不要與已有的隧道名稱重複
-
協議:http
-
本地地址:8089
-
域名類型:免費選擇隨機域名
-
地區:選擇 China VIP
點擊創建
然後打開在線隧道列表, 查看並且複製公網地址
然後打開瀏覽器, 輸入公網地址, 訪問我們上傳在 fastDFS 裏的文件, 即可遠程訪問成功
5. 固定公網地址
由於剛剛創建隧道使用的是隨機臨時地址,該地址會在 24 小時內發生變化,爲了長期和更穩定遠程訪問,我們接下來將這個公網地址配置爲固定的,
5.1 保留二級子域名
需升級至基礎套餐或以上才支持配置二級子域名, 如有下載文件的需求, 可以升級更高套餐以便獲取更大的帶寬, 提高下載速度
登錄 cpolar 官網後臺,點擊左側儀表盤的預留,找到保留二級子域名,爲 http 隧道保留一個二級子域名。
-
地區:選擇服務器地區
-
名稱:填寫您想要保留的二級子域名(可自定義)
-
描述:即備註,可自定義填寫
本例保留一個名稱爲 fasttest 的二級子域名。子域名保留成功後,我們將子域名複製下來,接下來需要將其配置到隧道中去。
5.2 配置二級子域名
登錄 cpolar web ui 管理界面。點擊左側儀表盤的隧道管理——隧道列表,找到需要配置二級子域名的隧道,點擊右側的編輯
修改隧道信息,將二級子域名配置到隧道中:
-
域名類型:改爲選擇二級子域名
-
Sub Domain:填寫我們剛剛所保留的二級子域名(本例爲 fasttest)
修改完成後,點擊更新
隧道更新成功後,點擊左側儀表盤的狀態——在線隧道列表,可以看到隧道的公網地址,已經更新爲二級子域名了,將公網地址複製下來。
6. 測試訪問固定二級子域名
我們來測試一下訪問配置成功的二級子域名, 打開瀏覽器, 輸入公網地址加資源路徑, 訪問我們上傳在 fastDFS 裏的文件, 出現圖片即可遠程訪問成功。現在,我們全網唯一的私有二級子域名,就創建好了。
而且這個地址也不會再隨機變化,他是固定不變的,只要保持隧道在線,我們在外就可以通過這個公網地址,隨時隨地遠程訪問,無需公網 IP,也不用設置路由器。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ThvWKZh0Tz6sdbs6P9z5Rw