FastDFS介紹html
FastDFS是一款開源的高性能分佈式文件系統(DFS)node
主要功能:文件存儲,文件同步和文件訪問,以及高容量和負載平衡linux
主要解決了海量數據存儲問題,特別適合以中小文件爲載體的在線服務nginx
FastDFS系統有三個角色:c++
跟蹤服務器(Tracker Server)git
存儲服務器(Storage Server)github
客戶端(Clinet)vim
Tracker Server:跟蹤服務器,主要作調節工做,起到均衡的做用;負責管理全部的storage server和group,每一個storage在啓動後會鏈接Tracker,告知本身所屬group等信息,並保持週期性心跳。 Storage Server:存儲服務器。主要提供容量和備份服務器;以group爲單位,每一個group內能夠有多臺storage server,數據互爲備份。 Client:客戶端,上傳下載數據的服務器,也就是咱們本身的項目部署在的服務器。
單機部署fastdfscentos
安裝centos7.2系統,最小化安裝瀏覽器
設置好網絡和防火牆 網絡須要能訪問外網,
ip 192.168.0.201
下面關閉防火牆
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/g' /etc/sysconfig/selinux
設置yum源
cd /etc/yum.repos.d/
yum install vim unzip lrzsz wget net-tools -y
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install epel-release
安裝依賴包
yum install zip zlib zlib-devel make cmake gcc gcc-c++ pcre pcre-devel openssl openssl-devel perl perl-devel -y
建立目錄
mkdir -p /opt/fastdfs #建立包目錄
mkdir -p /data/fastdfs #建立數據目錄
安裝libfastcommon
cd /opt/fastdfs/
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
tar zxf V1.0.39.tar.gz
cd libfastcommon-1.0.39/
./make.sh
./make.sh install
安裝fastdfs
cd /opt/fastdfs/
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar zxf V5.11.tar.gz
cd fastdfs-5.11/
./make.sh
./make.sh install
建立配置文件
下面文件分別是tracker storage client nginx nginx 服務使用
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
cp /opt/fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/
cp /opt/fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
配置tracker
mkdir /data/fastdfs/tracker ##建立tracker的日誌數據目錄
vim /etc/fdfs/tracker.conf
port=22122 ##tracker服務端口
base_path=/data/fastdfs/tracker ##tracker數據日誌目錄
http.server_port=80 ##http端口,必須與nginx的相同
編輯tracker啓動文件
vim /usr/lib/systemd/system/fastdfs-tracker.service
[Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
ExecStop=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
ExecRestart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
[Install]
WantedBy=multi-user.target
添加到開機啓動
systemctl daemon-reload
systemctl enable fastdfs-tracker.service
systemctl start fastdfs-tracker.service
查看進程
netstat -lnupt |grep tracker
[root@localhost tmp]# netstat -lnupt |grep tracker tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 24487/fdfs_trackerd
-------------------------------------------------------------------------
-------------------------------------------------------------------------
配置storage
mkdir /data/fastdfs/storage
vim /etc/fdfs/storage.conf
port=23000 # storage服務端口(默認23000,通常不修改)
base_path=/data/fastdfs/storage # 數據和日誌文件存儲根目錄
group_name=group1 #默認組名,根據實際狀況修改
store_path_count=1 #存儲路徑個數,須要和store_path個數匹配
store_path0=/data/fastdfs/storage # 第一個存儲目錄
tracker_server=192.168.0.201:22122 # tracker服務器IP和端口
http.server_port=80 # http端口(默認8888,須要和nginx中80保持一致)
編輯storage啓動文件
vim /usr/lib/systemd/system/fastdfs-storage.service
[Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
ExecStop=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
ExecRestart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
[Install]
WantedBy=multi-user.target
添加到開機啓動
systemctl daemon-reload
systemctl enable fastdfs-storage.service
systemctl start fastdfs-storage.service
查看進程
netstat -lnupt |grep storage
[root@localhost tmp]# netstat -lnupt |grep storage tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 24544/fdfs_storaged
查看tracker和storage綁定狀態
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
==============================================================
配置client
vim /etc/fdfs/client.conf
http.tracker_server_port=80 ##保持與tracker服務器的http端口相同
base_path=/data/fastdfs/tracker ##tracker服務器文件目錄
tracker_server=192.168.0.201:22122 ##tracker服務器的ip和端口
安裝nginx和fastdfs-nginx-module
下載安裝
wget http://nginx.org/download/nginx-1.15.2.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
tar zxf nginx-1.15.2.tar.gz
tar zxf V1.20.tar.gz
編譯nginx
cd nginx-1.15.2
vim /opt/fastdfs/fastdfs-nginx-module-1.20/src/config ##修改module參數
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
執行編譯
./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module-1.20/src/
make && make install
配置mod-fastdfs.conf文件
cp /opt/fastdfs/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs
vim /etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs tracker_server=192.168.0.201:22122 ##tracker地址 storage_server_port=23000 ##storage server端口 group_name=group1 url_have_group_name = true ##設置爲true,url包含group名 store_path_count=1 ##存儲路徑個數,與store_path的個數匹配 store_path0=/data/fastdfs/storage ##存儲文件位置
配置nginx
vim /usr/local/nginx/conf/nginx.conf
location ~/group[0-9]/M00 { root /data/fastdfs/storage/data; ngx_fastdfs_module; }
啓動nginx
/usr/local/nginx/sbin/nginx
------------------------------------------
測試fastdfs
新建文檔並用命令上傳文件
touch test.xtx
echo "jhdkjfoiajgi" > test.xtx
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.xtx
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/1.jpg
上傳文件 [root@localhost home]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.xtx group1/M00/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx [root@localhost home]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /tmp/1.jpg group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg 查看文件 [root@localhost home]# ll /data/fastdfs/storage/data/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx -rw-r--r-- 1 root root 13 4月 24 15:15 /data/fastdfs/storage/data/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx [root@localhost home]# ll /data/fastdfs/storage/data/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg -rw-r--r-- 1 root root 60876 4月 24 15:17 /data/fastdfs/storage/data/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg
經過wget下載
[root@node1 home]# wget http://192.168.0.201/group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg --2019-04-24 15:18:17-- http://192.168.0.201/group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg 正在鏈接 192.168.0.201:80... 已鏈接。 已發出 HTTP 請求,正在等待迴應... 200 OK 長度:60876 (59K) [image/jpeg] 正在保存至: 「wKgAyVzADYOAYzniAADtzKPg5UU160.jpg」 100%[====================================================>] 60,876 --.-K/s 用時 0.005s 2019-04-24 15:18:17 (11.9 MB/s) - 已保存 「wKgAyVzADYOAYzniAADtzKPg5UU160.jpg」 [60876/60876])
經過瀏覽器訪問
http://192.168.0.201/group1/M00/00/00/wKgAyVzADYOAYzniAADtzKPg5UU160.jpg
服務端下載文件操做
/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx
服務端刪除文件操做
/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgAyVzADQKAKftBAAAADUotZKc946.xtx
到這裏整個fastdfs搭建完成了。
fastdfs可參考文章:
http://www.javashuo.com/article/p-ewutvivf-nc.html
https://www.cnblogs.com/sunnydou/p/49b92d511047f4f9da6cd727cfd415d5.html