centos7下安裝FastDFS分佈式文件存儲系統

前言:該篇博客需要使用到的安裝包有:FastDFS_v5.08.tar.gz,fastdfs-nginx-module_v1.16.tar.gz,libfastcommon-master.zip,nginx-1.10.0.tar.gz(這四個是必須的),若沒有請自行下載。或者聯繫作者微信免費提供:微信暱稱 unhejing

1.安裝依賴

(1)GCC用來對C語言代碼進行編譯運行(FastDFS是由c語言寫的),使用yum命令安裝:

sudo yum -y install gcc

(2)安裝unzip工具(用於解壓安裝包)

sudo yum install -y unzip zip

(3)安裝libevent

sudo yum -y install libevent

(4)安裝Nginx所需依賴

sudo yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

(5)安裝libfastcommon-master(這個沒有yum包,只能通過編譯安裝)

unzip libfastcommon-master.zip

進入解壓完成的目錄:

cd libfastcommon-master

 編譯並且安裝:

sudo ./make.sh 
sudo ./make.sh install

由此結束,所有依賴都安裝完了,接來下是安裝FastDFS

2. 安裝FastDFS

(1)編譯安裝(解壓安裝包)

tar -xvf FastDFS_v5.08.tar.gz

(2)進入解壓目錄

 cd FastDFS

(3)編譯安裝

sudo ./make.sh 
sudo ./make.sh install

(4)校驗安裝結果

        1)安裝完成,我們就可以在`/etc/init.d/`目錄,通過命令`ll /etc/init.d/ | grep fdfs`,如圖:

        fdfs_trackerd 是tracker啓動腳本
        fdfs_storaged 是storage啓動腳本

        2) 配置文件在/etc/fdfs

        

        tarcker.conf.sample 是tracker的配置文件模板
        storage.conf.sample 是storage的配置文件模板
        client.conf.sample 是客戶端的配置文件模板 

3.啓動tracker

    編輯tracker配置

(1)模板文件進行賦值和重命名:

cd /etc/fdfs
sudo cp tracker.conf.sample tracker.conf

(2)編輯配置文件

sudo vim tracker.conf

    指定日誌輸出目錄:base_path=/home/fastdfs/tracker

(3) 創建目錄    

sudo mkdir -p /home/fastdfs/tracker

(4)啓動tracker

    可以使用 sh /etc/init.d/fdfs_trackerd 啓動,不過安裝過程中,fdfs已經被設置爲系統服務,我們可以採用熟悉的服務啓動方式

sudo service fdfs_trackerd start

    # 啓動fdfs_trackerd服務,停止用stop 

(5)設置開機自啓

sudo chkconfig fdfs_trackerd on

4.啓動storage

編輯storage配置

(1)模板文件進行賦值和重命名:

cd /etc/fdfs
sudo cp storage.conf.sample storage.conf

(2)編輯配置文件

sudo vim storage.conf

    指定日誌輸出目錄:

    base_path=/home/fastdfs/storage # storage的數據和日誌存放目錄
    store_path0=/home/fastdfs/storage # storage的上傳文件存放路徑
    tracker_server=192.168.56.101:22122 # tracker的地址

(3)創建目錄

sudo mkdir -p /home/fastdfs/storage

(4)啓動storage

sudo service fdfs_storaged start

(5)開機自啓

sudo chkconfig fdfs_storaged on

由此tracker和storage啓動完成,查看進程

ps -ef | grep fdfs

5.安裝Nginx及FastDFS模塊

(1)FastDFS的Nginx模塊

    解壓:

tar -xvf fastdfs-nginx-module_v1.16.tar.gz

    1)配置config文件

    # 進入配置目錄

    cd /home/fastdfs-nginx-module/src

    # 修改配置

    vim config

    # 執行下面命令(將配置中的/usr/local改爲/usr):

     :%s+/usr/local/+/usr/+g

   2) 配置mod_fastdfs.conf

    # 將src目錄下的mod_fastdfs.conf複製到 /etc/fdfs目錄:

    sudo cp mod_fastdfs.conf /etc/fdfs/

    # 編輯該文件

    sudo vim /etc/fdfs/mod_fastdfs.conf

    修改一下配置:

    connect_timeout=10                          # 客戶端訪問文件連接超時時長(單位:秒)
    tracker_server=192.168.56.101:22122      # tracker服務IP和端口
    url_have_group_name=true                    # 訪問鏈接前綴加上組名
    store_path0=/home/fastdfs/storage                # 文件存儲路徑

    複製 FastDFS的部分配置文件到/etc/fdfs目錄 

cd /home/FastDFS/conf/
cp http.conf mime.types /etc/fdfs/

6.安裝Nginx

(1)解壓

tar -xvf nginx-1.10.0.tar.gz

(2)配置

cd /home/nginx-1.10.0/
sudo ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/home/fastdfs-nginx-module/src

(3)編譯安裝

sudo make && sudo make install

(4)配置nginx整合fastdfs-module模塊

    我們需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中:

sudo vim /opt/nginx/conf/nginx.conf

    在service下添加:

    # 監聽域名中帶有group的,交給FastDFS模塊處理
    location ~/group([0-9])/ {
            ngx_fastdfs_module;
    } 

(5)啓動nginx

  nginx # 啓動
  nginx -s stop # 停止
  nginx -s reload # 重新加載配置 

綜上就是所有fastDFS所有的配置。

注:

1.所有 Storage 節點都啓動之後,可以在 Storage的任何 節點上使用如下命令查看集羣信息:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

2.集羣配置

說明:

192.168.31.51 group1 #需開啓storage和nginx,tracker服務不用啓動(配置成功後可通過http://192.168.31.51/group1/M00/00/XXXXX.jpg訪問)

192.168.31.52 group2 #需開啓storage和nginx,tracker服務不用啓動(配置成功後可通過http://192.168.31.52/group2/M00/00/XXXXX.jpg訪問)

192.168.31.46 tracker1 對應group1

192.168.31.47 tracker2 對應group2

(1)編輯每個storage服務器上的 mod_fastdfs.conf配置文件

vim /etc/fdfs/mod_fastdfs.conf
#修改內容
connect_timeout=10
#(51爲group1)、(52爲group2)--後期加入其他集羣直接複製該配置即可。只需修改分組,若是添加分組的話,需要修改其他storage服務器上的該配置文件。新增group和tracker。
group_name=group1  #當前storage的分組
tracker_server=192.168.31.46:22122
tracker_server=192.168.31.47:22122
url_have_group_name = true
store_path0=/home/fastdfs/storage

group_count=2  #設置分組數

#下面註釋打開並設置如下

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

#store_path1=/home/yuqing/fastdfs1



# group settings for group #2

# since v1.14

# when support multi-group, uncomment following section as neccessary

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

(2)配置跟蹤服務器的反向代理

        1)安裝ngx_cache_purge模塊,ngx_cache_purge的作用:用於清除指定url的緩存(按需安裝,如果圖片會隨時更新則建議安裝,不經常更新則可以不用安裝)

        下載地址:http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz

        2)安裝nginx,(編譯時不用添加fastdfs-nginx-module模塊,直接:sudo ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx即可)

        3)配置nginx(部分配置如下),然後就可以訪問了192.168.31.46和192.168.31.47會自動代理到51,52storage存儲服務器上。記得打開端口!

    #group1的服務設置
    upstream fdfs_group1 {
        server 192.168.31.51 weight=1 max_fails=2 fail_timeout=30s;
        #server 192.168.156.8:8888 weight=1 max_fails=2 fail_timeout=30s;
    }

    #group2的服務設置
    upstream fdfs_group2 {
        server 192.168.31.52 weight=1 max_fails=2 fail_timeout=30s;
        #server 192.168.156.10:8888 weight=1 max_fails=2 fail_timeout=30s;
    }
    

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

	    location /group1/M00 {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            #proxy_cache http-cache;
            #proxy_cache_valid 200 304 12h;
            #proxy_cache_key $uri$is_args$args;
            #對應group1的服務設置
            proxy_pass http://fdfs_group1;
            expires 30d;
        }

        location /group2/M00 {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            #proxy_cache http-cache;
            #proxy_cache_valid 200 304 12h;
	    #proxy_cache_key $uri$is_args$args;
            #對應group2的服務設置
            proxy_pass http://fdfs_group2;
	    expires 30d;            
        }
            

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

        4)VIP虛擬代理轉發到tracker。(目的是由一個請求地址,自動代理到其他tracker)

        192.168.11.20用於轉發 nginx配置:

upstream fastdfs_tracker {
    server 192.168.31.46 weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.31.47 weight=1 max_fails=2 fail_timeout=30s;
}


server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location ~/group([0-9])/ {
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://fastdfs_tracker;
        }
}

3.若訪問日誌圖片報錯:

ERROR - file: /root/fastdfs/fastdfs-nginx-module/src/common.c, line: 877, stat file: /root/fastdfs/storage/data/00/00/wKgLGl4FZAeAbKLsAARRFe73PtQ404.png fail, errno: 13, error info: Permission denied

此問題是nginx權限造成的,在nginx配置文件頭部加上user root;即可,如圖:

4.java代碼上傳部分圖片報錯 

java.lang.IllegalArgumentException: Numbers of source Raster bands and source color space components

引入依賴:

<dependency>
	 <groupId>com.twelvemonkeys.imageio</groupId>
	 <artifactId>imageio-jpeg</artifactId>
	 <version>3.4.1</version>
</dependency>

未解決的疑問?

192.168.31.51(group1),192.168.31.51(group2) storage,這兩臺分別設置mod_fastdfs.conf爲group1和group2,並且關聯兩個tracker。那麼從192.168.31.46,192.168.31.47 兩個traker都可以訪問到group1和group2的資源,此種情況我認爲是正常。

但是我新建了一個192.168.11.26的文件服務器用於測試,tracker和storage,nginx都在同一臺服務器上,配置mod_fastdfs.conf與192.168.31.46,47,51,52這四臺服務器沒有任何相關的。此時上傳圖片正常也在此臺服務器上。但是此臺服務器竟然可以訪問192.168.31.51上group1的資源。從192.168.31.46,47,51,52這四臺上也能訪問192.168.11.26上的圖片資源。難道分組group相同,tracker不同也可以互相訪問嗎?難道可以直接通過group相同就互通?

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章