前言
FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。
配備一臺(tái)公網(wǎng)服務(wù)器作為文件上傳下載,花費(fèi)資源和開銷比較大,如果在本地搭建FastDFS服務(wù),只把上傳后的文件通過(guò)cpolar內(nèi)網(wǎng)端口轉(zhuǎn)發(fā)工具將文件配置可通過(guò)互聯(lián)網(wǎng)訪問,極大了減少服務(wù)器費(fèi)用及開銷,本文介紹詳細(xì)搭建FastDFS教程,并結(jié)合Nginx+cpolar工具實(shí)現(xiàn)遠(yuǎn)程訪問文件。
1. 本地搭建FastDFS文件系統(tǒng)
1.1 環(huán)境安裝
由于fastDFS是由c語(yǔ)言編寫,所以我們需要安裝gcc
?
yum?-y?install?gcc-c++?
?
FastDFS依賴libevent庫(kù),需要安裝。執(zhí)行如下命令:
?
yum?-y?install?libevent
?
1.2 安裝libfastcommon
進(jìn)入local目錄
?
cd?/usr/local
?
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS運(yùn)行所需要的一些基礎(chǔ)庫(kù)。
獲取后,上傳到local目錄下
解壓libfastcommon
?
tar?-zxvf?libfastcommonV1.0.7.tar.gz
?
進(jìn)入解壓文件夾
?
cd?libfastcommon-1.0.7/
?
編譯
?
./make.sh
?
安裝
?
./make.sh?install
?
libfastcommon安裝好后會(huì)自動(dòng)將庫(kù)文件拷貝至/usr/lib64下,由于FastDFS程序引用usr/lib目錄所以需要將/usr/lib64下的庫(kù)文件拷貝至/usr/lib下。
?
cp?/usr/lib64/libfastcommon.so?/usr/lib/
?
1.3 安裝FastDFS
進(jìn)入local目錄
?
cd?/usr/local
?
點(diǎn)擊下列地址,可獲取下載FastDFS_v5.05.tar.gz文件:
下載文件后,上傳FastDFS_v5.05.tar.gz到/usr/local/
解壓文件
?
tar?-zxvf?FastDFS_v5.05.tar.gz?
?
進(jìn)入解壓文件夾
?
cd?FastDFS
?
編譯
?
./make.sh?
?
安裝
?
./make.sh?install
?
安裝成功后,將安裝目錄下的conf下的文件拷貝到/etc/fdfs/下
?
cd?conf/
?
拷貝
?
cp?*?/etc/fdfs/
?
1.4 配置Tracker
接下來(lái)進(jìn)行配置,安裝成功后進(jìn)入/etc/fdfs目錄
?
cd?/etc/fdfs/
?
修改tracker.conf
?
vim?tracker.conf
?
把base_path=/home/yuqing/fastdfs改為base_path=/home/fastdfs
編輯后保存退出,然后創(chuàng)建一個(gè)對(duì)應(yīng)的fastdfs文件夾
?
mkdir?/home/fastdfs
?
然后啟動(dòng)
?
/usr/bin/fdfs_trackerd?/etc/fdfs/tracker.conf?restart
?
設(shè)置開機(jī)啟動(dòng)
?
vim?/etc/rc.d/rc.local
?
將運(yùn)行命令行添加進(jìn)文件
?
/usr/bin/fdfs_trackerd?/etc/fdfs/tracker.conf?restart
?
1.5 配置Storage
進(jìn)入/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
繼續(xù)修改,設(shè)置tracker服務(wù)器:IP,tracker_server=Linux局域網(wǎng)ip:22122 ,設(shè)置好后保存退出
創(chuàng)建對(duì)應(yīng)fdfs_storage文件夾
?
mkdir?/home/fastdfs/fdfs_storage
?
然后啟動(dòng)
?
/usr/bin/fdfs_storaged?/etc/fdfs/storage.conf?restart
?
設(shè)置開機(jī)自動(dòng)啟動(dòng)
?
vim?/etc/rc.d/rc.local
?
將運(yùn)行命令行添加到文件,然后保存
?
/usr/bin/fdfs_storaged?/etc/fdfs/storage.conf?restart
?
1.6 測(cè)試上傳下載
FastDFS安裝成功可通過(guò)/usr/bin/fdfs_test命令測(cè)試上傳、下載等操作。
修改/etc/fdfs/client.conf
?
vim?/etc/fdfs/client.conf
?
修改如下內(nèi)容,然后保存:
?
base_path=/home/fastdfs tracker_server=Linux局域網(wǎng)ip:22122
?
接下來(lái)測(cè)試上傳文件,這里上傳了一張圖片到/usr/local目錄下,作為測(cè)試使用
FastDFS上傳文件使用格式:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload+ 上傳文件的路徑
然后按照格式,測(cè)試將test23.png圖片上傳到FastDFS中
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test23.png
執(zhí)行后,我們可以看到返回地址信息,表示成功,但是目前還訪問不了,需要結(jié)合Nginx做訪問下載
1.7 與Nginx整合
點(diǎn)擊下載下面鏈接下載fastdfs-nginx-module_v1.16:
進(jìn)入 /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
?
進(jìn)入src,然后編輯配置文件
?
cd?fastdfs-nginx-module/src/
?
修改config文件
?
vim?config
?
修改這三個(gè)位置,將里面原本是/usr/local/的路徑改為/usr/,然后保存退出
然后將FastDFS-nginx-module/src下的mod_FastDFS.conf拷貝至/etc/fdfs/下
?
cp?mod_fastdfs.conf?/etc/fdfs/
?
修改mod_FastDFS.conf的內(nèi)容:
?
vim?/etc/fdfs/mod_fastdfs.conf
?
修改內(nèi)容如下:
?
base_path=/home/fastdfs tracker_server=Linux局域網(wǎng)ip地址:22122 url_have_group_name=true?#url中包含group名稱 store_path0=/home/fastdfs/fdfs_storage?#指定文件存儲(chǔ)路徑
?
接下來(lái)將libfdfsclient.so拷貝至/usr/lib下
?
cp?/usr/lib64/libfdfsclient.so?/usr/lib/
?
創(chuàng)建nginx/client目錄即可
?
mkdir?-p?/var/temp/nginx/client
?
1.8 安裝Nginx
首先安裝系列環(huán)境
?
yum?-y?install?pcre?pcre-devel?? yum?-y?install?zlib?zlib-devel?? yum?-y?install?openssl?openssl-devel
?
然后點(diǎn)擊下載Nginx包:
上傳到root目錄下
解壓,并進(jìn)入解壓文件夾
?
tar?-zxvf?nginx-1.16.1.tar.gz?&&?cd?nginx-1.16.
?
添加FastDFS-nginx-module模塊,執(zhí)行以下命令:
?
./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;#這里需要使用你本機(jī)的局域網(wǎng)ip ???location?/group1/M00/{ ???????????ngx_fastdfs_module; ???} }
?
啟動(dòng)Nginx
?
/usr/local/nginx/sbin/nginx?
?
如果啟動(dòng)nginx出現(xiàn)以下錯(cuò)誤:
nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
可以執(zhí)行如下命令,然后再次啟動(dòng):
?
mkdir?/var/run/nginx
?
設(shè)置開機(jī)自動(dòng)啟動(dòng)。
?
vim?/etc/rc.d/rc.local
?
將運(yùn)行命令行添加進(jìn)文件,然后保存退出:
?
/usr/local/nginx/sbin/nginx
?
關(guān)閉防火墻
?
service?iptables?stop
?
設(shè)置防火墻不自動(dòng)啟動(dòng)
?
chkconfig?iptables?off
?
2. 局域網(wǎng)測(cè)試訪問FastDFS
然后按照格式,測(cè)試將上面我們上傳的test23.png圖片上傳到FastDFS中
?
/usr/bin/fdfs_test?/etc/fdfs/client.conf?upload?/usr/local/test23.png
?
執(zhí)行后,我們可以看到返回地址信息,表示成功
然后使用上面的地址,在瀏覽器訪問,即可看到我們上傳的圖片,fastDFS搭建完成
?
3. 安裝cpolar內(nèi)網(wǎng)穿透
上面我們?cè)诒镜豅inux虛擬機(jī)安裝了fastDFS分布式文件服務(wù),下面我們安裝cpolar內(nèi)網(wǎng)穿透工具,通過(guò)cpolar的http公網(wǎng)地址,我們可以很容易遠(yuǎn)程也可以訪問fastDFS里面上傳的文件,而無(wú)需自己注冊(cè)域名購(gòu)買云服務(wù)器.下面是安裝cpolar內(nèi)網(wǎng)穿透步驟
使用一鍵腳本安裝命令
?
curl?-L?https://www.cpolar.com/static/downloads/install-release-cpolar.sh?|?sudo?bash
?
token認(rèn)證
登錄cpolar官網(wǎng)后臺(tái),點(diǎn)擊左側(cè)的驗(yàn)證,查看自己的認(rèn)證token,之后將token貼在命令行里:
?
cpolar?authtoken?xxxxxxx
?
向系統(tǒng)添加服務(wù)
?
sudo?systemctl?enable?cpolar
?
啟動(dòng)cpolar服務(wù)
?
sudo?systemctl?start?cpolar
?
4. 配置公網(wǎng)訪問地址
成功啟動(dòng)cpolar服務(wù)后,我們?cè)跒g覽器上訪問Linux局域網(wǎng)ip地址+9200端口,登錄cpolar web UI管理界面。
登錄成功后,點(diǎn)擊左側(cè)儀表盤的隧道管理——?jiǎng)?chuàng)建隧道,創(chuàng)建一個(gè)http協(xié)議的隧道指向上面設(shè)置的Nginx8089端口:
隧道名稱:可自定義,注意不要與已有的隧道名稱重復(fù)
協(xié)議:http
本地地址:8089
域名類型:免費(fèi)選擇隨機(jī)域名
地區(qū):選擇China VIP
點(diǎn)擊創(chuàng)建
然后打開在線隧道列表,查看并且復(fù)制公網(wǎng)地址
然后打開瀏覽器,輸入公網(wǎng)地址,訪問我們上傳在fastDFS里的文件,即可遠(yuǎn)程訪問成功
?
5. 固定公網(wǎng)地址
由于剛剛創(chuàng)建隧道使用的是隨機(jī)臨時(shí)地址,該地址會(huì)在24小時(shí)內(nèi)發(fā)生變化,為了長(zhǎng)期和更穩(wěn)定遠(yuǎn)程訪問,我們接下來(lái)將這個(gè)公網(wǎng)地址配置為固定的,
5.1 保留二級(jí)子域名
需升級(jí)至基礎(chǔ)套餐或以上才支持配置二級(jí)子域名,如有下載文件的需求,可以升級(jí)更高套餐以便獲取更大的帶寬,提高下載速度
登錄cpolar官網(wǎng)后臺(tái),點(diǎn)擊左側(cè)儀表盤的預(yù)留,找到保留二級(jí)子域名,為http隧道保留一個(gè)二級(jí)子域名。
地區(qū):選擇服務(wù)器地區(qū)
名稱:填寫您想要保留的二級(jí)子域名(可自定義)
描述:即備注,可自定義填寫
本例保留一個(gè)名稱為fasttest的二級(jí)子域名。子域名保留成功后,我們將子域名復(fù)制下來(lái),接下來(lái)需要將其配置到隧道中去。
5.2 配置二級(jí)子域名
登錄cpolar web ui管理界面。點(diǎn)擊左側(cè)儀表盤的隧道管理——隧道列表,找到需要配置二級(jí)子域名的隧道,點(diǎn)擊右側(cè)的編輯
修改隧道信息,將二級(jí)子域名配置到隧道中:
域名類型:改為選擇二級(jí)子域名
Sub Domain:填寫我們剛剛所保留的二級(jí)子域名(本例為fasttest)
修改完成后,點(diǎn)擊更新
隧道更新成功后,點(diǎn)擊左側(cè)儀表盤的狀態(tài)——在線隧道列表,可以看到隧道的公網(wǎng)地址,已經(jīng)更新為二級(jí)子域名了,將公網(wǎng)地址復(fù)制下來(lái)。
6. 測(cè)試訪問固定二級(jí)子域名
我們來(lái)測(cè)試一下訪問配置成功的二級(jí)子域名,打開瀏覽器,輸入公網(wǎng)地址加資源路徑,訪問我們上傳在fastDFS里的文件,出現(xiàn)圖片即可遠(yuǎn)程訪問成功。現(xiàn)在,我們?nèi)W(wǎng)唯一的私有二級(jí)子域名,就創(chuàng)建好了。
而且這個(gè)地址也不會(huì)再隨機(jī)變化,他是固定不變的,只要保持隧道在線,我們?cè)谕饩涂梢酝ㄟ^(guò)這個(gè)公網(wǎng)地址,隨時(shí)隨地遠(yuǎn)程訪問,無(wú)需公網(wǎng)IP,也不用設(shè)置路由器。
?
評(píng)論
查看更多