安裝libfastcommonnginx
首先第一步是安裝libfastcommon,我這裏將libfastcommon上傳到的/opt目錄下,直接解壓:c++
yum -y install gcc-c++vim
yum -y install unzip zip瀏覽器
unzip libfastcommon-master.zip服務器
進入目錄tcp
./make.sh工具
./make.sh install測試
至此libfastcommon就已經安裝成功了,但注意一下上圖中紅色框標註的內容,libfastcommon.so 默認安裝到了/usr/lib64/libfastcommon.so,可是FastDFS主程序設置的lib目錄是/usr/local/lib,因此此處須要從新設置軟連接(相似於Windows的快捷方式):ui
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.sourl
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了
安裝FastDFS
tar -zxvf fastdfs-5.05.tar.gz
進入目錄
./make.sh
./make.sh install
沒錯,正是安裝到了/etc/fdfs中,咱們看一下該目錄下的文件:
安裝成功後就會生成如上的3個.sample文件,咱們再分別拷貝出3個後面用的正式的配置文件
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
以後再查看一下/etc/fdfs的文件目錄
至此FastDFS已經安裝完畢,接下來的工做就是依次配置Tracker和Storage了。
Tracker
在配置Tracker以前,首先須要建立Tracker服務器的文件路徑,即用於存儲Tracker的數據文件和日誌文件等,我這裏選擇在/opt目錄下建立一個fastdfs_tracker目錄用於存放Tracker服務器的相關文件:
mkdir /opt/fastdfs_tracker
接下來就要從新編輯上一步準備好的/etc/fdfs目錄下的tracker.conf配置文件,打開文件後依次作如下修改:
disabled=false #啓用配置文件(默認啓用)
port=22122 #設置tracker的端口號,一般採用22122這個默認端口
base_path=/opt/fastdfs_tracker #設置tracker的數據文件和日誌目錄
http.server_port=6666 #設置http端口號,默認爲8080
配置完成後就能夠啓動Tracker服務器了,但首先依然要爲啓動腳本建立軟引用,由於fdfs_trackerd等命令在/usr/local/bin中並無,而是在/usr/bin路徑下:
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
最後經過命令啓動Tracker服務器:
service fdfs_trackerd start
若是啓動命令執行成功,那麼同時在剛纔建立的tracker文件目錄/opt/fastdfs_tracker中就能夠看到啓動後新生成的data和logs目錄,tracker服務的端口也應當被正常監聽,最後再經過netstat命令查看一下端口監聽狀況沒有 ifconfig 和netstat -an 的話安裝 net-tools package
yum install net-tools
netstat -unltp|grep fdfs
確認tracker正常啓動後能夠將tracker設置爲開機啓動,打開/etc/rc.d/rc.local並在其中加入如下配置:
vim /etc/rc.d/rc.local
service fdfs_trackerd start
若是重啓後發現未能自動啓動則經過命令ll /etc/rc.d/rc.local檢查一下rc.local是否具有可執行權限,如果無可執行權限則經過chmod +x /etc/rc.d/rc.local進行受權
chmod +x /etc/rc.d/rc.local
Tracker至此就配置好了,接下來就能夠配置FastDFS的另外一核心——Storage。
Storage
同理,步驟基本與配置Tracker一致,首先是建立Storage服務器的文件目錄,須要注意的是同Tracker相比我多建了一個目錄,由於Storage還須要一個文件存儲路徑,用於存放接收的文件:
mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data
接下來修改/etc/fdfs目錄下的storage.conf配置文件,打開文件後依次作如下修改:
disabled=false #啓用配置文件(默認啓用)
group_name=group1 #組名,根據實際狀況修改
port=23000 #設置storage的端口號,默認是23000,同一個組的storage端口號必須一致
base_path=/opt/fastdfs_storage #設置storage數據文件和日誌目錄
store_path_count=1 #存儲路徑個數,須要和store_path個數匹配
store_path0=/opt/fastdfs_storage_data #實際文件存儲路徑
tracker_server=192.168.111.11:22122 #tracker 服務器的 IP地址和端口號,若是是單機搭建,IP不要寫127.0.0.1,不然啓動不成功(此處的ip是個人CentOS虛擬機ip)
http.server_port=8888 #設置 http 端口號
配置完成後一樣要爲Storage服務器的啓動腳本設置軟引用:
ln -s /usr/bin/fdfs_storaged /usr/local/bin
接下來就能夠啓動Storage服務了:
service fdfs_storaged start
同理,若是啓動成功,/opt/fastdfs_storage中就能夠看到啓動後新生成的data和logs目錄,端口23000也應被正常監聽,還有一點就是文件存儲路徑下會生成多級存儲目錄,那麼接下來看看是否啓動成功了
netstat -unltp|grep fdfs
能夠看到/opt/fastdfs_storage/data目錄下生成好的pid文件和dat文件,那麼再看一下實際文件存儲路徑下是否有建立好的多級目錄呢:
如上圖,能夠看到/opt/fastdfs_storage/data目錄下生成好的pid文件和dat文件,那麼再看一下實際文件存儲路徑下是否有建立好的多級目錄呢:
如上圖,沒有任何問題,data下有256個1級目錄,每級目錄下又有256個2級子目錄,總共65536個文件,新寫的文件會以hash的方式被路由到其中某個子目錄下,而後將文件數據直接做爲一個本地文件存儲到該目錄中。那麼最後咱們再看一下storage服務的端口監聽狀況:
如上圖,能夠看到此時已經正常監聽tracker的22122端口和storage的23000端口,至此storage服務器就已經配置完成,肯定了storage服務器啓動成功後,還有一項工做就是看看storage服務器是否已經登記到 tracker服務器(也能夠理解爲tracker與storage是否整合成功),運行如下命令:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
如上所示,看到192.168.111.11 ACTIVE 字樣便可說明storage服務器已經成功登記到了tracker服務器,同理別忘了添加開機啓動,打開/etc/rc.d/rc.local並將以下配置追加到文件中:
vim /etc/rc.d/rc.local
service fdfs_storaged start
至此咱們就已經完成了fastdfs的所有配置,此時也就能夠用客戶端工具進行文件上傳下載的測試了。
初步測試
測試時須要設置客戶端的配置文件,編輯/etc/fdfs目錄下的client.conf 文件,打開文件後依次作如下修改:
base_path=/opt/fastdfs_tracker #tracker服務器文件路徑
tracker_server=192.168.111.11:22122 #tracker服務器IP地址和端口號
http.tracker_server_port=6666 # tracker 服務器的 http 端口號,必須和tracker的設置對應起來
配置完成後就能夠模擬文件上傳了,先給/opt目錄下放一張圖片
而後經過執行客戶端上傳命令嘗試上傳:
這就表示咱們的文件已經上傳成功了,當文件存儲到某個子目錄後,即認爲該文件存儲成功,接下來會爲該文件生成一個文件名,文件名由group、存儲目錄、兩級子目錄、fileid、文件後綴名(由客戶端指定,主要用於區分文件類型)拼接而成,以下圖:
同時在以前配置的storage服務器的實際文件存儲路徑中也能夠根據返回的路徑找到實際文件:
---------------------------------------------------------------------------------------
安裝Nginx
上面將文件上傳成功了,但咱們沒法下載。所以安裝Nginx做爲服務器以支持Http方式訪問文件。同時,後面安裝FastDFS的Nginx模塊也須要Nginx環境。
Nginx只須要安裝到StorageServer所在的服務器便可,用於訪問文件。我這裏因爲是單機,TrackerServer和StorageServer在一臺服務器上。
1、安裝nginx所需環境
① gcc 安裝
# yum install gcc-c++
② PCRE pcre-devel 安裝
# yum install -y pcre pcre-devel
③ zlib 安裝
# yum install -y zlib zlib-devel
④ OpenSSL 安裝
# yum install -y openssl openssl-devel
2、安裝Nginx
① 下載nginx
# wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
② 解壓
# tar -zxvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1
③ 使用默認配置
# ./configure
④ 編譯、安裝
# make
# make install
⑤ 啓動nginx
# cd /usr/local/nginx/sbin/
# ./nginx
其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload
⑥ 設置開機啓動
# vim /etc/rc.d/rc.local
添加一行:
/usr/local/nginx/sbin/nginx
# 設置執行權限
# chmod 755 rc.local
⑦ 查看nginx的版本及模塊
/usr/local/nginx/sbin/nginx -V
⑧ 防火牆中打開Nginx端口(默認的 80)
添加後就能在本機使用80端口訪問了。
# vim /etc/sysconfig/iptables
添加以下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重啓防火牆:
# service iptables restart
3、訪問文件
簡單的測試訪問文件
① 修改nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
添加以下行,將 /group1/M00 映射到 /ljzsg/fastdfs/file/data
location /group1/M00 {
alias /ljzsg/fastdfs/file/data;
}
# 重啓nginx
# /usr/local/nginx/sbin/nginx -s reload
② 在瀏覽器訪問以前上傳的圖片、成功。
http://172.30.60.19/group1/M00/00/00/rB48E1rf8LGAXL2lAAB0KGv2sTo474.jpg
4、FastDFS 配置 Nginx 模塊
1、安裝配置Nginx模塊
① fastdfs-nginx-module 模塊說明
FastDFS 經過 Tracker 服務器,將文件放在 Storage 服務器存儲, 可是同組存儲服務器之間須要進行文件複製, 有同步延遲的問題。
假設 Tracker 服務器將文件上傳到了 192.168.51.128,上傳成功後文件 ID已經返回給客戶端。
此時 FastDFS 存儲集羣機制會將這個文件同步到同組存儲 192.168.51.129,在文件尚未複製完成的狀況下,客戶端若是用這個文件 ID 在 192.168.51.129 上取文件,就會出現文件沒法訪問的錯誤。
而 fastdfs-nginx-module 能夠重定向文件連接到源服務器取文件,避免客戶端因爲複製延遲致使的文件沒法訪問錯誤。
② 下載 fastdfs-nginx-module、解壓
③ 配置Nginx
在nginx中添加模塊
# 先停掉nginx服務
# /usr/local/nginx/sbin/nginx -s stop
進入解壓包目錄
# cd nginx-1.10.0/
# 添加模塊
# ./configure --add-module=/opt/fastdfs-nginx-module-master/src
從新編譯、安裝
# make && make install
④ 查看Nginx的模塊
# /usr/local/nginx/sbin/nginx -V
⑤ 複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄, 並修改
# cd /softpackages/fastdfs-nginx-module-master/src
# cp mod_fastdfs.conf /etc/fdfs/
修改以下配置,其它默認
# 鏈接超時時間
connect_timeout=10
# Tracker Server
tracker_server=file.ljzsg.com:22122
# StorageServer 默認端口
storage_server_port=23000
# 若是文件ID的uri中包含/group**,則要設置爲true
url_have_group_name = true
# Storage 配置的store_path0路徑,必須和storage.conf中的一致
store_path0=/ljzsg/fastdfs/file
⑥ 複製 FastDFS 的部分配置文件到/etc/fdfs 目錄
# cd /softpackages/fastdfs-5.05/conf/
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
⑦ 配置nginx,修改nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
修改配置,其它的默認
在80端口下添加fastdfs-nginx模塊
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
注意:
listen 80 端口值是要與 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改爲80了)相對應。若是改爲其它端口,則須要統一,同時在防火牆中打開該端口。
location 的配置,若是有多個group則配置location ~/group([0-9])/M00 ,沒有則不用配group。
⑧ 在/ljzsg/fastdfs/file 文件存儲目錄下建立軟鏈接,將其連接到實際存放數據的目錄,這一步能夠省略。
# ln -s /ljzsg/fastdfs/file/data/ /ljzsg/fastdfs/file/data/M00
⑨ 啓動nginx
# /usr/local/nginx/sbin/nginx
打印處以下就算配置成功
⑩ 在地址欄訪問。
能下載文件就算安裝成功。注意和第三點中直接使用nginx路由訪問不一樣的是,這裏配置 fastdfs-nginx-module 模塊,能夠重定向文件連接到源服務器取文件。
http://172.30.60.19/group1/M00/00/00/rB48E1rf9BGAG6W9AACCVif2Dzc224.jpg