一. 安裝一些工具和依賴
- yum install git (安裝git)
- yum -y install gcc (安裝gcc)
二. FastDFS安裝與配置
1.
cd /usr/local/
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon/
./make.sh
./make.sh install
此處需要重新設置軟鏈接(類似於Windows的快捷方式):
ln -s /usr/lib/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib/libfdfsclient.so /usr/lib/libfdfsclient.so
2.安裝 fastdfs
cd /usr/local/
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs/
./make.sh
./make.sh install
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
3.配置 tracker
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim /etc/fdfs/tracker.conf
disabled=false(默認爲false,表示是否無效)
port=22122(默認爲22122)
base_path=/data/fdfs/tracker
4.配置 client.conf
cd /etc/fdfs
cp client.conf.sample client.conf
vim /etc/fdfs/client.conf
base_path=/data/fdfs/tracker
tracker_server=你的IP:22122
創建 tracker 目錄
mkdir -pv /data/fdfs/tracker
啓動方式
centos6 :
service fdfs_trackerd start
centos7:
/etc/init.d/fdfs_trackerd start
查看端口
ss -lntup|grep 22122
關閉tracker
/etc/init.d/fdfs_trackerd stop
注意:雖然FastDFS區分tracker和storage服務器,但是安裝的軟件及步驟均相同,只是不同的配置文件而已,因此以上安裝適用tracker server和storage server
5.配置 storage
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim /etc/fdfs/storage.conf
disabled=false(默認爲false,表示是否無效)
port=23000(默認爲23000)
group_name=group1 #指定組名
base_path=/data/fdfs/storage # 用於存儲數據
store_path_count=2 #設置設備數量
store_path0=/data/fdfs/storage/m0 #指定存儲路徑0
store_path1=/data/fdfs/storage/m1 #指定存儲路徑1
注意:同一組內存儲路徑不能衝突,例如:下一個節點的存儲路徑就是m2,m3….等
tracker_server=你的IP:22122 #指定tracker
http.server_port=8888(默認爲8888,nginx中配置的監聽端口那之一致)
mkdir -pv /data/fdfs/storage/m0 # 創建數據目錄
mkdir -pv /data/fdfs/storage/m1 # 創建數據目錄
啓動 storage
必須先啓動tracker,再啓動storage
centos6 啓動方式
service fdfs_storaged start
centos7 啓動方式
/etc/init.d/fdfs_storaged start
查看端口
ss -lntup|grep 23000
關閉storage
/etc/init.d/fdfs_storaged stop
文件上傳測試
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /test.png(原圖片路徑)
group1/M00/00/00/rBEADV4Cz-eAV-s0AAJ7gm6_Mww490.jpg
三.存儲服務器(storage server)安裝並配置nginx
1.安裝 fastdfs-nginx-module 模塊
cd /root
git clone https://github.com/happyfish100/fastdfs-nginx-module
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
connect_timeout=10
base_path=/tmp(默認爲/tmp)
tracker_server=你的IP:22122
storage_server_port=23000(默認配置爲23000)
url_have_group_name = true (一定要配置否則不能用group)
store_path_count=2 # 設置設備數量
store_path0=/data/fdfs/storage/m0
store_path1=/data/fdfs/storage/m1
group_name=group1(默認配置爲group1)
2.安裝 nginx 依賴庫
yum -y install pcre-devel zlib-devel
yum -y install openssl openssl-devel
3.安裝 nginx
首先要安裝 PCRE
#cd /usr/local/src/
#wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
#tar zxvf pcre-8.35.tar.gz
#cd pcre-8.35
#./configure
#make && make install
#pcre-config --version
安裝 Nginx
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.9.9.tar.gz
# tar zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
編譯//路徑一定要正確
./configure --prefix=/application/nginx/ --with-pcre=/usr/local/src/pcre-8.35 --add-module=../fastdfs-nginx-module/src/
make && make install
cp /root/usr/local/fastdfs/conf/http.conf /etc/fdfs/
cp /root/usr/local/fastdfs/conf/mime.types /etc/fdfs/
注意:fastdfs安裝目錄下的配置文件
4.配置 nginx
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
vim /usr/local/webserver/nginx/conf/nginx.conf
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;
}
}
}
/usr/local/webserver/nginx/sbin/nginx -t
檢查配置文件nginx.conf的正確性命令;
啓動 Nginx
/usr/local/webserver/nginx/sbin/nginx
四.訪問圖片
http://ip:9999/group1/M00/00/00/rBEADV4Cz-eAV-s0AAJ7gm6_Mww490.jpg
五.遇到的問題
nginx 400 Bad Request fastfds?
解決辦法:
vi /etc/fdfs/mod_fastdfs.conf
將
url_have_group_name=false
改爲
url_have_group_name=true