fastdfs安裝配置、
一、簡介
1.1 環境
名稱 | 資源地址 | 介紹 |
---|---|---|
fastdfs | https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz | 文件服務器 |
nginx | http://nginx.org/download/nginx-1.11.8.tar.gz | 反向代理服務器 |
libfastcommon | https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz | |
fastdfs-nginx-module | http://jaist.dl.sourceforge.NET/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz | nginx插件,用來整合fastdfs |
資源我全部下載到/opt/resources/目錄下,解壓到/opt/目錄下
1.2 Fastdfs架構
FastDFS包括Tracker server和Storage server, 客戶端請求Tracker server進行文件上傳、下載,通過Tracker server調度最終由Storage server完成文件上傳和下載。 Tracker server 的角色類似於dubbo的registry和moniter、並不直接提供服務、而是storage server啓動時註冊到tracker server, client通過tracker server連接storage server, client不知道自己連接的是哪一臺storage server, 連接完成後、上傳和下載是client直接請求storage server, 可類比於 dubbo consumer通過registry連接dubbo service ,但連接完成之後是consumer和service直接通信
-
文件上傳流程
-
文件下載流程
二、Fastdfs安裝配置
2.1 安裝libfastcommon
cd /opt/resources
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
//修改名字
mv V1.0.7 libfastcommon-1.0.7.tar.gz
tar -zxvf libfastcommon-1.0.7.tar.gz -C /opt/
cd /opt/libfastcommon-1.0.7/
//編譯
./make.sh
//安裝
./make.sh install
另外:
設置幾個軟鏈接、方便後續擴展nginx時使用:
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
2.2 tracker安裝
//下載資源到/opt/resources
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
mv V5.05 FastDFS_v5.05.tar.gz
//解壓
tar -zxvf FastDFS_v5.05.tar.gz -C /opt
cd /opt/fastdfs-5.05/
//編譯
./make.sh
//安裝
./make.sh install
- 修改tracker配置文件
安裝完成後、在/etd/fdfs下有tracker的配置文件
複製一份:cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
mkdir -p /usr/local/fastdfs/ (此處可以根據自己的情況和習慣存放)
vi /etc/fdfs/tracker.conf
------------------------------------------------------------
//調整base_path
base_path= /usr/local/fastdfs/
------------------------------------------------------------
//啓動 tracker 服務
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
//重啓 tracker 服務
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
//查看是否有 tracker 進程
ps aux | grep tracker
2.3 storage(存儲節點)服務部署
一般 storage 服務我們會單獨部署到一臺服務器上,但是這裏爲了方便(我只有一臺服務器)就安裝在同一臺上了
如果單獨部署到一臺服務器上、上邊tracker的部署步驟重新來一遍即可
這裏是同一臺server、只修改配置
//創建目錄
mkdir /usr/local/fastdfs/storage/
//複製一份配置
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vim /etc/fdfs/storage.conf
------------------------------------------------------------
base_path= /usr/local/fastdfs/
store_path0= /usr/local/fastdfs/storage/
//圖片實際存放路徑,如果有多個,這裏可以有多行(要創建多個目錄):
//store_path0=/opt/fastdfs/storage/
//store_path1=/opt/fastdfs/storage1/
//是用來配置目錄個數的、如果只是練習不做實際存儲服務、可改小一點兒
subdir_count_per_path=256
//指定 tracker 服務器的 IP 和端口
//(39.96.46.193)是你的server服務器ip、本機也可以使用(0.0.0.0:22122)、記得不可使用127.0.0.1
tracker_server=39.96.46.193:22122
------------------------------------------------------------
如果用的是阿里雲服務器,需要配置安全組開放22122、23000端口
- 啓動 storage 服務
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf,首次啓動會很慢,因爲它在創建預設存儲文件的目錄
//重啓 storage 服務
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
- 查看storage tracker進程
ps aux | grep fdfs
------------------------------------------------------------------------------------
[root@iZ2ze6qralnaqhb67athsaZ fdfs]# ps aux | grep fdfs
root 3083 0.0 0.1 144548 2576 ? Sl Mar21 0:11 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
root 3484 0.0 3.5 278252 66620 ? Sl Mar21 0:38 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
root 13833 0.0 0.0 112704 972 pts/1 S+ 16:48 0:00 grep --color=auto fdfs
-----------------------------------------------------------------------------------
- 查看tracker是否可以正常與storage通信
fdfs_monitor /etc/fdfs/storage.conf
-----------------------------------------------------------------------------------
Storage 1:
id = 39.96.46.193
ip_addr = 39.96.46.193 ACTIVE --若看到ACTIVE這個字樣、代表可以正常通信
-----------------------------------------------------------------------------------
查看storage和tracker是否正常啓動:
2.4 配置fdfs_client
複製一份配置:cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf
-----------------------------------------------------------------------------------
base_path= /usr/local/fastdfs/
//指定 tracker 服務器的 IP 和端口
tracker_server=39.96.46.193:22122
log_level=info
-----------------------------------------------------------------------------------
// 文件上傳測試
echo asasasa > ~/test.txt
fdfs_test /etc/fdfs/client.conf upload ~/test.txt
可以看到如下圖所示、就是上傳成功了
上傳成功之後也無法根據url地址訪問資源,只有整合好nginx之後才能訪問
2.5 安裝nginx以及插件整合fastdfs
如果Nginx已經安裝過,則僅需要fastdfs-nginx-module_v1.16.tar.gz
cd /opt/resources
//下載nginx
wget http://nginx.org/download/nginx-1.11.8.tar.gz
//下載Nginx插件
wget http://jaist.dl.sourceforge.NET/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
//解壓 Nginx 模塊:
tar zxvf fastdfs-nginx-module_v1.16.tar.gz -C /opt
//進入解壓後的目錄
cd /opt/fastdfs-nginx-module
vim src/config
-----------------------------------------------------------------------------------
修改:去掉local、因爲實際安裝fastdfs時、是放到了/usr/include下
- CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
-> CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
- CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
-> CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
-----------------------------------------------------------------------------------
//回到nginx的解壓目錄
cd /opt/nginx-1.11.8
sudo ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/bin/nginx --conf-path=/usr/local/etc/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid --lock-path=/usr/local/var/run/nginx.lock --error-log-path=/usr/local/var/log/nginx/^Cror.log --http-log-path=/usr/local/var/log/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-file-aio --add-module=/opt/fastdfs-nginx-module/src
//編譯
make
//安裝
make install (若是有權限的賬戶、可以不用加sudo、我使用的是普通用戶)
- 整合nginx和fastdfs插件
//copy fastdfs-nginx-module的配置文件到 /etc/fdfs下、方便查找
cp /opt/fastdfs-nginx-module/src/mod_fdfs.conf /etc/fdfs
vi /etc/fdfs/mod_fdfs.conf
-----------------------------------------------------------------------------------
base_path=/usr/local/fastdfs
tracker_server=39.96.46.193:22122
url_have_group_name = true
store_path0=/usr/local/fastdfs/storage
-----------------------------------------------------------------------------------
- 配置Nginx
vi /usr/local/nginx/conf/nginx.conf
-----------------------------------------------------------------------------------
server {
listen 80;
server_name localhost;
...
# 配置fastdfs的訪問路徑
location /group1/M00 {
ngx_fastdfs_module;
}
...
}
-----------------------------------------------------------------------------------
//啓動nginx
/usr/local/nginx/sbin/nginx
// 重啓
/usr/local/nginx/sbin/nginx -s reload
// 停止
/usr/local/nginx/sbin/nginx -s stop
這裏我啓動nginx之後,ps -ef|grep nginx只查看master進程,/usr/local/nginx/logs/error.log查看日誌,報錯如下:
ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
[2020-03-21 15:54:32] ERROR - file: /opt/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
ERROR - file: shared_func.c, line: 960, open file /etc/fdfs/mime.types fail, errno: 2, error info: No such file or directory
2020/03/21 16:04:46 [alert] 778#0: worker process 2190 exited with fatal code 2 and cannot be respawned
/opt/fastdfs-5.05/conf
解決方法:
cp /opt/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp /opt/fastdfs-5.05/confhttp.conf /etc/fdfs/
之後重啓所有服務
- 用瀏覽器訪問前面上傳的文件
至此,安裝配置完成