第一步,網絡規劃:
Tracker 192.168.88.215【192.168.224.20:22122】 CentOS
Group1-Storage11 192.168.88.213【192.168.88.213:23000】 CentOS
Group1-Storage12 192.168.88.214【192.168.224.26:23000】 CentOS
Group2-Storage21 192.168.88.217【192.168.224.28:23001】 CentOS
Group2-Storage22 192.168.88.216【192.168.224.29:23001】 CentOS
第二步中止全部防火牆
[root@localhost ~]# service iptables stop
第三部相關文件下載
1.一、libfastcommon支持
wget https://github.com/happyfish100/libfastcommon/archive/master.zip
unzip master.zip
cd libfastcommon-master/
./make.sh
./make.sh install
2.
wget http://osdn.jp/projects/sfnet_fastdfs/downloads/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.05/FastDFS_v5.05.tar.gz
tar -zxvf FastDFS_v5.05.tar.gz
若是解壓失敗,請下載到window解壓後,在壓縮成 .zip ,而後上傳在 unzip解壓,我就是這樣的
cd FastDFS/
chmod +x make.sh
vim make.sh
./make.sh
./make.sh install
3.
https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download
4.wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
5.perl-5.20.2.tar.gz
6.http://nginx.org/download/nginx-1.7.8.tar.gz
第四部
文件夾初始化:
1. 配置tracker所需的base_path: /opt/fastdfs_tracker。
2. 配置storage所需的日誌目錄: /opt/fastdfs_storage_info。 備註: 這個目錄是用來存儲storage之間同步文件等日誌的
3. 配置storage所需的存儲文件目錄: /opt/fastdfs_storage_data。備註: 這個目錄是用來存儲文件的
第五步,安裝libfastcommon-1.0.7.zip:【六臺】
在安裝libfastcommon的過程當中,涉及瞭解壓縮、make安裝等過程,第一次安裝的時候,可能因爲環境的緣由,會提示好比沒有安裝unzip、zip;沒有安裝perl;沒有安裝gcc等,逐一安裝便可。
[root@localhost soft]#unzip master
2. 解壓完成後,進入文件夾,會看到make.sh文件,執行./make.sh命令,可能會報沒有安裝gcc和perl的錯誤
[root@localhost soft]# cd libfastcommon-master
[root@localhost libfastcommon-master]# ./make.sh
[root@localhost libfastcommon-master]# ./make.sh install#若失敗參照http://www.open-open.com/lib/view/open1435468300700.html安裝perl和gcc
3.建立軟鏈接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
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
4.安裝fastdfs-5.05.tar.gz:
[root@localhost soft]# tar -zxvf FastDFS_v5.05.tar.gz
[root@localhost soft]# cd FastDFS
[root@localhost FastDFS]# ./make.sh
[root@localhost FastDFS]# ./make.sh install
[root@localhost FastDFS]# cd /etc/fdfs
[root@localhost fdfs]# ls
client.conf.sample storage.conf.sample tracker.conf.sample #成功了
前 邊的這六步不管是配置tracker仍是配置storage都是必須的,而tracker和storage的區別主要是在安裝完fastdfs以後的配置 過程當中
第五步,配置tracker:
1. 進入/etc/fdfs文件夾,執行命令#【tracker:】
[root@localhost fdfs]# cd /etc/fdfs
[root@localhost fdfs]# cp tracker.conf.sample tracker.conf
2. 編輯tracker.conf,執行命令:
[root@localhost fdfs]#vi tracker.conf
a. disabled=false #啓用配置文件
b. port=22122 #設置tracker的端口號,通常採用22122這個默認端口
c. base_path=/opt/fastdfs_tracker #設置tracker的數據文件和日誌目錄(預先建立)
d. http.server_port=8080 #設置http端口號 注意,這個配置在fastdfs5.05這個版本中已經不用配置,不用管這個!
3. 啓動tracker,執行以下命令:
[root@localhost fdfs]# /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
bash: /usr/local/bin/fdfs_trackerd: No such file or directory
注意,通常fdfs_trackerd等命令在/usr/local/bin中沒有,而是在/usr/bin路徑下,因此命令修改以下:
[root@localhost fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
4. 啓動完畢後,能夠經過如下兩個方法查看tracker是否啓動成功:
a. netstat -unltp|grep fdfs,查看22122端口監聽狀況
b. 經過如下命令查看tracker的啓動日誌,看是否有錯誤: tail -100f /opt/fastdfs_tracker/logs/trackerd.log
5. 若是啓動沒有問題,能夠經過如下步驟,將tracker的啓動添加到服務器的開機啓動中:
a. 打開文件 vi /etc/rc.d/rc.local
b. 將以下命令添加到該文件中 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
第六步,配置storage:
其實配置storage和配置tracker相似,只不過配置文件和配置內容不同。咱們以配置192.168.224.29配置storage爲例。
第七步,配置storage:
其實配置storage和配置tracker相似,只不過配置文件和配置內容不同
1. 進入/etc/fdfs文件夾
[root@localhost fdfs]# cd /etc/fdfs
[root@localhost fdfs]# cp storage.conf.sample storage.conf
2. 編輯storage.conf,執行命令: vi storage.conf
[root@localhost fdfs]# vi storage.conf
a. disabled=false #啓用配置文件
b. group_name=group2 #組名,根據實際狀況修改1,2
c. port=23001 #設置storage的端口號,默認是23000,同一個組的storage端口號必須一致
d. base_path=/opt/fastdfs_storage_info #設置storage的日誌目錄(需預先建立)
e. store_path_count=1 #存儲路徑個數,須要和store_path個數匹配
f. store_path0=/opt/fastdfs_storage_data #存儲路徑
g. tracker_server=192.168.88.215:22122 #tracker服務器的IP地址和端口號
h. http.server_port=8080 #設置http端口號 注意,這個配置在fastdfs5.05這個版本中已經不用配置,不用管這個!
3. 啓動storage,執行以下命令: /usr/local/bin/fdfs_storage /etc/fdfs/storage.conf restart
意,通常fdfs_storage等命令在/usr/local/bin中沒有,而是在/usr/bin路徑下,因此命令修改以下:
[root@localhost fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
4. 啓動完畢後,能夠經過如下兩個方法查看storage是否啓動成功:
a. netstat -unltp|grep fdfs,查看23001端口監聽狀況
b. 經過如下命令查看storage的啓動日誌,看是否有錯誤: tail -100f /opt/fastdfs_storage_info/logs/storage.log
5. 啓動成功後,能夠經過fdfs_monitor查看集羣的狀況,即storage是否已經註冊到tracker服務器中
[root@localhost fdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf 【在storage】上
Storage 1:
id = 192.168.88.213
ip_addr = 192.168.88.213 ACTIVE
Storage 2:
id = 192.168.88.214
ip_addr = 192.168.88.214 ACTIVE
Storage 3:
id = 192.168.88.216
ip_addr = 192.168.88.216 ACTIVE
Storage 4:
id = 192.168.88.217
ip_addr = 192.168.88.217 ACTIVE
以上七步其實已經完成了fastdfs的配置,若是此時你用java等api編輯客戶端,實際上就能夠完成文件的上傳、同步和下載。可是爲何網上還會有 不少人說須要nginx呢???
其實主要緣由時由於,咱們能夠經過配置nginx爲下載提供基於http協議的下載等功能。其實,storage中安裝nginx,主要是爲了爲提供http的訪問服務,同時解決group中storage
服務器的同步延遲問題。而tracker中安裝nginx,主要是爲了提供http訪問的反向代理、負載均衡以及緩存服務
第八步,安裝nginx的準備:
不論是在tracker中仍是storage中安裝nginx,前提都須要安裝一些基礎軟件。一些大公司的服務器默認都會初始化這些軟件,可是你在配置的時候可能仍是最好本身利用命令確認一下。
1. yum install -y gcc 這個前邊在安裝libfastcommon以前已經安裝了
2. yum install -y gcc-c++ 這個前邊在安裝libfastcommon以前已經安裝了
3. yum install -y pcre pcre-devel
4. yum install -y zlib zlib-devel
5. yum install -y openssl openssl-devel
第九步,在storage中安裝nginx:
[root@localhost soft]# tar -zxf fastdfs-nginx-module_v1.16.tar.gz
a. 咱們在解壓縮fastdfs-nginx-module_v1.16.tar.gz以後,須要進入fastdfs-nginx-module/src目 錄,編輯config文件,找到包含CORE_INCS這個一行,將路徑中local所有去掉,變爲CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
[root@localhost soft]# cd fastdfs-nginx-module/src
[root@localhost src]# vi config
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
b. 創建軟鏈接,這個軟鏈接咱們在第五步安裝libfastcommon時的最後一個操做就已經創建了,因此此處不用再創建了。
[root@localhost fastdfs-nginx-module]# cd ~/soft
[root@localhost soft]# tar -zxf nginx-1.7.8.tar.gz
[root@localhost soft]# cd nginx-1.7.8
[root@localhost nginx-1.7.8]# ./configure --prefix=/usr/local/nginx --add-module=/root/soft/fastdfs-nginx-module/src
5. 執行命令 cd /usr/local/nginx/conf,編輯 寸這個文件,編輯以下:
在server段中添加:
location ~/group2/M00{
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
注意,若是配置的storage是在group2組,則下面的location應該是 ~/group2/M00
6. 執行命令 cd /myself_settings/fastdfs5.0.5/fastdfs-5.05/conf,即進入fastdfs5.0.5的安裝文件夾的conf目錄下,將目錄下面的http.conf和mime.types拷貝到/etc/fdfs/下,若是不執行這一步,後邊在啓動nginx時會報錯。
[root@localhost nginx-1.7.8]#cp /root/soft/FastDFS/conf/http.conf /root/soft/FastDFS/conf/mime.types /etc/fdfs/
7. 執行命令 cd /myself_settings/fastdfs_nginx_module/fastdfs-nginx-module/src,即進入 fastdfs-nginx-module_v1.16的安裝文件夾的src目錄下,將目錄下面的mod_fastdfs.conf這個文件拷貝到 /etc/fdfs 目錄下
[root@localhost src]# cp /root/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
8. 打開 /etc/fdfs 這個目錄,編輯 mod_fastdfs.conf 這個文件,以下
[root@localhost conf]# vi /etc/fdfs/mod_fastdfs.conf
a. base_path=/opt/fastdfs_storage_info #保存日誌目錄
b. tracker_server=192.168.88.215:22122 #tracker服務器的IP地址以及端口號
c. storage_server_port=23001 #storage服務器的端口號
d. group_name=group2 #當前服務器的group名
c. url_have_group_name= true #文件url中是否有group名
d. store_path_count=1 #存儲路徑個數,須要和store_path個數匹配
e. store_path0=/opt/fastdfs_storage_data #存儲路徑
f. http.need_find_content_type=true #從文件擴展名查找文件類型(nginx時爲true) 注意:這個配置網上通常都會列出,可是在fastdfs5.05的版本中是沒有的
h. group_count= 2 #設置組的個數
i. 在文件的末尾,按照第一步肯定的集羣目標,追加以下圖的配置:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=2
store_path0=/opt/fastdfs_storage_data
store_path1=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=2
store_path0=/opt/fastdfs_storage_data
store_path1=/opt/fastdfs_storage_data
9. 創建軟鏈接 ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
10. 執行命令啓動nginx: /usr/local/nginx/sbin/nginx ,若是/usr/local/nginx/logs/error.log中沒有報錯,同時訪問192.168.224.29:8080這個url能看到 nginx的歡迎頁面。
第十一步,在tracker中安裝nginx:
1. 建立nginx默認的安裝文件夾: mkdir /usr/local/nginx
2. 提早將 nginx1.7.8.tar.gz、fastdfs-nginx-module_v1.16.tar.gz、ngx_cache_purge-2.1.tar.gz解壓縮,而後進入nginx1.7.8的文件夾目錄,執行以下命令:
[root@localhost soft]# cd nginx-1.7.8
[root@localhost nginx-1.7.8]# ./configure --prefix=/usr/local/nginx --add-module=/root/soft/fastdfs-nginx-module/src --add-module=/root/soft/ngx_cache_purge-2.1
3. 執行完上述命令,若是沒有報錯的話,咱們繼續執行 make 命令,此時編譯有可能會報錯,那是由於咱們忘了作一項重要的工做,咱們能夠參考下面這篇文章http://bbs.chinaunix.net/thread-4163021-1-1.html中的解答,其實彙總就是下面兩個意思:
a. 咱們在解壓縮fastdfs-nginx-module_v1.16.tar.gz以後,須要進入fastdfs-nginx-module/src目 錄,編輯config文件,找到包含CORE_INCS這個一行,將路徑中local所有去掉,變爲CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
b. 創建軟鏈接,這個軟鏈接咱們在第五步安裝libfastcommon時的最後一個操做就已經創建了,因此此處不用再創建了。
4. 執行完3個步驟後,咱們在重複執行2中的命令,而後再依次執行 make 和 make install 這兩個命令,沒有報錯誤就是安裝成功了。
5. 執行命令 cd /usr/local/nginx/conf,編輯 nginx.conf 這個文件,編輯以下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
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;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_cache_path /opt/cache/nginx/proxy_cache levels=1:2
keys_zone=http-cache:500m max_size=10g inactive=30d;
proxy_temp_path /opt/cache/nginx/proxy_cache/tmp;
upstream fdfs_group1 {
server 192.168.88.213:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.88.214:8080 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server 192.168.88.217:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.88.216:8080 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group2;
expires 30d;
}
location ~/purge(/.*) {
allow 127.0.0.1;
allow 192.168.88.0/24;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
[root@localhost opt]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
6. 執行命令啓動nginx: /usr/local/nginx/sbin/nginx ,若是/usr/local/nginx/logs/error.log中沒有報錯,同時訪問192.168.224.20:8080這個url能看到 nginx的歡迎頁面。
base_path=/opt/fastdfs_tracker #存放路徑
tracker_server=192.168.88.215:22122 #tracker服務器IP地址和端口號
http.tracker_server_port=8080 #tracker服務器的http端口號,注意,這個配置在fastdfs5.0.5中已經沒有用了
2. 模擬上傳文件,執行以下命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/1.txt
[root@localhost opt]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/1.txt
group2/M00/00/00/wKhY1VboBaqAXujtAAAAG8nEx7I294.txt
http://192.168.88.215:8080/group2/M00/00/00/wKhY1VboBaqAXujtAAAAG8nEx7I294.txt
lkxcxqewm;lcn wqlkc q'dcqw
若出現
[2016-03-15 06:18:34] ERROR - file: ini_file_reader.c, line: 394, include file "http.conf" not exists, line: "#include http.conf"
[2016-03-15 06:18:34] ERROR - file: /root/soft/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
[root@localhost conf]# cd /root/soft/FastDFS/conf
[root@localhost conf]# cp http.conf mime.types /etc/fdfs
[root@localhost conf]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 192.168.88.214
#注意nginx端口要一致
html