centos安裝fastdfs

使用docker搭建fastdfs

1.拉取鏡像

docker pull morunchang/fastdfs


2.查看鏡像

docker images


3.運行tracker

docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh

4.運行storage

docker run -d --name storage --net=host -e TRACKER_IP=192.168.99.100:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh

5.docker ps

6.進入storage容器內容,修改nginx.conf

docker exec -it storage /bin/bash


在server裏面添加location

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;
            proxy_pass http://fdfs_group1;
            expires 30d;
        }

7.退出
8.重啓storage服務

docker restart storage

#tip
至此以docker形式安裝fastdfs完成

後續加入通過安裝包搭建fastdfs

1.新建目錄,用來存放壓縮包

2.下載安裝libfastcommon

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz


此時目錄結構:

解壓

tar -zxvf V1.0.7.tar.gz


此時目錄結構:

進入libfastcommon-1.0.7目錄:

cd libfastcommon-1.0.7

編譯、安裝:

./make.sh
./make.sh install



創建軟鏈接:

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

3.下載安裝fastdfs
先切換到安裝目錄:

下載fastdfs:

wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz


此時的目錄結構:

解壓:

tar -zxvf V5.05.tar.gz

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-4Uc8TTZn-1570697645225)(https://www.showdoc.cc/server/api/common/visitfile/sign/02513ed84f915505927107fd487130b7?showdoc=.jpg)]
此時的目錄結構:

進入fastdfs-5.05目錄:

cd fastdfs-5.05


編譯、安裝:

./make.sh
./make.sh install



默認的安裝方式安裝後的文件與目錄:
A、服務腳本:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker

B、配置文件

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

C、命令工具在/usr/bin/目錄下

fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh 

創建軟連接:

ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
ln -s /usr/bin/fdfs_storaged   /usr/local/bin
ln -s /usr/bin/stop.sh         /usr/local/bin
ln -s /usr/bin/restart.sh      /usr/local/bin

4.配置fastdfs跟蹤器(tracker)
進入 /etc/fdfs,複製 FastDFS 跟蹤器樣例配置文件 tracker.conf.sample,並重命名爲 tracker.conf:

cd /etc/fdfs

cp tracker.conf.sample tracker.conf

vim tracker.conf

//開始插入圖片1

編輯tracker.conf:

base_path=/fdfs/fastdfs/tracker
http.server_port=80

//開始插入圖片2345




創建tracker基礎數據目錄,即base_path對應的目錄:

mkdir -p /fdfs/fastdfs/tracker

//開始插入圖片6

防火牆中打開跟蹤端口(默認的22122):

vim /etc/sysconfig/iptables

添加如下端口行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

//開始插入圖片7

重啓防火牆:

service iptables restart

如果報錯:

Failed to restart iptables.service: Unit iptables.service failed to load: No such file or directory.

//開始插入圖片8

直接關閉防火牆:

systemctl stop firewalld

//開始插入圖片9

啓動tracker:
初次成功啓動,會在 /fdfs/fdfsdfs/tracker/ (配置的base_path)下創建 data、logs 兩個目錄:

service fdfs_trackerd start

//開始插入圖片10

查看 FastDFS Tracker 是否已成功啓動 ,22122端口正在被監聽,則算是Tracker服務安裝成功:

netstat -unltp|grep fdfs

//開始插入圖片11

關閉Tracker命令:

service fdfs_trackerd stop

設置Tracker開機啓動:

chkconfig fdfs_trackerd on

//開始插入圖片12

tracker server 目錄及文件結構:
Tracker服務啓動成功後,會在base_path下創建data、logs兩個目錄。目錄結構如下:

${base_path}
  |__data
  |   |__storage_groups.dat:存儲分組信息
  |   |__storage_servers.dat:存儲服務器列表
  |__logs
  |   |__trackerd.log: tracker server 日誌文件 

5.配置fastdfs存儲(storage)
進入 /etc/fdfs 目錄,複製 FastDFS 存儲器樣例配置文件 storage.conf.sample,並重命名爲 storage.conf:

cd /etc/fdfs

//開始插入圖片13

cp storage.conf.sample storage.conf

//開始插入圖片14

vim storage.conf

修改:

base_path=/fdfs/fastdfs/storage

store_path0=/fdfs/fastdfs/file

tracker_server=192.168.247.132:22122

http.server_port=80

IP替換成自己ip。
創建Storage基礎數據目錄,對應base_path目錄:

mkdir -p /fdfs/fastdfs/storage

這是配置的store_path0路徑:

mkdir -p /fdfs/fastdfs/file

//開始插入圖片15

防火牆中打開存儲器端口(默認的 23000):

vim /etc/sysconfig/iptables

添加如下端口行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

//插入圖片16

重啓防火牆:

啓動storage:
啓動Storage前確保Tracker是啓動的。初次啓動成功,會在 /fdfs/fastdfs/storage 目錄下創建 data、 logs 兩個目錄

service fdfs_storaged start

//開始插入圖片17

查看 Storage 是否成功啓動,23000 端口正在被監聽,就算 Storage 啓動成功:

netstat -unltp|grep fdfs

//開始插入圖片18

關閉Storage命令:

service fdfs_storaged stop

查看Storage和Tracker是否在通信:

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

//開始插入圖片19,20


設置 Storage 開機啓動:

chkconfig fdfs_storaged on

//開始插入圖片21

Storage 目錄:
同 Tracker,Storage 啓動成功後,在base_path 下創建了data、logs目錄,記錄着 Storage Server 的信息。
在 store_path0 目錄下,創建了N*N個子目錄:
//開始插入圖片22

6.文件上傳測試
修改tracker服務器中的客戶端配置文件:

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

//開始插入圖片23

vim client.conf

修改:

base_path=/fdfs/fastdfs/client

tracker_server=192.168.247.132:22122

新建client目錄:

mkdir -p /fdfs/fastdfs/client

上傳測試:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt

//開始插入圖片24

7.安裝nginx
安裝nginx所需環境:

yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

進入安裝安裝包目錄:
下載nginx:

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

//開始插入圖片25,26


解壓:

tar -zxvf nginx-1.12.1.tar.gz

//開始插入圖片27

進入nginx-1.12.1目錄

cd nginx-1.12.1

//開始插入圖片28

使用默認配置:

./configure

//開始插入圖片29

編譯、安裝:

make
make install

啓動nginx:

cd /usr/local/nginx/sbin/

./nginx 

其他命令:

# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload

設置開機啓動:

vim /etc/rc.local

添加一行:

/usr/local/nginx/sbin/nginx

//開始插入圖片30

設置執行權限:

chmod 755 rc.local

//開始插入圖片31

查看nginx的版本及模塊:

/usr/local/nginx/sbin/nginx -V

//開始插入圖片32

防火牆中打開Nginx端口(默認的 80):

vim /etc/sysconfig/iptables

添加如下端口行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

//開始插入圖片33

重啓防火牆:

訪問文件:
修改nginx.conf:

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

添加如下內容:

location /group1/M00 {
	alias /fdfs/fastdfs/file/data;
}

//開始插入圖片34

重啓nginx:

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

//開始插入圖片35

在瀏覽器訪問:

http://192.168.247.132/group1/M00/00/00/wKj3hFv6oFSADsdTAAAAAAAAAAA042.txt

成功!!!!!!

8.fastdfs配置nginx模塊
進入安裝壓縮包目錄:
下載 fastdfs-nginx-module、解壓:

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1  fastdfs-nginx-module-master

//開始插入圖片36,37,38,39




配置nginx:
在nginx中添加模塊:
先停掉nginx服務:

/usr/local/nginx/sbin/nginx -s stop

//開始插入圖片40

進入壓縮包目錄:

cd nginx-1.12.1/

//開始插入圖片41

添加模塊:

./configure --add-module=../fastdfs-nginx-module-master/src

重新編譯、安裝:

make && make install

查看nginx模塊:

/usr/local/nginx/sbin/nginx -V

//插入圖片42

複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄, 並修改:

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

//插入圖片43

切換到/etc/fdfs/,修改mod_fastdfs.conf:
修改內容:

connect_timeout=10

tracker_server=192.168.247.132:22122

url_have_group_name=true

store_path0=/fdfs/fastdfs/file

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

cd /fdfs/fastdfs-5.05/conf

//插入圖片44

cp anti-steal.jpg http.conf mime.types /etc/fdfs/

//插入圖片45

配置nginx,修改nginx.conf:

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

在80端口下添加fastdfs-nginx模塊,同時註釋掉原來的模塊:

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

//插入圖片46

添加軟連接:

ln -s /fdfs/fastdfs/file/data/ /fdfs/fastdfs/file/data/M00 

//插入圖片47

啓動nginx

/usr/local/nginx/sbin/nginx

//插入圖片48

更改文件名後綴:

if ($arg_attname ~* \.(doc|docx|txt|pdf|zip|rar|txt|xls|xlsx|jpg|png)$){
	add_header Content-Disposition "attachment;filename=$arg_attname";
}

注:if後面需要添加空格

============================================

默認環境排查步驟

當我們拿到一個陌生的安裝了fdfs的服務器時,如何去逐步解析分析。

首先我們登陸172.21.0.51,查看項目pod:

kubectl get po -l app=*

之後查看po的配置:

kubectl get po <pod-name> -o yaml

在裏面我們可以看到fdfs的tracker server的服務器地址是172.21.0.13
在經過一頓詢問後,我們獲取了tracker server的密碼,登錄。。。

首先查看nginx的版本信息

find / -name nginx

得到裏面含有sbin的路徑,這個路徑下是存放了nginx的一些主要配置文件和啓動文件

/usr/local/openresty/nginx/sbin/nginx -v
[root@fast1 ~]# /usr/local/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.7.10.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt='-I/home/azureuser/ngx_openresty-1.7.10.1/build/luajit-root/usr/local/openresty/luajit/include/luajit-2.1 -O2' --add-module=../ngx_devel_kit-0.2.19 --add-module=../echo-nginx-module-0.57 --add-module=../xss-nginx-module-0.04 --add-module=../ngx_coolkit-0.2rc2 --add-module=../set-misc-nginx-module-0.28 --add-module=../form-input-nginx-module-0.10 --add-module=../encrypted-session-nginx-module-0.03 --add-module=../srcache-nginx-module-0.29 --add-module=../ngx_lua-0.9.15 --add-module=../ngx_lua_upstream-0.02 --add-module=../headers-more-nginx-module-0.25 --add-module=../array-var-nginx-module-0.03 --add-module=../memc-nginx-module-0.15 --add-module=../redis2-nginx-module-0.11 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.13 --add-module=../rds-csv-nginx-module-0.05 --with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -L/home/azureuser/ngx_openresty-1.7.10.1/build/luajit-root/usr/local/openresty/luajit/lib' --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=/home/azureuser/ngx_openresty-1.7.10.1/../fastdfs-nginx-module-master/src

可以得知該nginx版本號是1.7.10.1,與一些模塊依賴
首先判斷這與我們的頁面請求使用的nginx版本不是一致,這時候就要考慮是否是多臺機器集羣搭建的fdfs,其次我們可以看到nginx和fdfs的依賴模塊的src,進而得到路徑,這個路徑通常是安裝目錄。
路徑是:

/home/azureuser/ngx_openresty-1.7.10.1/../fastdfs-nginx-module-master/src

我們切換到/home/azureuer目錄下發現確實是安裝包路徑
進行到這一步我們需要找到tracker.conf路徑,進而查看某些配置

find / -name tracker.conf

查看配置我們可以得到一些重要信息,比如base_path和http.server-port
接下來我們獲取nginx的配置文件nginx.conf

find / -name nginx.conf
[root@fast1 ~]# find / -name nginx.conf
/usr/local/openresty/nginx/conf/nginx.conf
/home/azureuser/ngx_openresty-1.7.10.1/bundle/nginx-1.7.10/conf/nginx.conf
/home/azureuser/ngx_openresty-1.7.10.1/build/nginx-1.7.10/conf/nginx.conf

我們選擇/usr目錄下的,因爲一般來說nginx安裝編譯後會在/usr目錄下
查看nginx.conf
從其中我們可以得知,本fdfs一共配置了兩個group,分別分佈在不同的服務器上

登錄進其中一個服務器,查看,想着幾臺機子之間應該互通,所以直接ssh 機器名就ok
查看nginx版本,發現與頁面請求還是不一致,得知直接與頁面-》fdfs關聯的nginx並不在該服務器上

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