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 网页访问验证

个人总结:在安装搭建的过程中,需要注意较多地方的配置,尤其是在开机启动服务方面,网上有很多方法,我目前使用的是比较原始的开启启动方式。

如果有条件的情况下,多进行实际操作,加深记忆和理解。

原文地址:https://www.cnblogs.com/airlinp/p/12408174.html