也不說廢話,直接幹
上一篇 分佈式文件系統 - FastDFS 在 CentOS 下配置安裝部署 中安裝了 FastDFS 後,並配置啓動了 Tracker 和 Storage 服務,已經可以上傳文件了,但是我沒有上傳測試,因爲上傳成功我看不了,所以,需要配合 Nginx 來進行文件的上傳下載,這一篇就安裝 Nginx 以及結合 fastdfs-nginx-module 模塊使用。
一、安裝 Nginx 和 fastdfs-nginx-module
安裝 Nginx 請看:從零開始學 Java - CentOS 下安裝 Nginx,其實我只想放這一句話。但想想我還是一步一步寫詳細吧。
1.下載 Nginx 和 fastdfs-nginx-module ,這裏是通過wget
下載(我喜歡這種方式)。
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
2.解壓 fastdfs-nginx-module ,記着這時候別用tar
解壓了,因爲是 .zip
文件,正確命令:
unzip master.zip
3.配置 nginx 安裝,加入fastdfs-nginx-module
模塊。這是和普通
Nginx 安裝不一樣的地方,因爲加載了模塊。
./configure --add-module=../fastdfs-nginx-module-master/src/
但是,萬萬沒想到,報錯啦!有些文件顯示not
found
錯誤。更多看下圖,都是錯誤:
比如這些gcc、PCRE
這些沒找到,說明我們服務器並未安裝,所以,我們進行下安裝即可了,我在 從零開始學
Java - CentOS 下安裝 Nginx 有gcc、
PCRE pcre-devel、 zlib、 OpenSSL
的安裝命令,都安裝一下之後我們再次進行 Nginx 的安裝,顯示下面的界面就是安裝成功啦!
這時候,我們可以看一下 Nginx 下安裝成功的版本及模塊,命令:
/usr/local/nginx/sbin/nginx -V
二、配置 fastdfs-nginx-module 和 Nginx
1.配置mod-fastdfs.conf
,並拷貝到/etc/fdfs
文件目錄下。
cd /software/fastdfs-nginx-module-master/src/
vim mod_fastdfs.conf
cp mod_fastdfs.conf /etc/fdfs
修改mod-fastdfs.conf
配置只需要修改我標註的這三個地方就行了,其他不需要也不建議改變。
# FastDFS tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=192.168.198.129:22122
# if the url / uri including the group name
# set to false when uri like /M00/00/00/xxx
# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name = true
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf
store_path0=/data/fastdfs/storage
#store_path1=/home/yuqing/fastdfs1
接着我們需要把fastdfs-5.05
下面的配置中還沒有存在/etc/fdfs
中的拷貝進去
cd /software/fastdfs-5.05/conf
cp anti-steal.jpg http.conf mime.types /etc/fdfs/
2.配置 Nginx。編輯nginx.conf
文件:
cd /usr/local/nginx/conf
vi nginx.conf
在配置文件中加入:
location /group1/M00 {
root /data/fastdfs/storage/;
ngx_fastdfs_module;
}
由於我們配置了group1/M00
的訪問,我們需要建立一個group1
文件夾,並建立M00到data
的軟鏈接。
mkdir /data/fastdfs/storage/data/group1
ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/group1/M00
啓動 Nginx ,會打印出fastdfs模塊的pid,看看日誌是否報錯,正常不會報錯的
/usr/local/nginx/sbin/nginx
打開瀏覽器,訪問一下發現並不能訪問,也並沒有報錯,但顯示如下畫面。糟糕了,怎麼辦?對了,我好像沒關閉防火牆。
開放80端口
訪問權限。在iptables
中加入重啓就行,或者你直接關閉防火牆,本地測試環境可以這麼幹,但到線上萬萬不能關閉防火牆的。
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重啓防火牆,使設置生效:
service iptables restart
再次刷新瀏覽器,可以看到如下畫面,說明我們 Nginx 結合 fastdfs-nginx-module 模塊安裝並配置成功啦!
我最後說一下怎麼在已經安裝過 Nginx 的服務器上安裝配置 fastdfs-nginx-module 模塊? 因爲,一般我們線上服務器都是已經安裝過 Nginx 的,所以這個時候,我們就直接進入 Nginx 的存放目錄,進行配置後編譯,就不需要執行最後安裝make
install
這一步了,接着重啓就行了。
上傳測試
完成上面的步驟後,我們已經安裝配置完成了全部工作,接下來就是測試了。因爲執行文件全部在/usr/bin
目錄下,我們切換到這裏,並新建一個test.txt
文件,隨便寫一點什麼,我寫了This
is a test file. by:mafly
這句話在裏邊。然後測試上傳:
cd /usr/bin
vim test.txt
fdfs_test /etc/fdfs/client.conf upload test.txt
很不幸,並沒有成功,報錯了。
ERROR - file: shared_func.c, line: 960, open file /etc/fdfs/client.conf fail, errno: 2, error info: No such file or directory
ERROR - file: ../client/client_func.c, line: 402, load conf file "/etc/fdfs/client.conf" fail, ret code: 2
一般什麼事情第一次都不是很順利,這很正常,通過錯誤提示我看到,好像沒有找到client.conf
這個文件,現在想起來的確沒有配置這個文件,那我們現在去配置一下圖中的兩個參數:
cd /etc/fdfs
cp client.conf.sample client.conf
vim client.conf
怎麼還依然報錯阿???
upload file fail, error no: 2, error info: No such file or directory
哈哈,你是不是測試上傳命令中要上傳的test.txt
文件路徑有問題,嗯,那我改一下命令:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/bin/test.txt
成功啦!!! 返回文件信息及上傳後的文件 HTTP 地址,你打開瀏覽器訪問一下試試
總結一下
這篇文章一步一步的講了通過 Nginx 結合fastdfs-nginx-module
模塊來進行上傳測試及下載工作,當然這也需要結合上一篇
Tracker 和 Storage 服務來進行,這算是整體進行了 FastDFS 的安裝與配置,分佈式的配置也幾乎和這沒差別,只不過是增加了不同組和多臺服務器,有機會希望你親自試試。