1. 程式人生 > >FastDFS一步步搭建檔案管理系統

FastDFS一步步搭建檔案管理系統

1、環境virtualBox+CentOs7,前提必須確保主機和虛擬機器網路可以互通,並且虛擬機器可以訪問網路

2、centos下建立目錄/softpackages

3、下載安裝 libfastcommon,libfastcommon是從 FastDFS 和 FastDHT 中提取出來的公共 C 函式庫,基礎環境

下載libfastcommon

解壓

進入libfastcommon-1.0.7,編譯、安裝

注意:如果出現上面情況請先安裝perl

然就可以順利編譯和安裝了

libfastcommon.so 安裝到了/usr/lib64/libfastcommon.so,但是FastDFS主程式設定的lib目錄是/usr/local/lib,所以需要建立軟連結。

4、下載安裝FastDFS

下載FastDFS

解壓、編譯、安裝

預設安裝方式安裝後的相應檔案與目錄

服務指令碼:

/etc/init.d/fdfs_storaged

/etc/init.d/fdfs_tracker

配置檔案(這三個是作者給的樣例配置檔案) :

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

命令工具在 /usr/bin/ 目錄下:

FastDFS 服務指令碼設定的 bin 目錄是 /usr/local/bin, 但實際命令安裝在 /usr/bin/ 下

兩種方式:

一、修改FastDFS 服務指令碼中相應的命令路徑,也就是把 /etc/init.d/fdfs_storaged 和 /etc/init.d/fdfs_tracker 兩個指令碼中的 /usr/local/bin 修改成 /usr/bin。

# vim fdfs_trackerd
使用查詢替換命令進統一修改:%s+/usr/local/bin+/usr/bin
# vim fdfs_storaged
使用查詢替換命令進統一修改:%s+/usr/local/bin+/usr/bin

二、是建立 /usr/bin 到 /usr/local/bin 的軟連結,本人用這種方式。

5、配置FastDFS跟蹤器(Tracker)

進入 /etc/fdfs,複製 FastDFS 跟蹤器樣例配置檔案 tracker.conf.sample,並重命名為 tracker.conf。

編輯tracker.conf ,標紅的需要修改下,其它的預設即可

建立tracker基礎資料目錄,即base_path對應的目錄

# mkdir -p /home/running/fastdfs/tracker

防火牆中開啟跟蹤埠(預設的22122)

新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT















重啟防火牆:
# service iptables restart

啟動Tracker

初次成功啟動,會在 /home/running/fdfsdfs/tracker/ (配置的base_path)下建立 data、logs 兩個目錄

啟動方式一:

啟動方式二:

# service fdfs_trackerd start

檢視 FastDFS Tracker 是否已成功啟動 ,22122埠正在被監聽,則算是Tracker服務安裝成功。

# netstat -unltp|grep fdfs

閉Tracker命令:

# service fdfs_trackerd stop

設定Tracker開機啟動

# chkconfig fdfs_trackerd on

或者

# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_trackerd start 

 tracker server 目錄及檔案結構

Tracker服務啟動成功後,會在base_path下建立data、logs兩個目錄。目錄結構如下:

${base_path}
  |__data
  |   |__storage_groups.dat:儲存分組資訊
  |   |__storage_servers.dat:儲存伺服器列表
  |__logs
  |   |__trackerd.log: tracker server 日誌檔案

6、配置 FastDFS 儲存 (Storage)

進入 /etc/fdfs 目錄,複製 FastDFS 儲存器樣例配置檔案 storage.conf.sample,並重命名為 storage.conf

# cd /etc/fdfs

#cp storage.conf.sample storage.conf

#vi storage.conf

編輯storage.conf,紅色的修改就可以了,其它預設

建立Storage基礎資料目錄,對應base_path目錄建立Storage基礎資料目錄,對應base_path目錄

# mkdir -p /home/running/fastdfs/storage

#這是配置的store_path0路徑

# mkdir -p /home/running/fastdfs/file

防火牆中開啟儲存器埠(預設的 23000)

# vim /etc/sysconfig/iptables
新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重啟防火牆:
# service iptables restart

啟動 Storage

啟動Storage前確保Tracker是啟動的。初次啟動成功,會在 /home/running/fastdfs/storage 目錄下建立 data、 logs 兩個目錄。

可以用這種方式啟動
# /etc/init.d/fdfs_storaged start
也可以用這種方式,後面都用這種
# service fdfs_storaged start

檢視 Storage 是否成功啟動,23000 埠正在被監聽,就算 Storage 啟動成功

# netstat -unltp|grep fdfs

檢視Storage和Tracker是否在通訊:

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

設定 Storage 開機啟動

# chkconfig fdfs_storaged on

Storage 目錄

同 Tracker,Storage 啟動成功後,在base_path 下建立了data、logs目錄,記錄著 Storage Server 的資訊。

7、檔案上傳測試

修改 Tracker 伺服器中的客戶端配置檔案 

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

修改如下配置

上傳測試

在linux內部執行如下命令上傳 namei.jpeg 圖片

組名、磁碟名、目錄、檔名

8、安裝Nginx

安裝Nginx作為伺服器以支援Http方式訪問檔案,後面安裝FastDFS的Nginx模組也需要Nginx環境。Nginx只需要安裝到StorageServer所在的伺服器即可,用於訪問檔案。TrackerServer和StorageServer在一臺伺服器上。所以Nginx安裝在該機器上就可以了。

安裝nginx所需環境

a、gcc 安裝

# yum install gcc-c++

b、PCRE pcre-devel 安裝

# yum install -y pcre pcre-devel

c、zlib 安裝

# yum install -y zlib zlib-devel

d、OpenSSL 安裝

# yum install -y openssl openssl-devel

安裝Nginx

a、下載nginx

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

b、解壓

# tar -zxvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1

c、進入解壓縮後文件夾

d、配置編譯引數命令:(可以使用./configure --help查詢詳細引數)

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

e、注:安裝之前需要手動建立上面指定的nginx資料夾,即/var/temp、/var/temp/nginx、/var/run/nginx/資料夾,否則啟動時報錯

f、編譯並安裝

命令:make && make install

可以進入/usr/local/nginx檢視檔案是否存在conf、sbin、html資料夾,若存在則安裝成功

g、啟動nginx

進入安裝目錄

cd /usr/local/nginx/sbin/

啟動:./nginx

檢視是否啟動:ps -ef | grep nginx

如果有master和worker兩個程序證明啟動成功

若報錯:[emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)需要檢視下是不是在/var/run資料夾下不存在nginx資料夾,不存在則新建

其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload

設定開機啟動

# vi /etc/rc.local
新增一行:
/usr/local/nginx/sbin/nginx
# 設定執行許可權
# chmod 755 rc.local

防火牆中開啟Nginx埠(預設的 80) 然後在本機瀏覽器用ip+80埠,就可以訪問了

# vim /etc/sysconfig/iptables
新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重啟防火牆:
# service iptables restart

訪問檔案

修改nginx.conf

# vim /usr/local/nginx/conf/nginx.conf
新增如下行,將 /group1/M00 對映到 /home/running/fastdfs/file/data
location /group1/M00 {
    alias /home/running/fastdfs/file/data;
}
# 重啟nginx
# /usr/local/nginx/sbin/nginx -s reload

在瀏覽器訪問之前上傳的圖片、成功