上一篇博客,咱們一塊兒搭建了storage和tracker集羣,FastDFS集羣還未搭建完畢,不過因爲篇幅過長,所以須要分紅兩篇來寫。html
1、tracker和storage集羣上傳圖片測試nginx
因爲目前尚未搭建完集羣,所以咱們暫且在tracker的一臺設備上(咱們就選擇192.168.156.5這臺設備)使用client來上傳圖片進行測試。正則表達式
1.進入到/etc/fdfs/目錄下,咱們能夠看到client.conf.sample這麼一個配置文件,以下圖所示。shell
2.咱們使用命令:cp client.conf.sample client.conf複製一份該文件並命名爲client.conf,以下圖所示。vim
3.修改client.conf配置文件,使用命令:vim client.conf,須要修改的配置有base_path=/fastdfs/tracker、tracker_server=192.168.156.5:22122和
tracker_server=192.168.156.6:22122,以下圖所示。其中/fastdfs/tracker這個目錄咱們已經建立過了,所以這時不須要再建立了。tcp
4.下面咱們來上傳一張圖片,我把/usr/local目錄下一張3.jpg圖片上傳,使用的命令:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg,能夠看到這條命令由3部分組成,第一部分是/usr/bin/fdfs_upload_file,意思是指定要進行上傳文件操做,第二部分是/etc/fdfs/client.conf,意思是指定上傳操做使用的配置文件,這個配置文件就是咱們上面剛配置過的client.conf文件,第三部分是/usr/local/3.jpg,意思是指定要上傳哪一個目錄下的哪一個文件。按回車執行上傳命令後,會返回一個串:group1/M00/00/00/wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg,其中group1表示這張圖片被保存在了哪一個組當中,M00表明磁盤目錄,若是電腦只有一個磁盤那就只有M00, 若是有多個磁盤,那就M0一、M02...等等。00/00表明磁盤上的兩級目錄,每級目錄下是從00到FF共256個文件夾,兩級就是256*256個。wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg表示被存儲到storage上的3.jpg被重命名的名字,這樣作的目的是爲了防止圖片名字重複。測試
咱們到兩組group所在的四臺設備的/fastdfs/storage/data/00/00目錄下查看一下是否有咱們剛纔上傳的圖片,發現192.168.156.7和192.168.156.8兩臺設備上有該圖片,而192.168.156.9和192.168.156.10兩臺設備上沒有該圖片。這是因爲192.168.156.7和192.168.156.8兩臺設備屬於group1,而192.168.156.9和192.168.156.10屬於group2,返回的圖片信息中明確說明了存儲在了group1下面,所以可group2下面是沒有該圖片的。url
咱們在搭建集羣的時候,配置的策略是輪詢策略,那麼咱們如今再上傳一次該圖片,看是否會存儲到group2下面。以下圖所示,發現此次返回的路徑信息中顯示存儲到了group2下面。.net
下面再到四臺設備下的/fastdfs/storage/data/00/00目錄下查看下圖片信息,發現192.168.156.7和192.168.156.8這兩臺設備的圖片仍是剛纔那一張,並無新增圖片。而192.168.156.9和192.168.156.10這兩臺設備上新增了咱們剛纔上傳的圖片,這說明第二次上傳確實是存儲到了group2上面。rest
你們能夠屢次上傳圖片,就能夠看到存儲確實是一次group1,一次group2,輪詢進行存儲的,以下圖所示。
這裏說一個狀況,那就是同處一個組的某臺設備若是發生了故障,那麼這時上傳的文件將只能存放到其它同組設備上,等故障設備修復後,同組的其它設備會自動將數據同步到該故障設備上,這個不用咱們干預。
2、配置Ngnix
1.到目前爲止,咱們仍是不可以使用http方式來上傳或下載文件的,所以咱們須要配置下nginx來達到這個目的。咱們先關閉除兩個組所在的四臺以外的其它全部設備,而後把剩下的這四臺設備切換到/usr/local/software目錄下,以下圖所示。
2.這四臺設備都須要執行同一個操做,那就是解壓fastdfs-nginx-module_v1.16.tar.gz,咱們把命令:tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/複製到下面那個輸入框中,默認狀況下,在這個輸入框中輸入命令並按回車,命令執行的範圍是當前會話,爲了同時在四臺設備上執行一樣的命令,咱們能夠切換到"所有Xshell(X)"。以下圖所示。
切換到"所有Xshell(X)"後,以下圖所示,能夠看到輸入框左邊的那個圖標切換成了多個窗口的圖標。這時咱們把鼠標放到輸入框中,按回車即可同時在四臺設備上執行相同的命令。
解壓信息以下圖所示,其它設備我就不一一截圖了。
3.四臺設備都須要進入到/usr/local/fast/fastdfs-nginx-module/src/這個目錄下,所以咱們把cd /usr/local/fast/fastdfs-nginx-module/src/命令放到下面的輸入框中並按回車。
咱們能夠看到在/usr/local/fast/fastdfs-nginx-module/src/這個目錄下有個config配置文件,咱們須要修改下該文件。
咱們在下面的全局輸入框中輸入"vim config"同時打開四臺設備的該配置文件,以下圖所示,該配置文件的第四行咱們須要作下修改,這是由於咱們前面爲了查看方便而把東西放到了/usr/local/include下,可是實際執行make install安裝時卻安裝在了/usr/include下面,也就是咱們多了一層local目錄,所以咱們須要把該行的兩個local目錄去掉。
去掉local目錄後以下圖所示。一樣的,咱們把其它三臺設備的這行配置也都去掉local目錄。
4.安裝nginx依賴包
把下面四條命令執行一遍。
yum install pcre
yum install pcre-devel
yum install zlib
yum install zlib-devel
5.安裝nginx
四臺設備都進入到/usr/local/software目錄下,該目錄下nginx-1.6.2.tar.gz是nginx安裝包。
把解壓命令:tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/輸入到下面的輸入框中,回車便可在這四臺設備上同時執行解壓操做。
安裝完以後,咱們都進入到/usr/local/nginx-1.6.2/目錄下,而後在下面的輸入框中輸入命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/並按回車,在四臺設備上都加入下模塊並進行檢查。
檢查信息以下圖所示。
檢查完以後,咱們在下面輸入框中輸入命令make && make install,回車,四臺設備同時執行編譯安裝操做。
安裝信息中沒有出現錯誤信息,說明咱們的安裝成功,安裝完以後,咱們到/usr/local/目錄下,能夠看到多了一個nginx的文件夾,以下圖所示。
下面咱們到/usr/local/fast/fastdfs-nginx-module/src/目錄下,咱們仍是在輸入框中輸入cd /usr/local/fast/fastdfs-nginx-module/src/並回車,四臺設備都進入到該目錄下。
咱們將cp mod_fastdfs.conf /etc/fdfs/複製到/etc/fdfs/目錄下,咱們在下面輸入框中輸入命令cp mod_fastdfs.conf /etc/fdfs/並按回車,四臺設備同時進行復制操做。
複製完以後,咱們修改/etc/fdfs/目錄下的mod_fastdfs.conf,咱們使用命令vim /etc/fdfs/mod_fastdfs.conf來編輯192.168.156.7上的該文件。
須要修改的地方以下:
connect_timeout=10
tracker_server=192.168.156.5:22122
tracker_server=192.168.156.6:22122
storage_server_port=23000//默認就是2300,不用作修改
url_have_group_name=true
store_path0=/fastdfs/storage
group_name=group1
group_count=2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
修改後以下圖所示。
咱們把192.168.156.7上的這個配置文件複製到其它三臺設備上,先到/etc/fdfs/目錄下,以下圖所示。
使用命令:scp mod_fastdfs.conf 192.168.156.8:/etc/fdfs/、scp mod_fastdfs.conf 192.168.156.9:/etc/fdfs/、scp mod_fastdfs.conf 192.168.156.10:/etc/fdfs/進行復制。
複製完以後,咱們到八、九、10這三臺設備上看下配置文件是否就是咱們剛纔複製過去的文件。因爲192.168.156.8這臺設備與192.168.156.7這臺設備同屬group1,所以192.168.156.8這臺設備不用作修改。咱們只需把192.168.156.9和192.168.156.10這兩臺設備的這個配置文件的group名稱改成group2便可。192.168.156.9的修改以下圖所示,192.168.156.10與之同樣。
接下來,咱們須要把/usr/local/fast/FastDFS/conf/目錄下的http.conf和mime.types兩個文件複製到/etc/fdfs/目錄下,因爲這四臺設備的這步操做都同樣,所以咱們在下面的輸入框中輸入cd /usr/local/fast/FastDFS/conf/並回車,都進入到該目錄下,而後輸入命令cp http.conf mime.types /etc/fdfs/並回車,在四臺設備同時進行復制操做。
複製完以後,咱們給四個節點都建立一下軟連接,因爲步驟都同樣,所以在下面輸入框中輸入建立軟連接命令:ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00並同時執行就能夠了。以下圖所示。
建立完軟連接以後,咱們來配置下nginx,因爲四個節點操做同樣,咱們都進入到/usr/local/nginx/conf/這個目錄下,並使用命令vim nginx.conf來編輯該文件,咱們須要修改的地方有listen端口,把它由80改爲8888,至於緣由,是由於咱們在上篇博客搭建storage的時候使用的端口是8888,所以這裏也須要使用8888。另外一個修改的地方是location,修改代碼以下,路徑採用正則表達式來匹配,匹配group0到group9下的M00前綴。因爲fastdfs與nginx的模塊結合,所以須要在location當中添加該模塊。
[html] view plain copy
修改完192.168.156.7以後,咱們把這個配置文件再複製到其它三臺設備上。在用scp複製文件到其它設備的時候,反應很慢,加上-o GSSAPIAuthentication=no會快點,但仍是不夠快,解決辦法是咱們能夠在/etc/hosts文件當中配置全部要通訊的設備的IP和名稱的映射,這樣scp就很快了。
6.四臺設備都啓動nginx,咱們在下面的輸入框中輸入/usr/local/nginx/sbin/nginx並按回車,四臺設備同時啓動nginx。
7.啓動完nginx以後,咱們如今即可以經過http的方式訪問上傳到FastDFS上的文件了,好比咱們如今再把那個3.jpg文件上傳一次並拿回顯地址去訪問,以下所示(注意:上傳是在192.168.156.5上進行的)。
[html] view plain copy
咱們在地址欄輸入:http://192.168.156.7:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,這時咱們訪問不到圖片,以下圖所示。
緣由是咱們的虛擬機的防火牆把端口8888給阻攔了,禁止外界訪問,解決方法有兩個:
1.關閉虛擬機的防火牆,並禁止開啓自啓動,你們能夠參考:http://blog.csdn.NET/u012453843/article/details/52411019這篇博客進行防火牆的關閉操做。
2.不關閉防火牆,只是讓外界能夠訪問8888端口,這在實際環境中更實用,所以,咱們採用方法2。
方法2的操做方法以下:
使用命令:vim /etc/sysconfig/iptables打開編輯界面,以下圖所示,咱們添加的一行內容是:-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
編輯完以後,保存退出,以後須要從新啓動防火牆,重啓的命令:service iptables restart,以下圖所示。
這樣192.168.156.7這臺設備的防火牆咱們便配置好了,其它三臺設備咱們也都配置一下防火牆。
配置過防火牆以後,咱們再訪問http://192.168.156.7:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,這時咱們即可以看到圖片了,以下圖所示: