FastDFS分佈式文件存儲,具體介紹不在闡述,有不少相關的資料介紹。這裏描述一下FastDFS存儲應用的搭建過程:html
1、環境:java
一、操做系統 :centos6.5nginx
二、FastDFS版本: 5.0.8c++
三、Nginx版本: 1.8.1git
2、架構規劃:github
說明:vim
使用最小架構,構建一組存儲系統centos
一、使用一個tracker 追蹤節點,同時部署Nginx ,作 Storage 上Nginx的反向代理;瀏覽器
二、使用兩個Storage存儲節點,同時部署Nginx,支持http在線預覽文件、http下載。服務器
3、具體部署操做:
一、下載並安裝FastDFS依賴包libfastcommon
wget https://codeload.github.com/happyfish100/libfastcommon/zip/master unzip master cd libfastcommon-master/ ./make.sh ./make.sh install
二、下載並安裝FastDFS
wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz tar xf FastDFS_v5.08.tar.gz cd FastDFS ./make.sh && ./make.sh install
三、採用默認方式安裝後的文件及目錄:
ll /etc/init.d/ |grep fdfs ll /etc/fdfs/ ll /usr/bin|grep fdfs
以上三個步驟在 三臺機器上一樣的操做。
四、配置跟蹤服務器(tracker server)
1)拷貝tracker server和client端樣例配置文件並重命名
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
2)編輯tracker server配置文件tracker.conf,這裏須要注意的是你的服務器磁盤掛載的目錄空間
可使用:df -h 命令查看,配置base_path路徑應該是設置到大存儲空間的路徑裏,這個是FastDFS文件存儲的實際路徑。
disabled=false(默認爲false,表示是否無效) port=22122(默認爲22122) base_path=/opt/fastdfs/tracker
3)編輯client端的配置文件client.conf
base_path=/data/fastdfs/tracker tracker_server=192.168.1.72:22122
4)建立tracker server數據目錄,就是上面配置的base_path路徑
mkdir -p /opt/fastdfs/tracker
5)測試啓動tracker server,查看22122端口是否監聽
/etc/init.d/fdfs_trackerd start ss -lntup|grep 22122
五、配置存儲服務器(storage server)
1)拷貝storage server樣例配置文件並重命名
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
2)編輯storage server配置文件storage.conf
disabled=false(默認爲false,表示是否無效) port=23000(默認爲23000) base_path=/opt/fastdfs/storage tracker_server=192.168.1.72:22122 store_path0=/opt/fastdfs/storage http.server_port=8888(默認爲8888,nginx中配置的監聽端口)
3)建立storage server數據目錄
mkdir -p /data/fastdfs/storage
4)測試啓動storage server,查看23000端口是否已經監聽(啓動storage server的前提是tracker server必須事先已啓動)
/etc/init.d/fdfs_storaged start ss -lntup|grep 23000
5)安裝並配置nginx
wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz tar xf fastdfs-nginx-module_v1.16.tar.gz cd fastdfs-nginx-module/src/ vim config 編輯config文件,執行以下命令進行批量替換並保存退出 :%s+/usr/local/+/usr/+g
6)拷貝fastdfs-nginx-module模塊中配置文件到/etc/fdfs目錄中並編輯
cp /home/oldcat/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ vi /etc/fdfs/mod_fastdfs.conf 修改內容以下: connect_timeout=10 base_path=/tmp(默認爲/tmp ,請使用這個默認路徑,修改路徑的話,有可能http預覽文件失敗) tracker_server=192.168.1.72:22122 storage_server_port=23000(默認配置爲23000) url_have_group_name = true store_path0=/opt/fastdfs/storage group_name=group1(默認配置爲group1)
7)安裝nginx依賴庫,而且安裝Nginx
yum install -y pcre-devel zlib-devel wget http://nginx.org/download/nginx-1.8.1.tar.gz tar xf nginx-1.8.1.tar.gz cd nginx-1.8.1 ./configure --prefix=/application/nginx/ --add-module=../fastdfs-nginx-module/src/ make && make install
若是過程提示 gcc 等依賴安裝,就添加安裝gcc
yum install gcc-c++
8)拷貝FastDFS中的部分配置文件到/etc/fdfs目錄中
cp /home/oldcat/tools/FastDFS/conf/http.conf /etc/fdfs/ cp /home/oldcat/tools/FastDFS/conf/mime.types /etc/fdfs/
9)配置nginx
vi /application/nginx/conf/nginx.conf 配置如下內容: 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]/ { ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
10)啓動Nginx,並查看8888端口是否已經監聽:
cd /application/nginx/sbin/ ./nginx ss -lntup|grep 8888
在另一臺Storage 服務器上一樣的安裝和配置
六、配置Tracker服務器上Nginx,固然也能夠把Nginx單獨安裝在另一臺服務器上:
1)安裝gcc編譯器
yum install gcc-c++
2)安裝openssl,能夠支持https
yum install openssl openssl-devel -y
3)下載Nginx
wget http://nginx.org/download/nginx-1.8.1.tar.gz
4)解壓安裝
tar xf nginx-1.8.1.tar.gz cd nginx-1.8.1 ./configure --prefix=/application/nginx/ --with-http_ssl_module make && make install
5)配置nginx.conf 配置文件
cd /application/nginx/conf/ vi nginx.conf 修改如下配置: http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream fdfs_group1 { server 192.168.1.79:8888 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.73:8888 weight=1 max_fails=2 fail_timeout=30s; } server { listen 8888; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location ~/group[0-9]/ { proxy_pass http://fdfs_group1; }
主要是增長 upstream fdfs_group1 配置,
配置Storage服務器上的Nginx 的反向代理
location ~/group[0-9]/ {
proxy_pass http://fdfs_group1;
}
七、防火牆端口配置:
請參考這篇文章裏的打開防火牆端口配置 :http://www.javashuo.com/article/p-nhyhicib-v.html
八、啓動各個服務:
啓動tracker /etc/init.d/fdfs_trackerd start 啓動兩個storage /etc/init.d/fdfs_storaged start
九、測試文件上傳:
首先傳一張圖片到tracker 服務上的 home目錄下,而後執行命令上傳到FastDFS文件存儲
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/889.jpg 存儲會返回相似這樣的文件路徑: group1/M00/00/00/wKgBT1sfnFeATLAXAAA1zm8yF5M375.jpg
而後打開瀏覽器,輸入 http://192.168.1.72:8888/group1/M00/00/00/wKgBT1sfnFeATLAXAAA1zm8yF5M375.jpg
正常狀況下瀏覽器能夠直接加載這張上傳後的圖片。
十、配置各個服務開機自啓動項:
1)tracker服務器
vi /etc/rc.d/rc.local 而後添加: /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart /application/nginx/sbin/nginx
2)storage服務器
vi /etc/rc.d/rc.local 而後添加: /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart /application/nginx/sbin/nginx
以上整個文件存儲搭建完成。