跟蹤服務器:192.168.4.121 (edu-dfs-tracker-01)html
存儲服務器:192.168.4.125 (edu-dfs-storage-01)java
環境:CentOS 6.6nginx
用戶:root c++
數據目錄:/fastdfs (注:數據目錄按你的數據盤掛載路徑而定)git
安裝包:github
FastDFS v5.05瀏覽器
libfastcommon-master.zip(是從FastDFS和FastDHT中提取出來的公共C函數庫)服務器
fastdfs-nginx-module_v1.16.tar.gzapp
nginx-1.6.2.tar.gztcp
fastdfs_client_java._v1.25.tar.gz
源碼地址:https://github.com/happyfish100/
下載地址:http://sourceforge.net/projects/fastdfs/files/
官方論壇:http://bbs.chinaunix.net/forum-240-1.html
1、全部跟蹤服務器和存儲服務器均執行以下操做
一、編譯和安裝所需的依賴包:
# yum install make cmake gcc gcc-c++
二、安裝libfastcommon:
(1)上傳或下載libfastcommon-master.zip到/usr/local/src目錄
(2)解壓
# cd /usr/local/src/
# unzip libfastcommon-master.zip
# cd libfastcommon-master
(3) 編譯、安裝
# ./make.sh
# ./make.sh install
libfastcommon默認安裝到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so
(4)由於FastDFS主程序設置的lib目錄是/usr/local/lib,因此須要建立軟連接.
# 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
三、安裝FastDFS
(1)上傳或下載FastDFS源碼包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目錄
(2)解壓
# cd /usr/local/src/
# tar -zxvf FastDFS_v5.05.tar.gz
# cd FastDFS
(3)編譯、安裝(編譯前要確保已經成功安裝了libfastcommon)
# ./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
(4)由於FastDFS服務腳本設置的bin目錄是/usr/local/bin,但實際命令安裝在/usr/bin,能夠進入
/user/bin目錄使用如下命令查看fdfs的相關命令:
# cd /usr/bin/
# ls | grep fdfs
所以須要修改FastDFS服務腳本中相應的命令路徑,也就是把/etc/init.d/fdfs_storaged
和/etc/init.d/fdfs_trackerd兩個腳本中的/usr/local/bin修改爲/usr/bin:
# vi fdfs_trackerd
使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin
# vi fdfs_storaged
使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin
2、配置FastDFS跟蹤器(192.168.4.121)
# cd /etc/fdfs/
# cp tracker.conf.sample tracker.conf
# vi /etc/fdfs/tracker.conf
修改的內容以下:
disabled=false
port=22122
base_path=/fastdfs/tracker
(其它參數保留默認配置,具體配置解釋請參考官方文檔說明:
http://bbs.chinaunix.net/thread-1941456-1-1.html )
# mkdir -p /fastdfs/tracker
# vi /etc/sysconfig/iptables
添加以下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重啓防火牆:
# service iptables restart
# /etc/init.d/fdfs_trackerd start
(初次成功啓動,會在/fastdfs/tracker目錄下建立data、logs兩個目錄)
查看FastDFS Tracker是否已成功啓動:
# ps -ef | grep fdfs
# /etc/init.d/fdfs_trackerd stop
# vi /etc/rc.d/rc.local
添加如下內容:
## FastDFS Tracker
/etc/init.d/fdfs_trackerd start
3、配置FastDFS存儲(192.168.4.125)
# cd /etc/fdfs/
# cp storage.conf.sample storage.conf
# vi /etc/fdfs/storage.conf
修改的內容以下:
disabled=false
port=23000
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
tracker_server=192.168.4.121:22122
http.server_port=8888
(其它參數保留默認配置,具體配置解釋請參考官方文檔說明:
http://bbs.chinaunix.net/thread-1941456-1-1.html )
# mkdir -p /fastdfs/storage
# vi /etc/sysconfig/iptables
添加以下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重啓防火牆:
# service iptables restart
# /etc/init.d/fdfs_storaged start
(初次成功啓動,會在/fastdfs/storage目錄下建立data、logs兩個目錄)
查看FastDFS Storage是否已成功啓動
# ps -ef | grep fdfs
# /etc/init.d/fdfs_storaged stop
# vi /etc/rc.d/rc.local
添加:
## FastDFS Storage
/etc/init.d/fdfs_storaged start
4、文件上傳測試(192.168.4.121)
一、修改Tracker服務器中的客戶端配置文件:
# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
# vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker
tracker_server=192.168.4.121:22122
二、執行以下文件上傳命令:
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz
返回ID號:group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz
(能返回以上文件ID,說明文件上傳成功)
6、在每一個存儲節點上安裝nginx
一、fastdfs-nginx-module做用說明
FastDFS經過Tracker服務器,將文件放在Storage服務器存儲,可是同組存儲服務器之間須要進入文件複製,有同步延遲的問題。假設Tracker服務器將文件上傳到了192.168.4.125,上傳成功後文件ID已經返回給客戶端。此時FastDFS存儲集羣機制會將這個文件同步到同組存儲192.168.4.126,在文件尚未複製完成的狀況下,客戶端若是用這個文件ID在192.168.4.126上取文件,就會出現文件沒法訪問的錯誤。而fastdfs-nginx-module能夠重定向文件鏈接到源服務器取文件,避免客戶端因爲複製延遲致使的文件沒法訪問錯誤。(解壓後的fastdfs-nginx-module在nginx安裝時使用)
二、上傳fastdfs-nginx-module_v1.16.tar.gz到/usr/local/src
三、解壓
# cd /usr/local/src/
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
四、修改fastdfs-nginx-module的config配置文件
# cd fastdfs-nginx-module/src
# vi config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改成:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
(注意:這個路徑修改是很重要的,否則在nginx編譯的時候會報錯的)
五、上傳當前的穩定版本Nginx(nginx-1.6.2.tar.gz)到/usr/local/src目錄
六、安裝編譯Nginx所需的依賴包
# yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
七、編譯安裝Nginx(添加fastdfs-nginx-module模塊)
# cd /usr/local/src/
# tar -zxvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src
# make && make install
八、複製fastdfs-nginx-module源碼中的配置文件到/etc/fdfs目錄,並修改
# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# vi /etc/fdfs/mod_fastdfs.conf
修改如下配置:
connect_timeout=10
base_path=/tmp
tracker_server=192.168.4.121:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/fastdfs/storage
九、複製FastDFS的部分配置文件到/etc/fdfs目錄
# cd /usr/local/src/FastDFS/conf
# cp http.conf mime.types /etc/fdfs/
十、在/fastdfs/storage文件存儲目錄下建立軟鏈接,將其連接到實際存放數據的目錄
# ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
十一、配置Nginx
# cd /usr/local/src/nginx-1.6.2/conf
# vi nginx.conf
簡潔版nginx配置樣例:
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
location ~/group([0-9])/M00 {
#alias /fastdfs/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
注意、說明:
A、8888端口值是要與/etc/fdfs/storage.conf中的http.server_port=8888 相對應,
由於http.server_port默認爲8888,若是想改爲80,則要對應修改過來。
B、Storage對應有多個group的狀況下,訪問路徑帶group名,如/group1/M00/00/00/xxx,
對應的Nginx配置爲:
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
C、如查下載時如發現老報404,將nginx.conf第一行user nobody修改成user root後從新啓動。
十二、防火牆中打開Nginx的8888端口
# vi /etc/sysconfig/iptables
添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
# service iptables restart
1三、啓動Nginx
# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=xxx
(重啓Nginx的命令爲:/usr/local/nginx/sbin/nginx -s reload)
設置開啓啓動nginx
# vi /etc/rc.local
su - root -c '/usr/local/nginx/sbin/nginx'
1四、經過瀏覽器訪問測試時上傳的文件
http://192.168.4.125:8888/group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz