注:(引用)首先看一下FastDFS架構示意圖以下:javascript
注:(引用)技術相關術語:css
Tracker Server:跟蹤服務器,主要作調度工做,在訪問上起負載均衡的做用。在內存中記錄集羣中group和storage server的狀態信息,是鏈接Client和 Storage server的樞紐。 由於相關信息所有在內存中,Tracker server的性能很是高,一個較大的集羣(好比上百個group)中有3臺就足夠了。 html
Storage Server:存儲服務器,文件和文件屬性(meta data)都保存到存儲服務器上。java
下面咱們就開始FastDFS的安裝了:node
首先 tracker 與 storage 的安裝基本相同的,只是配置的文件有些差異。nginx
tracker 安裝於 10.20.20.49 c++
storage 安裝於 10.20.20.14(能夠安裝多個storage,爲了方便說明,只列舉一個,其餘的storage安裝步驟相同(storage裏配置了tracker就能夠關聯起來))vim
tracker 與storage 能夠安裝於同一臺機器上,爲了方便擴展建議安裝在不一樣的機器上緩存
先去官網下載相關包服務器
1)FastDFS: https://sourceforge.net/projects/fastdfs/
2)ibfastcommon: https://sourceforge.net/projects/libfastcommon/(FastDFS 依賴工具包)
3)fastdfs-nginx-module :https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/(與nginx 集成用到)
4)ngx_cache_purge-2.3.tar(nginx的緩存用到)
5)nginx:http://nginx.org/en/download.html
安裝tracker:
1.把文件拷貝到 /usr/local ,解壓
tar -zcxf libfastcommon
tar -zxvf FastDFS_v5.05.tar.gz
2.切換到 libfastcommon 目錄
按照這個組件須要先安裝它的依賴:
cd libfastcommon
yum install gcc
yum install gcc-c++
yum install gcc perl
開始安裝:
./make.sh
./make.sh install
3.安裝FastDFS
cd FastDFS
./make.sh
./make.sh install
4.安裝後會在/etc/fdfs/ 目錄生成fdfs的原始文件,切換到該目錄下,複製如下兩個文件:
cd /etc/fdfs
cp client.conf.sample client.conf
cp tracker.conf.sample tracker.conf
5.修改拷貝後的文件,先建立tracker的日誌文件目錄,修改配置
mkdir -p /opt/fdfs/tracker
vim tracker.conf
須要修改的內容: base_path=/opt/fdfs/tracker
tracker_server=10.20.20.49:22122(tracker 的ip)
(更多需求能夠參照網上其餘配置項)
6. 拷貝fdfs命令到指定目錄
cp /usr/bin/fdfs_trackerd /usr/local/bin
cp /usr/bin/fdfs_monitor /usr/local/bin
cp /usr/bin/fdfs_upload_file /usr/local/bin
cp /usr/bin/fdfs_test /usr/local/bin
7. 鏈接目錄
ln -s /usr/include/fastcommon /usr/local/include/fastcommon
ln -s /usr/include/fastdfs /usr/local/include/fastdfs
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
8.前面就已經安裝完tracker了,啓動測試。
fdfs_trackerd /etc/fdfs/tracker.conf start
查看服務: ps -ef|grep fdfs
查看日誌:cat /opt/fdfs/tracker/logs/trackerd.log
到此 tracker 安裝完成。
安裝 storage
注:若是是同一臺機器則(1-3步省略)
1.把文件拷貝到 /usr/local ,解壓
tar -zcxf libfastcommon
tar -zxvf FastDFS_v5.05.tar.gz
2.切換到 libfastcommon 目錄
按照這個組件須要先安裝它的依賴:
cd libfastcommon
yum install gcc
yum install gcc-c++
yum install gcc perl
開始安裝:
./make.sh
./make.sh install
3.安裝FastDFS
cd FastDFS
./make.sh
./make.sh install
4.安裝後會在/etc/fdfs/ 目錄生成fdfs的原始文件,切換到該目錄下,複製storage.conf.sample文件:
cd /etc/fdfs
cp storage.conf.sample storage.conf
建立storage的存儲目錄和日誌目錄
mkdir -p /opt/fdfs/storage (日誌目錄,看本身喜歡創那均可以)
mkdir -p /data/fdfs (存儲目錄,看本身喜歡創那均可以)
5.修改storage.conf的配置文件
修改項:
base_path=/opt/fdfs/storage(日誌目錄)
group_name=group1(設定的組名)
store_path0=/data/fdfs(存儲目錄)
tracker_server=10.20.20.49:22122(tracker服務器ip)
http.server_port=8080
6. 拷貝fdfs命令到指定目錄
cp /usr/bin/fdfs_storaged /usr/local/bin
cp /usr/bin/fdfs_monitor /usr/local/bin
7.鏈接目錄
ln -s /usr/include/fastcommon /usr/local/include/fastcommon
ln -s /usr/include/fastdfs /usr/local/include/fastdfs
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
8.啓動storage
fdfs_storaged /etc/fdfs/storage.conf start
查看storage是否啓動成功 ps -ef|grep fdfs
查看日誌文件:cat /opt/fdfs/stroage/logs/storaged.log
9.檢驗tracker 與storage 是否成關聯
在安裝storage 的機子上使用,出以下界面則說明已經安裝成功:fdfs_monitor /etc/fdfs/storage.conf
10.上傳文件測試,tracker 與storage 均可以:
上傳命令:
fdfs_upload_file(上傳命令) 工具 要上傳的文件
fdfs_upload_file /etc/fdfs/client.conf /usr/local/E.........82.png
先在tracker上:
而後在storage上:
驗證完成,只是訪問不到文件,須要整合nginx 代理。
安裝tracker 與nginx 結合(爲了可以http訪問到文件服務器的文件),因此須要與代理相結合。
安裝nginx:
確保依賴安裝
yum install –y openssl-devel pcre-devel zlib-devel
yum install gd-devel
1.把如下文件拷貝到/usr/local/,解壓相關文件
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
2.切換到 nginx-1.8.0,執行如下命令:
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src --add-module=/usr/local/ngx_cache_purge-2.3
make
make install
3.配置mod_fastdfs.conf(與nginx集成的關鍵步驟)
把/usr/local/fastdfs-nginx-module/src 目錄下的 mod_fastdfs.conf拷貝到 /etc/fdfs/
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
不然啓動nginx 報錯:
ERROR - file: shared_func.c, line: 960, open file /etc/fdfs/mod_fastdfs.conf fail, errno: 2, error info: No such file or directory
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
4. 修改/etc/fdfs/mod_fastdfs.conf配置項
vim /etc/fdfs/mod_fastdfs.conf
修改項:
base_path=/data/fdfs
tracker_server=tracker服務器ip:22122 #修改成tracker server信息
url_have_group_name= true #改成true
store_path0=/data/fdfs #改成數據存儲路徑,和storage.conf同樣
group_name=group1
group_count = 1
而且在文件末尾加上如下信息
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1(修改爲1,默認是2,不然就配store_path1)
store_path0=/opt/fdfs/tracker
5.拷貝/usr/local/src/FastDFS/conf/ 中的http.conf和mime.type ,到/etc/fdfs/ ;
不然啓動nginx報錯:
ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/
6.配置代理信息 nginx.conf 添加以下內容
建立目錄: mkdir -p /media/disk1/nginx/proxy_temp
mkdir -p /media/disk1/nginx/proxy_cache
在 http{ }中加入以下信息:
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path /media/disk1/nginx/proxy_temp;
proxy_cache_path /media/disk1/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
proxy_cache_bypass $http_secret_header;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream fdfs_g1 {
server 10.20.20.14:80 weight=1 max_fails=2 fail_timeout=30s; #(storage 代理服務器的地址)
}
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache content;
proxy_cache_valid 200 304 12h;
proxy_cache_key $request_uri$is_args$args;
proxy_pass http://fdfs_g1;
expires 30d;
}
location ~ /purge(/.*) {
allow all;
proxy_cache_purge content $1$is_args$args;
}
8.啓動tracker nginx 看集成是否成功。
切換到 /usr/local/nginx/sbin 目錄執行
./nginx
查看nginx 的日誌文件 /usr/local/nginx/logs,日誌無錯誤說明整合成功。
安裝storage與nginx 結合(爲了可以http訪問到文件服務器的文件),因此須要與代理相結合。
前面的跟着tracker安裝基本同樣,惟一的區別就是nginx.conf 的配置
安裝nginx:
確保依賴安裝
yum install –y openssl-devel pcre-devel zlib-devel
yum install gd-devel
1.把如下文件拷貝到/usr/local/,解壓相關文件
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
2.切換到 nginx-1.8.0,執行如下命令:
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src --add-module=/usr/local/ngx_cache_purge-2.3
make
make install
3.配置mod_fastdfs.conf(與nginx集成的關鍵步驟)
把/usr/local/fastdfs-nginx-module/src 目錄下的 mod_fastdfs.conf拷貝到 /etc/fdfs/
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
4. 修改/etc/fdfs/mod_fastdfs.conf配置項
vim /etc/fdfs/mod_fastdfs.conf
修改項:
base_path=/data/fdfs
tracker_server=tracker服務器ip:22122 #修改成tracker server信息
url_have_group_name= true #改成true
store_path0=/data/fdfs #改成數據存儲路徑,和storage.conf同樣
group_name=group1
group_count = 1
而且在文件末尾加上如下信息:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1 (修改爲1,默認是2,不然就配store_path1)
store_path0=/data/fdfs(storage 的存儲目錄)
5.連接storage存儲目錄文件
ln -s /data/fdfs/data /data/fdfs/data/M00
6.拷貝/usr/local/src/FastDFS/conf/ 中的http.conf和mime.type ,到/etc/fdfs/ 不然啓動nginx報錯:
cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/
若是報 ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
則到/etc/fdfs/http.conf文件中 註釋include http.conf 便可
7.配置代理信息 nginx.conf 添加以下內容便可,如需更多配置請自行研究:
location ~/group1/M00 {
root /opt/fdfs/data;(stroage的存儲目錄)
ngx_fastdfs_module;
}
8.啓動storage nginx 看集成是否成功。
切換到 /usr/local/nginx/sbin 目錄執行
./nginx
查看nginx 的日誌文件 /usr/local/nginx/logs
storage 與nginx 整合成功。
10.安裝完成,查看剛纔的上傳的文件是否能夠訪問,則驗證完成:
訪問tracker的代理(博主採用的是默認80端口),其實最終訪問的是storage的代理。
訪問storage的代理:
則安裝成功!