从零构件FastDFS文件服务器
FastDFS是一个分布式的文件系统,具体内容就不重点介绍了。接下来我们主要进行搭建。
一)准备工作
首先进行相关包的下载:
(1)、我用的是centos7版本,具体忘记了,新建fastdfs目录,在该目录下下载相关包;
(2)、下载fastdfs包:打开https://github.com/happyfish100/fastdfs,点击下图所示的releases,选择版本,截止博客发表时最新的是v6.0.4。在服务器上创建一个文件夹,切换到该目录下,我的是/data/wlw/fastdfs,接下来下载包。
wget https://github.com/happyfish100/fastdfs/archive/fastdfs-6.03.tar.gz
下载成功如图所示:
(3)、重复上述步骤在刚才/data/wlw/fastdfs中下载以下包:
①fastdfs-nginx-module:
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/fastdfs-nginx-module-1.22.tar.gz
②libfastcommon:
wget https://github.com/happyfish100/libfastcommon/archive/libfastcommon-1.0.42.tar.gz
③nginx:
wget http://nginx.org/download/nginx-1.17.6.tar.gz
下载完如图所示:
(4)、安装以下依赖包:
yum -y install libevent gcc-c++ pcre pcre-devel zlib zlib-devel opensll openssl-devel libpcre-dev
下载完成如下所示:
(5)、解压上述4个压缩包
tar -zvfx fastdfs-6.04.tar.gz
tar -zvfx fastdfs-nginx-module-1.22.tar.gz
tar -zvfx libfastcommon-1.0.42.tar.gz
tar -zvfx nnginx-1.17.6.tar.gz
(6)、安装编译libfastcommon
cd libfastcommon-1.0.42/ && ./make.sh && ./make.sh install
(7)、安装编译fastdfs
cd fastdfs-6.04/ && ./make.sh && ./make.sh install
但是报了如下错误:
./make.sh: line 146: perl: command not found
查了一下是说 安装perl跟perl-devel
yum -y install perl perl-devel
再次
cd fastdfs-6.03/ && ./make.sh && ./make.sh install
如下图问题得以解决。
(8)、复制配置到/etc/fdfs/下:
cp fastdfs-6.04/conf/* /etc/fdfs/
(9)、在/data/wlw/fastdfs下创建tracker、storage、client三个文件夹:
mkdir /data/wlw/fastdfs/tracker
mkdir /data/wlw/fastdfs/storage
mkdir /data/wlw/fastdfs/client
(10)、切换目录到/etc/fdfs,修改tracker.conf文件中的
base_path=/data/wlw/fastdfs/tracker
(11)、修改编辑storage.conf中的以下字段:
//这个是基本路径
base_path=/data/wlw/fastdfs/storage
//分组名称随便命名
group_name=glen
//这个地址和前面路径保持一致
store_path0=/data/wlw/fastdfs/storage
//这是服务器地址,端口号是默认端口,不建议修改,我这边有两个地址都写了一下
tracker_server=192.168.60.99:22122
(12)、修改编辑client.conf中的以下字段:
//这个是基本路径
base_path=/data/wlw/fastdfs/storage
//这是服务器地址,端口号是默认端口,不建议修改我这边有两个地址都写了一下
tracker_server=192.168.60.99:22122
(13)、修改fastdfs-nginx-module/src/config文件:
①、先将fastdfs-nginx-module-1.22移到nginx-1.17.6文件下,这样比较统一:
mv /data/wlw/fastdfs fastdfs-nginx-module-1.22 /data/wlw/fastdfs/nginx-1.17.6
②、将fastdfs-nginx-module-1.22/src下mod_fastdfs.conf到/etc/fdfs下:
cp /data/wlw/fastdfs/nginx-1.17.6/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs
③、修改/etc/fdfs/mod_fastdfs.conf文件。
base_path=/data/wlw/fastdfs/storage
tracker_server=192.168.60.99:22122
group_name=group1
url_have_group_name=true
(14)、删除config文件
rm -f /data/wlw/fastdfs/nginx-1.17.6/fastdfs-nginx-module-1.22/src/config
新建config文件,vi config并输入以下内容
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_fastdfs.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_fastdfs.conf\"'"
fi
(15)、如果还出现问题,那就是版本匹配问题,好好看一下版本。
(16)、配置nginx。
1)、进入nginx目录,并引入fastdfs-nginx-module模块
cd /data/wlw/fastdfs/nginx-1.17.6
./configure --add-module=fastdfs-nginx-module-1.22/src
2)修改nginx配置文件,要注意nginx的启动配置文件是/usr/local/nginx/conf下
cd /usr/local/nginx/conf
vim nginx.conf
在配置文件修改两处:
①在配置文件开头处加入
user root;
②修改配置文件中如下内容:
server {
listen 8888;
server_name 192.168.60.99;
location ~/group1/M00 {
root /data/wlw/fastdfs/storage/data;
ngx_fastdfs_module;
}
因为默认80端口比较特殊,所以换成8888端口,server_name要换成你服务器的ip,不能写localhost。下面新加一个location,唯一需要改变的是root /data/wlw/fastdfs/storage/data;这一行换成你对应的地址就可以。
二)开始测试
(17)、启动tracker和storage服务器以及nginx。
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
注意:以下是重启的方法
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
如图,如果监听到22122和23000端口,启动成功。
接下来启动nginx。通过监听8888端口,确定是否启动,以下是常用的命令
cd /usr/local/nginx/sbin
./nginx -V // 查看nginx版本
./nginx -s reload // 重新启动nginx
./nginx start // 启动nginx
./nginx stop // 关闭nginx
(18)、切换目录并上传测试文件,可随便传一个,如图,link.jpg即为我的测试文件。
cd /data/wlw/fastdfs
(19)、输入上传文件命令和查看上传文件信息命令如下图
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf link.jpg
/usr/bin/fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKg8Y13wSpWAXZ9pAAHVYf-cGkU571.jpg
以下是相关常用命令:
// 查看集群情况
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
// 删除一个storage
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 20.12.1.73
// 测试上传
fdfs_test /etc/fdfs/client.conf upload test.txt
(20)、配置了nginx,可以在浏览器输入ip+端口号+group1/M00/00/00/+文件码。博主如图所示:
到此测试成功。