搭建文件服務器


本文目錄:

  • 一、前言
  • 二、FastDFS介紹
  • 三、FastDFS下載安裝
  • 四、配置tracker與storage
  • 五、測試
  • 六、fastdfs-nginx-module安裝配置
  • 七、Storage的nginx安裝配置
  • 八、Storage的其他配置
  • 九、Tracker的nginx的配置
  • 十、nginx下測試

一、前言:

本文實現了FastDFS的安裝,測試

系統環境:ubantu16.04

FastDFS版本:5.1.2

二、FastDFS介紹

FastDFS是一個由C語言實現的開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲,文件同步,文件訪問(文件上傳,下載)等;解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務。如相冊網站,視頻網站等等。

同類的分布式文件還有谷歌的GFS,HDFS(Hadoop),TFS(淘寶)

FastDFS有兩個角色:Tracker(跟蹤器),Storage(存儲節點)

Tracker:主要做調度作用,起到負載均衡的作用;負責管理所有的Storage和Group,每一個Storage再啟動后會連接Tracker,告知自己所屬的Group,並保持周期心跳

Storage:存儲節點,主要提供容量和備份服務;以Group為單位,每個Group內可以有多台Storage,數據互相備份。

官方提供的架構圖:

https://pic4.zhimg.com/80/v2-245616fed1999f3953ccdccb025c0b1c_hd.jpg

本文架構是一台服務器:Tracker,Storage(為同一Group)

三、FastDFS的安裝(每台服務器都要安裝,這里只有一台)

1、下載安裝libfastcommon

由於fastdfs5.0.5依賴libfastcommon,先安裝libfastcommon

下載:github地址:https://github.com/happyfish100/libfastcommon    下載之后,將其壓縮為gzip格式的文件

將文件上傳到/home/suer/software/ 目錄下

解壓libfastcommon,命令:tar -zxvf libfastcommon-master.tar.gz 

編譯,進入libfastcommon-master目錄,命令:cd libfastcommon

sudo  ./make.sh

https://pic4.zhimg.com/80/v2-17e4a76892b1caa7fd61c791e12f7f98_hd.jpg

安裝,命令:sudo ./make.sh install

https://pic3.zhimg.com/80/v2-54568a07573f8549631d5244976295b2_hd.jpg

顯示如上圖,libfastcommon 安裝成功

2、下載安裝FastDFS

下載,網址: https://github.com/happyfish100/fastdfs

解壓FastDFS,命令:

tar -zxvf fastdfs-master.tar.gz

編譯,進入fastfds-master目錄,命令:

cd fastdfs-master
./make.sh

https://pic3.zhimg.com/80/v2-e78def57794b5f1d23188273b59e5236_hd.jpg

安裝,命令:

./make.sh install

https://pic4.zhimg.com/80/v2-e3419ab9132a74a5279d81f133eb77ec_hd.jpg

顯示如上圖,FastDFS安裝成功

四、配置Tracker與Storage

FastDFS安裝成功后,會在/etc目錄下會有個fdfs目錄,進入fdfs,會發現三個.sample后綴的示例文件。

1、配置Tracker服務器(本文使用192.168.64.141)

在/etc/fdfs目錄下,修改tracker.conf,命令:

 cp tracker.conf.sample tracker.conf
   vim tracker.conf

https://pic1.zhimg.com/80/v2-df4e10f15ebc7799d24545b8f8805d47_hd.jpg

打開tracker.conf,修改如下處:

# the base path to store data and log files
base_path=/data/fastdfs/tracker

當然前提是,首先要創建/data/fastdfs/tracker目錄,命令:

mkdir -p /data/fastdfs/tracker

修改保存, 啟動tracker服務,命令:

fdfs_trackerd /etc/fdfs/tracker.conf start

類似的命令,關閉tracker服務:

fdfs_trackerd /etc/fdfs/tracker.conf stop

啟動tracker服務后,查看監聽,命令:

netstat -unltp|grep fdfs

https://pic4.zhimg.com/80/v2-9af7021b7e963b01e9f06c0609c67830_hd.jpg

tracker默認端口22122

查看/data/fastdfs/tracker目錄文件,發現多出兩個文件,用來存放數據和日志的

https://pic1.zhimg.com/80/v2-8ae702cc16d116526cc1f681b4af0924_hd.jpg

至此tracker跟蹤器安裝成功。

2、配置Storage服務器(192.168.64.141)

兩台服務器,同樣進入/etc/fdfs目錄下,命令:

cp storage.conf.sample storage.conf
vim storage.conf

https://pic3.zhimg.com/80/v2-52f1fc6f1015569ee4ff3ef35cb705fa_hd.jpg

打開storage.conf,修改如下處:

# the base path to store data and log files
base_path=/data/fastdfs/storage

# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/data/fastdfs/storage

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
#配置tracker跟蹤器ip端口
tracker_server=192.168.64.141:22122

當然前提是,首先要創建/data/fastdfs/storage目錄,命令:

mkdir -p /data/fastdfs/storage

修改保存后,啟動storage服務,命令:可能會有點慢

fdfs_storaged /etc/fdfs/storage.conf start

啟動有錯誤,可以通過/data/fastdfs/storage/logs查看

查看/data/fastdfs/storage下文件內容,生成logs、data兩個目錄

https://pic4.zhimg.com/80/v2-37f8050f2893cb114343e3fc11176c4c_hd.jpg

查看下端口監聽,命令:

netstat -unltp|grep fdfs

https://pic3.zhimg.com/80/v2-c4c3de86a6b403f5a23c56c46577b3cb_hd.jpg

storage默認端口23000

至此Storage存儲節點安裝成功。

所有存儲節點都啟動之后,可以在任一存儲節點上使用如下命令查看集群的狀態信息:

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


通過上兩圖可以看到,storage都為Active,配置成功

五、測試上傳文件

三台服務器隨便選擇一台服務器,這里我選擇192.168.7.44服務器

同樣進入/etc/fdfs目錄,編譯client.conf,命令如下:

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf

https://pic2.zhimg.com/80/v2-faff255eb5846011bc87b83d182777f8_hd.jpg

修改如下:

# the base path to store log files
base_path=/data/fastdfs/client

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
#配置tracker跟蹤器ip端口
tracker_server=192.168.64.141:22122

同樣前提是,首先要創建/data/fastdfs/client目錄,命令:

mkdir -p /data/fastdfs/client

上傳/opt目錄的一張圖片(名為:14.jpg),命令:

fdfs_test /etc/fdfs/client.conf upload /home/suer/zhsq/20180910173729.jpg

https://pic1.zhimg.com/80/v2-c47aa205923b6d6e2c15a795b47e1544_hd.jpg

如上圖,上傳成功,分別進入兩台storage服務器目錄/var/log/fdfs/storage/data/00/00下,都可以發現,文件保存成功

https://pic2.zhimg.com/80/v2-ec7eed3905795683f55074aa7dfd823d_hd.jpg

至此,文件上傳測試成功。

六、fastdfs-nginx-module安裝配置

a、下載,網址: https://github.com/happyfish100/fastdfs-nginx-module

b、解壓fastdfs-nginx-module-master,命令:tar -zxvf fastdfs-nginx-module-master.tar.gz

c、配置config文件,命令:

cd /opt/fastdfs/fastdfs-nginx-module/src
vim config

修改如下:不修改后面編譯nginx會報錯

找到下面一行包含有 local 字眼去掉

e、復制 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄, 並修改,命令:

進入fastdfs-nginx-module/src目錄下,復制mod_fastdfs.conf文件到 /etc/fdfs目錄,進入/etc/fdfs目錄,修改mod_fastdfs.conf配置文件

cd fastdfs-nginx-module/src
cp mod_fastdfs.conf /etc/fdfs
cd /etc/fdfs
vim mod_fastdfs.conf

修改如下三處:

tracker_server=192.168.7.73:22122 # tracker服務IP和端口
url_have_group_name=true # 訪問鏈接前綴加上組名
store_path0=/data/fastdfs/storage # 文件存儲路徑

修改保存。

六、fastdfs-nginx-module安裝配置

如果沒有nginx,就安裝nginx進行下面的配置

a、Nginx安裝依賴如下(gcc/pcre/zlib/openssl)插件,先要安裝如下插件,命令:

apt-get install openssl libssl-dev
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g-dev
apt-get install build-essential

b、下載nginx,命令

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

https://pic4.zhimg.com/80/v2-5c2a29d78f915de7b29840cee15a93b3_hd.png

c、解壓,命令:

tar -zxvf nginx-1.10.1.tar.gz

https://pic3.zhimg.com/80/v2-6230d4b4d27598c570aa1000204daa12_hd.png

d、編譯配置,命令:

  • 注意最后一行,配置fastdfs-nginx模塊的路徑(這個路徑根據自己實際情況而定)
cd nginx-1.10.1

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/local/nginx/nginx.pid \
--lock-path=/var/lock/nginx/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=/opt/fastdfs/fastdfs-nginx-module/src

https://pic3.zhimg.com/80/v2-f4d8477f5c9794aae25cbef5ca4d238e_hd.png

e、編譯安裝,命令:

make && make install  

f、啟動,命令:

/usr/local/nginx/sbin/nginx

https://pic3.zhimg.com/80/v2-82f858def6af8497127734095e3eb4a6_hd.png

我這里啟動報錯,找不到那個目錄,於是手動創建,再啟動

mkdir -p /var/temp/nginx/client

https://pic1.zhimg.com/80/v2-90018c888c84e97d817936557469cab4_hd.png

nginx默認端口80,查看命令:

netstat -anp|grep 80

https://pic1.zhimg.com/80/v2-4167015e759ba03ea2cb9c1b97476b88_hd.png

如上圖,至此nginx安裝成功

還有一種情況,就是已經安裝了nginx,那么我們應該先去查看nginx的版本,命令是:nginx -V

1536889825249-332.png

如果是apt-get直接安裝的,就沒有相應的源碼包,可以去nginx官網下載相應的版本

完了之后解壓,可以重新編譯,命令是:

 sudo ./configure --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=/home/suer/software/fastdfs-nginx-module-master/src

注意加粗的地方,這個是加入新的fastdfs-nginx-module-master進行編譯。執行這個命令之后,可能會報錯

1536890235408-372.png

此時,應該更新一下安裝包,命令是:sudo apt-get update

然后執行命令 sudo agt-get install gcc,sudo apt-get install libpcre3 libpcre3-dev,安裝這些需要的包

再一次執行 sudo ./configure這個命令,看是否沒有問題

我有報錯是

1536890632268-725.png

於是,sudo apt-get install libxml2 libxml2-dev libxslt-dev,sudo apt-get install  libgd2-xpm-dev,sudo apt-get install libgeoip-dev

安裝了一大批軟件包,終於編譯沒有問題了sudo make,單數后面還是不能make成功

只能卸載原來的nginx

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/local/nginx/nginx.pid \
--lock-path=/var/lock/nginx/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=/home/suer/software/fastdfs-nginx-module-master/src

sudo make&&sudo make install

使用sudo /usr/local/nginx/sbin/nginx -t,看是否nginx啟動成功。

https://pic3.zhimg.com/80/v2-82f858def6af8497127734095e3eb4a6_hd.png

我這里啟動報錯,找不到那個目錄,於是手動創建,再啟動

mkdir -p /var/temp/nginx/client

https://pic1.zhimg.com/80/v2-90018c888c84e97d817936557469cab4_hd.png

nginx默認端口80,查看命令:

netstat -anp|grep 80

https://pic1.zhimg.com/80/v2-4167015e759ba03ea2cb9c1b97476b88_hd.png

如上圖,至此nginx安裝成功

配置軟鏈接

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

現在就可以不用路徑直接輸入nginx啟動。

八、Storage的其他配置

復制 FastDFS 的部分配置文件到/etc/fdfs 目錄,命令:
cd /opt/fastdfs/fastdfs-5.05/conf
cp http.conf mime.types /etc/fdfs

https://pic2.zhimg.com/80/v2-1aff32d8f7124ce04690353dde2f8841_hd.png

配置nginx.conf文件,命令:

vim /usr/local/nginx/conf/nginx.conf

修改端口與/etc/fdfs/storage.conf 中的http.server_port=8888 相對應

在配置文件中加入如下內容:

location /group1/M00 {
     root /data/fastdfs/storage/;
     ngx_fastdfs_module;
}

https://pic3.zhimg.com/80/v2-cf8046f8f8d4d5a6cef7662107e343ba_hd.png

注意事項:
8888 端口值是要與/etc/fdfs/storage.conf 中的http.server_port=8888 相對應,因為 http.server_port 默認為 8888,如果想改成 80,則要對應修改過來。

Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx,對應的 Nginx 配置為:

location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
}

如查下載時如發現老報 404, 將 nginx.conf 第一行 user nobody 修改為 user root 后重新啟動。

保存,重啟nginx服務

/usr/local/nginx/sbin/nginx -s reload

九、跟蹤Tracker(192.168.64.141)服務器配置Ngnix

配置Nginx,設置tracker負載均衡

vim /usr/local/nginx/conf/nginx.conf

設置group負載均衡,設置nginx端口為8000

vim /usr/local/nginx/conf/nginx.conf

設置group負載均衡,設置nginx端口為8000

https://pic3.zhimg.com/80/v2-c21c17790b24f05944d66248f0327076_hd.png

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

    server {
        listen       8000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

        #設置 group 的負載均衡參數
        location /group1/M00 {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_pass http://fdfs_group1;
            expires 30d;
        }

g、啟動nginx服務,查看啟動

/usr/local/nginx/sbin/nginx
netstat -anp|grep 8000

https://pic4.zhimg.com/80/v2-8064b2a09354f8cebf3cb363017fe883_hd.png

https://pic1.zhimg.com/80/v2-a40621cc658365e88f37b4be7c55ae48_hd.jpg

測試

通過瀏覽器訪問

測試上傳后返回的文件ID為 fdfs_test /etc/fdfs/client.conf upload /home/suer/zhsq/20180910173729.jpg

用瀏覽通過Storage直接訪問:http://192.168.64.141/group1/M00/00/00/wKhAjVubY5OAQ9bvAACQ5k9ZMcA905.jpg


免責聲明!

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



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