簡(jiǎn)介
FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和 負(fù)載均衡 的問(wèn)題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
配置流程
本文選用華為鯤鵬云服務(wù)ECS KC1實(shí)例做測(cè)試,KC1實(shí)例的處理器為兼容ARMv8指令集的鯤鵬920。
1.選擇操作環(huán)境
本文選用華為鯤鵬云服務(wù)ECS KC1實(shí)例做測(cè)試
2.配置編譯環(huán)境
1)安裝FastDFS依賴環(huán)境。
yum install gcc-c++ -y
yum install pcre pcre-devel openssl ssl-devel perl-devel -y
2)安裝FastDFS依賴包libfastcommon。
cd /usr/local/src
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
tar -zxvf V1.0.38.tar.gz
cd libfastcommon-1.0.38/
./make.sh
./make.sh install
3)安裝FastDFS。
cd /usr/local/src
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11/
./make.sh
./make.sh install
4)將配置文件復(fù)制到系統(tǒng)為fdfs預(yù)設(shè)的目錄。
cd /usr/local/src/fastdfs-5.11/conf
cp mime.types http.conf /etc/fdfs/
5) 查看安裝FastDFS過(guò)程中產(chǎn)生的可執(zhí)行文件。
ls -la /usr/bin/fdfs*
顯示類似如下內(nèi)容表示安裝成功。
-rwxr-xr-x 1 root root 381896 Jul 9 14:45 /usr/bin/fdfs_appender_test
-rwxr-xr-x 1 root root 381680 Jul 9 14:45 /usr/bin/fdfs_appender_test1
-rwxr-xr-x 1 root root 372592 Jul 9 14:45 /usr/bin/fdfs_append_file
-rwxr-xr-x 1 root root 372392 Jul 9 14:45 /usr/bin/fdfs_crc32
-rwxr-xr-x 1 root root 372624 Jul 9 14:45 /usr/bin/fdfs_delete_file
-rwxr-xr-x 1 root root 373360 Jul 9 14:45 /usr/bin/fdfs_download_file
-rwxr-xr-x 1 root root 372976 Jul 9 14:45 /usr/bin/fdfs_file_info
-rwxr-xr-x 1 root root 382640 Jul 9 14:45 /usr/bin/fdfs_monitor
-rwxr-xr-x 1 root root 1138424 Jul 9 14:45 /usr/bin/fdfs_storaged
-rwxr-xr-x 1 root root 387728 Jul 9 14:45 /usr/bin/fdfs_test
-rwxr-xr-x 1 root root 386984 Jul 9 14:45 /usr/bin/fdfs_test1
-rwxr-xr-x 1 root root 520352 Jul 9 14:45 /usr/bin/fdfs_trackerd
-rwxr-xr-x 1 root root 373584 Jul 9 14:45 /usr/bin/fdfs_upload_appender
-rwxr-xr-x 1 root root 374616 Jul 9 14:45 /usr/bin/fdfs_upload_file
6)配置FastDFS。
分別對(duì)tracker,storage,client進(jìn)行配置。
a.創(chuàng)建目錄。
mkdir /home/fastdfs/tracker -p
mkdir /home/fastdfs/storage -p
cd /etc/fdfs/
b.配置tracker。
cp tracker.conf.sample tracker.conf
vi tracker.conf
將內(nèi)容修改為“base_path=/home/fastdfs/tracker”和“thread_stack_size = 128KB”,如下面加粗部分所示:
# the base path to store data and log files
base_path=/home/fastdfs/tracker
......
# thread stack size, should >= 64KB
# default value is 64KB
thread_stack_size = 128KB
c. 啟動(dòng)tracker。
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
d. 配置storage。
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vi storage.conf
將內(nèi)容修改為“base_path=/home/fastdfs/storage”、“store_path0=/home/fastdfs/storage”和“tracker_server=XX.XX.XX.XX:22122”。
“tracker_server”中的“XX.XX.XX.XX”為本機(jī)的虛擬IP地址,可以通過(guò)ifconfig命令查詢獲取。
修改后的內(nèi)容,如下面加粗部分所示,其中“192.168.1.206”為示例,應(yīng)根據(jù)實(shí)際虛擬IP地址填寫。
# the base path to store data and log files
base_path=/home/fastdfs/storage
...
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/home/fastdfs/storage
#store_path1=/home/yuqing/fastdfs2
.....
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.1.206:22122
e. 啟動(dòng)storage。
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
f. 查看storage啟動(dòng)日志。
vi /home/fastdfs/storage/logs/storaged.log
查看最后幾行,顯示類似如下所示,表示啟動(dòng)成功。
[2019-07-09 17:03:51] INFO - file: tracker_client_thread.c, line: 310, successfully connect to tracker server 192.168.1.206:2
2122, as a tracker client, my ip is 192.168.1.206
[2019-07-09 17:04:21] INFO - file: tracker_client_thread.c, line: 1263, tracker server 192.168.1.206:22122, set tracker leade
r: 192.168.1.206:22122
g.配置client。
cd /etc/fdfs/
cp client.conf.sample client.conf
vi client.conf
將內(nèi)容修改為“base_path=/home/fastdfs/tracker”和“tracker_server=XX.XX.XX.XX:22122”。
“tracker_server”中的“XX.XX.XX.XX”為本機(jī)的虛擬IP地址,可以通過(guò)ifconfig命令查詢獲取。
修改后的內(nèi)容,如下面加粗部分所示,其中“192.168.1.206”為示例,應(yīng)根據(jù)實(shí)際虛擬IP地址填寫。
# the base path to store log files
base_path=/home/fastdfs/tracker
......
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.1.206:22122
7) 安裝和配置fastdfs-nginx-module。
a. 安裝fastdfs-nginx-module。
cd /usr/local/src
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
tar -zxvf V1.20.tar.gz
b.配置fastdfs-nginx-module的“config”文件。
cd /usr/local/src/fastdfs-nginx-module-1.20/src/
vi config
按照如下加粗所示,修改“ngx_module_incs”和“CORE_INCS”。
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='/etc/fdfs/mod_fast
dfs.conf'"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='/etc/fdfs/mod_fast
dfs.conf'"
fi
c. 配置fastdfs-nginx-module的“mod_fastdfs.conf”文件。
cp /usr/local/src/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf
將內(nèi)容修改為“base_path=/home/fastdfs”、“tracker_server=XX.XX.XX.XX:22122”、“url_have_group_name = true”和“store_path0=/home/fastdfs/storage”。
“tracker_server”中的“XX.XX.XX.XX”為本機(jī)的虛擬IP地址,可以通過(guò)ifconfig命令查詢獲取。
修改后的內(nèi)容,如下面加粗部分所示,其中“192.168.1.206”為示例,應(yīng)根據(jù)實(shí)際虛擬IP地址填寫。
# the base path to store log files
base_path=/home/fastdfs
......
# FastDFS tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=192.168.1.206:22122
......
# if the url / uri including the group name
# set to false when uri like /M00/00/00/xxx
# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name = true
.......
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf
store_path0=/home/fastdfs/storage
8) 安裝和配置Nginx。
a.安裝Nginx。
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.15.2.tar.gz
tar -zxvf nginx-1.15.2.tar.gz
cd nginx-1.15.2
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src/
make &&make install
b. 配置Nginx。
cd /usr/local/nginx/conf/
vi nginx.conf
server {
listen80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~/M00{
root /home/fastdfs/storage/data;
ngx_fastdfs_module;
}
location / {
root html;
index index.html index.htm;
}
3. 測(cè)試已完成編譯的軟件
1) 啟動(dòng)nginx
cd /usr/local/nginx/sbin/
./nginx
2)測(cè)試。
a.生成測(cè)試文件。
cd /usr/local/src
touch a.txt
vi a.txt
插入如下內(nèi)容并保存。
kungpeng test fastdfs ok!
b.生成文件鏈接。
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt
回顯信息如下:
[root@ecs-001 src]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt
group1/M00/00/00/wKgBzl0khdiAWJcGAAAAGmbRVtQ604.txt
記錄返回的信息為“group1/FAST/00/00/wKgBzl0khdiAWJcGAAAAGmbRVtQ604.txt”。
c.放通 云服務(wù)器 安全組中入口規(guī)則里的80端口,在瀏覽器中輸入“http://[ECS IP]:80/group1/M00/00/00/wKgBzl0khdiAWJcGAAAAGmbRVtQ604.txt”可以看到返回的“a.txt”相關(guān)信息。