FastDFS 單機部署指南


簡介

FastDFS是一個開源的分布式文件系統,官方介紹有詳細的介紹,不多贅述。本文主要是FastDFS的搭建及采坑指南。

Step By Step Guide

系統

  • 阿里雲ECS Ubuntu 16.04

編譯環境

按需安裝,這里是針對新的ubuntu系統

$ apt-get install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim

磁盤目錄

說明 位置
所有安裝包 /usr/local/src
數據存儲位置 /data/dfs/
$ mkdir /data/dfs #創建數據存儲目錄(對於阿里雲ECS,最好建立在數據盤上,是用來存放文件的)
$ cd /usr/local/src #切換到安裝目錄准備下載安裝包

安裝libfatscommon

$ wget https://github.com/happyfish100/libfastcommon/archive/master.zip
$ unzip master.zip
$ cd libfastcommon-1.0.39/
$ ./make.sh && ./make.sh install #編譯安裝

安裝FastDFS

$ cd ../ #返回上一級目錄
$ wget https://github.com/happyfish100/fastdfs/archive/master.zip
$ unzip master.zip
$ cd fastdfs-master/
$ ./make.sh && ./make.sh install #編譯安裝
#配置文件准備
$ cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
$ cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
$ cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客戶端文件,測試用
$ cp /usr/local/src/fastdfs-master/conf/http.conf /etc/fdfs/ #供nginx訪問使用
$ cp /etc/nginx/mime.types /etc/fdfs/ #供nginx訪問使用

安裝fastdfs-nginx-module

官網的文檔,是針對沒有安裝過Nginx的機器,重新編譯了一遍Nginx,把module直接編譯進Nginx了。但是針對已經安裝Nginx的服務器來說,顯然是不好的。

根據Nginx官方文檔-編譯第三方動態模塊,編譯了fastdfs-nginx-module,以供已存在的Nginx使用。

我已經編譯好了fastdfs-nginx-module,可以直接下載,並跳到加載並使用模塊,如果想知其所以然,可以往下看。

准備fastdfs-nginx-module源碼包

$ cd ../ #返回上一級目錄
$ wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
$ unzip master.zip

獲取對應版本的Nginx源碼包

$ nginx -v # 確認服務器的Nginx版本
nginx version: nginx/1.14.2
$ wget http://nginx.org/download/nginx-1.14.2.tar.gz
$ tar -xzvf nginx-1.14.2.tar.gz

編譯動態模塊

$ cd nginx-1.14.2/
$ ./configure --with-compat --add-dynamic-module=/usr/local/src/fastdfs-nginx-module-master/src
$ make modules

將模塊庫(.so文件)復制到/etc/nginx/modules

$ cp ngx_http_fastdfs_module.so /etc/nginx/modules/

加載並使用模塊

Tips: 要將模塊加載到Nginx,在nginx.conf文件開頭添加load_module命令

$ vim /etc/nginx/nginx.conf
# 添加如下命令
load_module modules/ngx_http_fastdfs_module.so;
# 保存退出

添加FastDFS配置使模塊生效

$ vim /etc/nginx/conf.d/fastdfs.conf
# 添加如下配置
server {
    listen 8888;    ## 該端口為storage.conf中的http.server_port相同
    server_name {your_domain};
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

單機部署

這里只描述下單機環境的部署方式,集群在官方文檔有,沒有實際使用過。

tracker配置

$ vim /etc/fdfs/tracker.conf
# 建議修改以下內容
bind_addr={你的內網IP}
base_path=/data/dfs # 建議修改為數據盤位置
# 可選修改
port=22122  # tracker服務器端口

storage配置

$ vim /etc/fdfs/storage.conf
# 建議修改
base_path=/data/dfs  # 數據和日志文件存儲根目錄(建議修改為數據盤位置)
store_path0=/data/dfs  # 第一個存儲目錄(建議修改為數據盤位置)
tracker_server={tracker.bind_addr}:{tracker.port}  # tracker服務器IP和端口
http.server_port=8888  # http訪問文件的端口(默認8888,看情況修改,和nginx中保持一致)
# 可選修改
port=23000  # storage服務端口(默認23000,一般不修改)

client測試

$ vim /etc/fdfs/client.conf
# 建議修改
base_path=/data/dfs
tracker_server={tracker.bind_addr}:{tracker.port}  # tracker服務器IP和端口
# 保存后測試
$ fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.14.2.tar.gz
group1/M00/00/00/CgoKvlyUmi-AMVKDAA9-WL9wzEw.tar.gz # 下載時通過該ID下載
# 返回ID表示成功 如:group1/M00/00/00/xx.tar.gz

配置nginx訪問

vim /etc/fdfs/mod_fastdfs.conf
# 建議修改
tracker_server={tracker.bind_addr}:{tracker.port}  # tracker服務器IP和端口
url_have_group_name=true
store_path0=/data/dfs
# 修改完保存
$ nginx -s reload
ngx_http_fastdfs_set pid=8364 # 看見這條消息說明nginx模塊啟動成功了
$ lsof -i:8888 # 查看Nginx下載端口是否正常啟動
nginx   31061  root   10u  IPv4 20389985      0t0  TCP *:8888 (LISTEN)

測試下載

在瀏覽器輸入

http://{IP}:8888/group1/M00/00/00/CgoKvlyUmi-AMVKDAA9-WL9wzEw.tar.gz?filename=nginx-1.14.2.tar.gz //剛才上傳返回的ID

彈出下載文件框,說明部署成功!

相關命令

防火牆

$ sudo ufw enable|disable

tracker

$ /etc/init.d/fdfs_trackerd start # 啟動tracker服務
$ /etc/init.d/fdfs_trackerd restart # 重啟動tracker服務
$ /etc/init.d/fdfs_trackerd stop # 停止tracker服務
$ update-rc.d fdfs_trackerd enable # 自啟動tracker服務

storage

$ /etc/init.d/fdfs_storaged start # 啟動storage服務
$ /etc/init.d/fdfs_storaged restart # 重動storage服務
$ /etc/init.d/fdfs_storaged stop # 停止動storage服務
$ update-rc.d fdfs_storaged enable # 自啟動storage服務

nginx

$ service nginx start # 啟動nginx
$ nginx -s reload # 重啟nginx
$ nginx -s stop # 停止nginx

問題

執行nginx -s reload 后,訪問502

# 查看nginx日志
$ vim /var/log/nginx/error.log

如果發現錯誤日志:include file "http.conf" not exists, line: "#include http.conf",fastdfs nginx模塊缺少配置文件,執行以下命令補全配置文件即可。

$ cp /usr/local/src/fastdfs-master/conf/http.conf /etc/fdfs/ #供nginx訪問使用
$ cp /etc/nginx/mime.types /etc/fdfs/ #供nginx訪問使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM