FastDfs搭建笔记
继上一篇博文,对fds做了一些个人的理解简介,现在需要开始实战搭建操作,同样大部分步骤来自于网络取材,还有个人的一些理解的注释说明,如有误,请谅解辛苦指出。
本次使用单个虚拟机搭建,所以Tracker和Storage在同一服务器,实际生产应用中,Tracker和Storage必须在不同服务器,Tracker和Storage各自至少2台服务器,否则无法达到fds的应用意义。
一. 软件安装
1. 安装编译环境
FastDFS及依赖程序目前是使用C语言进行编译,所以要在Linux系统环境中,安装C语言框架,用于之后的编译安装。
yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel wget unzip perl pcre-devel zlib-devel net-tools iptables-services telnet setuptool ntsysv iptables system-config-securitylevel-tui
2. 安装软件准备
搭建fds需要以下依赖程序和fds安装包,将以下软件包下载后,上传到linux服务器中指定目录。
nginx_upstream_check_module-master.zip
nginx-1.12.1.tar.gz
keepalived-1.4.3.tar.gz
FastDFS_v5.08.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon-master.zip
ngx_cache_purge-2.3.tar.gz
pcre-8.34.tar.gz
zlib-1.2.11.tar.gz
3. fds解压及编译安装
Linux系统中,安装程序主要使用编译安装,即:依赖C语言框架,先进行编译,再进行安装。
在依赖程序安装完成后,重点开始fds的安装部分。
安装过程:1.解压安装包 → 2.编译 → 3.安装
###进入拷贝目录
cd /usr/local/src
###解包,并生成同名文件夹,并保存原始安装包
tar -xzvf FastDFS_v5.08.tar.gz
###进入同名文件夹
cd FastDFS/
###编译并安装
./make.sh && ./make.sh install
###输出屏幕信息,可省略
echo ""
echo " ---== FastDF 5.08 Soft Install Ok... ==---"
echo ""
sleep 3
4. Tracker安装及配置
###判断/data/fastdfs路径下是否有fastdfs目录,有则忽略,无则创建
if [ ! -d /data/fastdfs ]; then mkdir -p /data/fastdfs; fi
###将/etc/fdfs下的tracker.conf.sample,复制到/etc/fdfs下,并新生成文件tracker.conf,(生成协调器配置文件)
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
###检测/etc/fdfs/tracker.conf中是否有内容“base_path=/home/yuqing/fastdfs!base_path”,有则
###替换为“base_path=/data/fastdfs!g' /etc/fdfs/tracker.conf”,无则忽略
sed -i 's!base_path=/home/yuqing/fastdfs!base_path=/data/fastdfs!g' /etc/fdfs/tracker.conf
###将/etc/fdfs下的client.conf.sample,复制到/etc/fdfs下,并新生成文件client.conf (生成客户端配置文件)
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
###检测/etc/fdfs/ client.conf中是否有内容“base_path=/home/yuqing/fastdfs”,有则替换为
###“base_path=/data/fastdfs”,无则忽略
sed -i 's!base_path=/home/yuqing/fastdfs!base_path=/data/fastdfs!g' /etc/fdfs/client.conf
###检测/etc/fdfs/ client.conf中是否有内容“tracker_server=”,有则使用#注释掉,无则忽略
sed -i 's!tracker_server=!#tracker_server=!g' /etc/fdfs/client.conf
###在/etc/fdfs/client.conf尾部增加内容“tracker_server=192.168.136.132:22122”,此为配置协调
###服务器地址
echo "tracker_server=192.168.136.132:22122" >> /etc/fdfs/client.conf # modify
###在/etc/rc.d/rc.local尾部,增加内容“/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start”,此为
###设置协调器服务,开机启动
echo "/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start" >> /etc/rc.d/rc.local
###为root用户增加rc.local文件的执行权限
chmod +x /etc/rc.d/rc.local
#/etc/rc.d/rc.local
5. Storage安装及配置
###检测/data下是否有相应目录,没有则创建,有则忽略
if [ ! -d /data/fastdfs ]; then mkdir -p /data/fastdfs; fi
if [ ! -d /data/fastdfs0 ]; then mkdir -p /data0/fastdfs0; fi
if [ ! -d /data/fastdfs0 ]; then mkdir -p /data1/fastdfs1; fi
if [ ! -d /data/fastdfs0 ]; then mkdir -p /data2/fastdfs2; fi
if [ ! -d /data/fastdfs0 ]; then mkdir -p /data3/fastdfs3; fi
###将程序安装的原始配置文件,复制到指定目录,同前文
cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
###在指定文件中检测内容,并替换,无则忽略,同前文
sed -i 's!base_path=/home/yuqing/fastdfs!base_path=/data/fastdfs!g' /etc/fdfs/storage.conf
sed -i 's!tracker_server=!#tracker_server=!g' /etc/fdfs/storage.conf
sed -i 's!store_path0=!#store_path0=!g' /etc/fdfs/storage.conf
###在指定文件内的尾部增加内容,此为配置存储节点的连接地址
echo "" >> /etc/fdfs/storage.conf
echo "tracker_server=192.168.136.132:22122" >> /etc/fdfs/storage.conf
###在指定文件内部的尾部增加内容,此为配置文件存储目录
echo "" >> /etc/fdfs/storage.conf
echo "store_path0=/data0/fastdfs0" >> /etc/fdfs/storage.conf
echo "store_path1=/data1/fastdfs1" >> /etc/fdfs/storage.conf
echo "store_path2=/data2/fastdfs2" >> /etc/fdfs/storage.conf
echo "store_path3=/data3/fastdfs3" >> /etc/fdfs/storage.conf
###在指定文件中检测内容,并替换,无则忽略,同前文
sed -i 's!store_path_count=1!store_path_count=4!g' /etc/fdfs/storage.conf
###将内容写入服务器启动配置文件中,此为配置存储节点服务开机启动,同前文
echo "/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start" >> /etc/rc.d/rc.local
###为root用户增加文件的执行权限,因为正常情况tracker和storage应该在不同的服务器,所
###以要分别执行,中小型实验室因为用不到太多服务器组,所以建议将tracker和storage安装在
###同一服务器,以便在某台服务器宕机的情况下,另外一台也能进行完整的fastdfs的运行。
chmod +x /etc/rc.d/rc.local
#/etc/rc.d/rc.local
###编辑存储节点配置文件
vim /etc/fdfs/storage.conf
group_name=group1 ###服务器组命名
6. Nginx的安装及配置
6.1 安装
###安装nginx网络代理服务,说明同前文
cd /usr/local/src
tar -zxvf pcre-8.34.tar.gz
cd /usr/local/src
tar -zxvf zlib-1.2.11.tar.gz
cd /usr/local/src
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
sed -i 's!CORE_INCS=!#CORE_INCS=!g' /usr/local/src/fastdfs-nginx-module/src/config
echo "CORE_INCS=\"\$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/\"" >> /usr/local/src/fastdfs-nginx-module/src/config
cd /usr/local/src
tar -zxvf nginx-1.12.1.tar.gz
cd /usr/local/src/nginx-1.12.1
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-debug \
--add-module=/usr/local/src/fastdfs-nginx-module/src \
--with-pcre=/usr/local/src/pcre-8.34 \
--with-zlib=/usr/local/src/zlib-1.2.11
make
sleep 3
make install
sleep 3
6.2 配置
/usr/bin/cp -f /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
mkdir -p /data/log
sed -i 's!base_path=/tmp!base_path=/data/log!g' /etc/fdfs/mod_fastdfs.conf
sed -i 's!store_path0=/home/yuqing/fastdfs!#store_path0=/home/yuqing/fastdfs!g' /etc/fdfs/mod_fastdfs.conf
sed -i 's!tracker_server=!#tracker_server=!g' /etc/fdfs/mod_fastdfs.conf
sed -i 's!url_have_group_name = false!url_have_group_name = true!g' /etc/fdfs/mod_fastdfs.conf
echo "tracker_server=192.168.136.132:22122" >> /etc/fdfs/mod_fastdfs.conf
echo "" >> /etc/fdfs/mod_fastdfs.conf
echo "store_path0=/data0/fastdfs0" >> /etc/fdfs/mod_fastdfs.conf
echo "store_path1=/data1/fastdfs1" >> /etc/fdfs/mod_fastdfs.conf
echo "store_path2=/data2/fastdfs2" >> /etc/fdfs/mod_fastdfs.conf
echo "store_path3=/data3/fastdfs3" >> /etc/fdfs/mod_fastdfs.conf
###修改存储节点的磁盘挂载点数量,用于实现扩容
sed -i 's!store_path_count=1!store_path_count=4!g' /etc/fdfs/mod_fastdfs.conf # storage.conf 相同
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local
ln -s /data0/fastdfs0/data /data0/fastdfs0/M00
ln -s /data1/fastdfs1/data /data1/fastdfs1/M01
ln -s /data2/fastdfs2/data /data2/fastdfs2/M02
ln -s /data3/fastdfs3/data /data3/fastdfs3/M03
ln -s /data0/fastdfs0/data M00
ln -s /data1/fastdfs1/data M01
ln -s /data2/fastdfs2/data M02
ln -s /data3/fastdfs3/data M03
###编辑代理服务配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
listen 8888; # /etc/fdfs/storage.conf http.server_port=8888
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
###增加各个软链接对应目录地址,用于外部请求时候进行地址翻译
location /group1/M00 {
root /data0/fastdfs0;
ngx_fastdfs_module;
}
location /group1/M01 {
root /data1/fastdfs1;
ngx_fastdfs_module;
}
location /group1/M02 {
root /data2/fastdfs2;
ngx_fastdfs_module;
}
location /group1/M03 {
root /data3/fastdfs3;
ngx_fastdfs_module;
}
###参考命令
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop | start | reload
二. 防火墙设置
firewall-cmd --zone=public --add-port=23000/tcp --permanent #Storage服务端口
firewall-cmd --zone=public --add-port=22122/tcp --permanent #Tracker服务端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent #Nginx转发服务端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent #Nginx网页端口服务
firewall-cmd --reload #重启防火墙
firewall-cmd --zone=public --list-ports #查看端口开放情况
三.检查相关服务开启情况
systemctl status firewalld.service #防火墙状态
ps -aux | grep fdfs #Storage和Tracker服务状态,由于是使用系统rc.local自启动文件托管开机启动,所以使用systemctl 无法查询到fds相关服务,这里使用进程查询
四. 测试
使用的开发同事编写的测试小工具
1. 连接测试
2. 文件上传测试
3. 验证
3.1 根据上传测试中,测试工具反馈的地址进入虚拟机中进行查看验证
3.2 网页访问验证
个人总结:在安装搭建的过程中,需要注意较多地方的配置,尤其是在开机启动服务方面,网上有很多方法,我目前使用的是比较原始的开启启动方式。
如果有条件的情况下,多进行实际操作,加深记忆和理解。