fastdfs安裝配置(整合nginx和fastdfs)

fastdfs安裝配置、

一、簡介

1.1 環境

名稱 資源地址 介紹
fastdfs https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz 文件服務器
nginx http://nginx.org/download/nginx-1.11.8.tar.gz 反向代理服務器
libfastcommon https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
fastdfs-nginx-module http://jaist.dl.sourceforge.NET/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz nginx插件,用來整合fastdfs

資源我全部下載到/opt/resources/目錄下,解壓到/opt/目錄下

1.2 Fastdfs架構

FastDFS包括Tracker server和Storage server, 客戶端請求Tracker server進行文件上傳、下載,通過Tracker server調度最終由Storage server完成文件上傳和下載。 Tracker server 的角色類似於dubbo的registry和moniter、並不直接提供服務、而是storage server啓動時註冊到tracker server, client通過tracker server連接storage server, client不知道自己連接的是哪一臺storage server, 連接完成後、上傳和下載是client直接請求storage server, 可類比於 dubbo consumer通過registry連接dubbo service ,但連接完成之後是consumer和service直接通信
在這裏插入圖片描述

  • 文件上傳流程
    在這裏插入圖片描述

  • 文件下載流程
    在這裏插入圖片描述

二、Fastdfs安裝配置

2.1 安裝libfastcommon

cd /opt/resources
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
//修改名字
mv V1.0.7 libfastcommon-1.0.7.tar.gz
tar -zxvf libfastcommon-1.0.7.tar.gz -C /opt/
cd /opt/libfastcommon-1.0.7/
//編譯
./make.sh
//安裝
./make.sh install

另外:
設置幾個軟鏈接、方便後續擴展nginx時使用:
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

2.2 tracker安裝

//下載資源到/opt/resources
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
mv V5.05 FastDFS_v5.05.tar.gz
//解壓
tar -zxvf FastDFS_v5.05.tar.gz -C /opt
cd /opt/fastdfs-5.05/
//編譯
./make.sh
//安裝
./make.sh install
  • 修改tracker配置文件
安裝完成後、在/etd/fdfs下有tracker的配置文件
複製一份:cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
mkdir -p /usr/local/fastdfs/  (此處可以根據自己的情況和習慣存放)
vi /etc/fdfs/tracker.conf
------------------------------------------------------------
//調整base_path
base_path= /usr/local/fastdfs/
------------------------------------------------------------

//啓動 tracker 服務
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
//重啓 tracker 服務
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
//查看是否有 tracker 進程
ps aux | grep tracker

2.3 storage(存儲節點)服務部署

一般 storage 服務我們會單獨部署到一臺服務器上,但是這裏爲了方便(我只有一臺服務器)就安裝在同一臺上了
如果單獨部署到一臺服務器上、上邊tracker的部署步驟重新來一遍即可
這裏是同一臺server、只修改配置

//創建目錄
mkdir  /usr/local/fastdfs/storage/
//複製一份配置
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vim /etc/fdfs/storage.conf
------------------------------------------------------------
base_path= /usr/local/fastdfs/

store_path0= /usr/local/fastdfs/storage/

//圖片實際存放路徑,如果有多個,這裏可以有多行(要創建多個目錄):
//store_path0=/opt/fastdfs/storage/
//store_path1=/opt/fastdfs/storage1/

//是用來配置目錄個數的、如果只是練習不做實際存儲服務、可改小一點兒
subdir_count_per_path=256 

//指定 tracker 服務器的 IP 和端口
//(39.96.46.193)是你的server服務器ip、本機也可以使用(0.0.0.0:22122)、記得不可使用127.0.0.1
tracker_server=39.96.46.193:22122 
------------------------------------------------------------

如果用的是阿里雲服務器,需要配置安全組開放22122、23000端口

  • 啓動 storage 服務
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf,首次啓動會很慢,因爲它在創建預設存儲文件的目錄
//重啓 storage 服務
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
  • 查看storage tracker進程
ps aux | grep fdfs
------------------------------------------------------------------------------------
[root@iZ2ze6qralnaqhb67athsaZ fdfs]# ps aux | grep fdfs
root      3083  0.0  0.1 144548  2576 ?        Sl   Mar21   0:11 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
root      3484  0.0  3.5 278252 66620 ?        Sl   Mar21   0:38 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
root     13833  0.0  0.0 112704   972 pts/1    S+   16:48   0:00 grep --color=auto fdfs
-----------------------------------------------------------------------------------
  • 查看tracker是否可以正常與storage通信
fdfs_monitor /etc/fdfs/storage.conf
-----------------------------------------------------------------------------------
Storage 1:
        id = 39.96.46.193
        ip_addr = 39.96.46.193  ACTIVE --若看到ACTIVE這個字樣、代表可以正常通信
-----------------------------------------------------------------------------------
查看storage和tracker是否正常啓動:

2.4 配置fdfs_client

複製一份配置:cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf
-----------------------------------------------------------------------------------
base_path= /usr/local/fastdfs/

//指定 tracker 服務器的 IP 和端口
tracker_server=39.96.46.193:22122
log_level=info
-----------------------------------------------------------------------------------
// 文件上傳測試
echo asasasa > ~/test.txt
fdfs_test /etc/fdfs/client.conf upload ~/test.txt 
可以看到如下圖所示、就是上傳成功了

在這裏插入圖片描述
上傳成功之後也無法根據url地址訪問資源,只有整合好nginx之後才能訪問

2.5 安裝nginx以及插件整合fastdfs

如果Nginx已經安裝過,則僅需要fastdfs-nginx-module_v1.16.tar.gz
cd /opt/resources
//下載nginx
wget http://nginx.org/download/nginx-1.11.8.tar.gz
//下載Nginx插件
wget http://jaist.dl.sourceforge.NET/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
//解壓 Nginx 模塊:
tar zxvf fastdfs-nginx-module_v1.16.tar.gz -C /opt
//進入解壓後的目錄 
cd /opt/fastdfs-nginx-module
vim src/config
-----------------------------------------------------------------------------------
修改:去掉local、因爲實際安裝fastdfs時、是放到了/usr/include下
 - CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
-> CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

 -  CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
-> CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
-----------------------------------------------------------------------------------
//回到nginx的解壓目錄
cd /opt/nginx-1.11.8
sudo ./configure  --prefix=/usr/local/nginx --sbin-path=/usr/local/bin/nginx --conf-path=/usr/local/etc/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid --lock-path=/usr/local/var/run/nginx.lock --error-log-path=/usr/local/var/log/nginx/^Cror.log --http-log-path=/usr/local/var/log/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-file-aio --add-module=/opt/fastdfs-nginx-module/src
//編譯
make  
//安裝
make install (若是有權限的賬戶、可以不用加sudo、我使用的是普通用戶)
  • 整合nginx和fastdfs插件
//copy fastdfs-nginx-module的配置文件到 /etc/fdfs下、方便查找
cp /opt/fastdfs-nginx-module/src/mod_fdfs.conf /etc/fdfs
vi /etc/fdfs/mod_fdfs.conf
-----------------------------------------------------------------------------------
base_path=/usr/local/fastdfs
tracker_server=39.96.46.193:22122
url_have_group_name = true
store_path0=/usr/local/fastdfs/storage
-----------------------------------------------------------------------------------
  • 配置Nginx
vi /usr/local/nginx/conf/nginx.conf
-----------------------------------------------------------------------------------
server {
        listen       80;
        server_name  localhost;
        ...
         # 配置fastdfs的訪問路徑
        location /group1/M00 {
            ngx_fastdfs_module;
        }
        ...
    }
    -----------------------------------------------------------------------------------
//啓動nginx
/usr/local/nginx/sbin/nginx 
// 重啓
/usr/local/nginx/sbin/nginx -s reload
// 停止
/usr/local/nginx/sbin/nginx -s stop

這裏我啓動nginx之後,ps -ef|grep nginx只查看master進程,/usr/local/nginx/logs/error.log查看日誌,報錯如下:

ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
[2020-03-21 15:54:32] ERROR - file: /opt/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
ERROR - file: shared_func.c, line: 960, open file /etc/fdfs/mime.types fail, errno: 2, error info: No such file or directory
2020/03/21 16:04:46 [alert] 778#0: worker process 2190 exited with fatal code 2 and cannot be respawned
/opt/fastdfs-5.05/conf

解決方法:
cp /opt/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp /opt/fastdfs-5.05/confhttp.conf /etc/fdfs/

之後重啓所有服務
  • 用瀏覽器訪問前面上傳的文件
    在這裏插入圖片描述
    至此,安裝配置完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章