一键架设FastDFS分布式文件系统脚本,基于Centos6
一、使用背景
业务驱动技术需要,原来使用 FTP和 Tomcat upload目录的缺陷日渐严重,受限于业务不断扩大,想使用自动化构建,自动化部署,Zookeeper中心化,分布式RPC DUBBO等技术时,遇到文件存储的瓶颈,因此需求一个使用分布式文件系统注入新的活力。
二、环境
参考 http://blog.csdn.net/hhq163/article/details/46536895 这个博主的博客安装比较新 FastDFS 版本。
在 Docker 下 使用最小化安装的 Centos6 调试完成。
需要 gcc-c++支持
三、目标
文件系统单机部署到多机部署的弹性伸缩。
四、注意
运行该脚本会检测 gcc,会运行yum去安装。
下载gz包完整度。如果不是我指定的数量则退出脚本。
主机IP需要更改,默认是172.17.0.2,请进入到脚本更改。
本脚本适合没有安装 nginx和 fastDfs的机器,请酌量。
脚本要改的变量都在脚本前面了,看着改。
五、代码
#!/bin/bash
if [ -z $(rpm -qa | grep gcc-c++) ]
then
yum install -y gcc-c++
fi
######################## user property #########################################
# 安装tracker机器的IP地址,如果部署其他tracker机器需要更改此ip
ip=172.17.0.2
# 用户路径
base_path=/usrdata/fastdfs
#指定tracker端口
tracker_port=
#nginx 端口
nginx_port=
################################################################################ #进入初始目录
cd ~
#创建数据目录
mkdir -p $base_path ############################### 、软件下载: ################################## if [ -f V1.0.7*.gz ]
then
echo ""
else
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
fi if [ -f fastdfs*module*.gz ]
then
echo ""
else
wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
fi if [ -f V5.*.gz ]
then
echo ""
else
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
fi if [ -f nginx-1.8.*.gz ]
then
echo ""
else
wget http://nginx.org/download/nginx-1.8.0.tar.gz
fi if [ -f pcre*.gz ]
then
echo ""
else
wget http://exim.mirror.fr/pcre/pcre-8.36.tar.gz
fi if [ -f zlib*.gz ]
then
echo ""
else
wget http://zlib.net/zlib-1.2.8.tar.gz
fi packages=`ls -l | grep 'gz$' | wc -l`
echo $packages
if [ $packages != ]
then
echo "网络错误,下载少东西了"
exit
fi
######################### 判断文件是否下载好了 end ############################### #、libfastcommon安装:
cd ~
cp V1.0.7.tar.gz /usr/local/
tar -zxvf V1.0.7.tar.gz
cd libfastcommon-1.0.
./make.sh
./make.sh install
rm -f /usr/local/V1.0.7.tar.gz #libfastcommon.so默认安装到了/usr/lib64/libfastcommon.so,而FastDFS主程序设置的lib目录是/usr/local/lib,所以设置软连接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so #、安装FastDFS:
cd ~
tar -zxvf V5..tar.gz -C /usr/local
cd /usr/local/fastdfs-5.05/ ./make.sh
./make.sh install #配置文件设置:
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf #详细设置见附件
#tracker.conf配置中要修改的几个项:
#bind_addr=172.17.0.2
#port=
#http.server_port=
sed -i "s#\(bind_addr\).*#\1=$ip#" tracker.conf
sed -i "s#\(^port\).*#\1=$tracker_port#" tracker.conf
sed -i "s#\(base_path\).*#\1=$base_path#" tracker.conf
sed -i "s#\(^http.server_port\).*#\1=8181#" tracker.conf #storage.conf配置中要修改的几个项:
#group_name=group1
#bind_addr=172.17.0.2
#port=
#base_path=/usrdata/fastdfs
#store_path0=/usrdata/fastdfs
#tracker_server=172.17.0.2:
#http.server_port=
sed -i "s#\(bind_addr\).*#\1=$ip#" storage.conf
sed -i "s#\(base_path\).*#\1=$base_path#" storage.conf
sed -i "s#\(store_path0\).*#\1=$base_path#" storage.conf
sed -i "s#\(tracker_server\).*#\1=$ip:$tracker_port#" storage.conf
sed -i "s#\(http.server_port\).*#\1=8888#" storage.conf #()启动
#启动tracker storage.conf
fdfs_trackerd /etc/fdfs/tracker.conf
fdfs_storaged /etc/fdfs/storage.conf ##############################、安装nginx插件:#####################################
#()安装
cd ~
tar -zxvf fastdfs-nginx-module_v1..tar.gz #()config文件修改:
#vi config
#修改如下配置,我这里原来是
#CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
#改成
#CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
#这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。
cd fastdfs-nginx-module/src/
sed -i "s#\(CORE_INCS=\"\$CORE_INCS \).*#\1/usr/include/fastdfs /usr/include/fastcommon/\"#" config #修改配置
#group_name=group1
#tracker_server=172.17.0.2:
#store_path0=/usrdata/fastdfs
#base_path=/usrdata/fastdfs
#url_have_group_name = true
sed -i "s#\(group_name\).*#\1=group1#" mod_fastdfs.conf
sed -i "s#\(tracker_server\).*#\1=$ip:$tracker_port#" mod_fastdfs.conf
sed -i "s#\(store_path0\).*#\1=$base_path#" mod_fastdfs.conf
sed -i "s#\(base_path\).*#\1=$base_path#" mod_fastdfs.conf
sed -i "s#\(url_have_group_name\).*#\1=true#" mod_fastdfs.conf cp mod_fastdfs.conf /etc/fdfs #)、配置文件服务器的软连接
ln -s /usrdata/fastdfs/data /usrdata/fastdfs/data/M00
#(配置文件中stoage存放数据的路径) #同时将以下两个文件复制到/etc/fdfs/
cp /usr/local/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs/ #、nginx安装:
#在每个Storage服务器上安装Nginx #()pcre安装:
cd ~
tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make && make install
cd ../ ln -s /usr/local/lib/libpcre.so. /lib64/ #()zlib安装:
cd ~
tar -zxvf zlib-1.2..tar.gz
cd zlib-1.2.
./configure
make && make install #()nginx安装:
cd ~
tar -zxvf nginx-1.8..tar.gz
cd nginx-1.8.
ipath=`whoami`
./configure --prefix=/usr/local/nginx --add-module=/$ipath/fastdfs-nginx-module/src
make
make install #在server中添加
#
#location /group1/M00{
# root /usrdata/fastdfs/data;
# ngx_fastdfs_module;
#} #判断文件内容是否已经写入
nginxconf=`sed -n '/group1/p' /usr/local/nginx/conf/nginx.conf` if [ -z $nginxconf ]
then
sed -i "s@#error_page.*@location /group1/M00{root /usrdata/fastdfs/data;ngx_fastdfs_module;}@" /usr/local/nginx/conf/nginx.conf
else
echo "nothing todo"
fi &> /dev/null 启动:
kill - $(ps -A | grep nginx | cut -d "?" -f ) &> /dev/null
/usr/local/nginx/sbin/nginx 安装完成。
#、测试文件上传:
sed -i "s#\(base_path=\).*#\1$base_path#" /etc/fdfs/client.conf
sed -i "s#\(tracker_server=\).*#\1$ip:$tracker_port#" /etc/fdfs/client.conf
cd ~
echo "hello world" > .txt
#/usr/bin/fdfs_test /etc/fdfs/client.conf upload .txt
result=`/usr/bin/fdfs_test /etc/fdfs/client.conf upload .txt |grep url | grep -v big`
echo "得到类似这样的 $result"
curl ${result:}
六、成功示意图
输出 hello world 为成功。
一键架设FastDFS分布式文件系统脚本,基于Centos6的更多相关文章
- FastDFS 分布式文件系统部署实战及基本使用
FastDFS 分布式文件系统部署实战及基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. FastDFS是一个开源的高性能分布式文件系统.它的主要功能包括:文件存储,文件同步 ...
- Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)
文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...
- FastDFS分布式文件系统
FastDFS分布式文件系统 阅读目录 相关文章 1 分布式文件系统介绍 2 系统架构介绍 3 FastDFS性能方案 4 Linux基本命令操作 5 安装VirtualBox虚拟机并配置Ubuntu ...
- FastDFS 分布式文件系统的安装与使用(单节点)
FastDFS 分布式文件系统的安装与使用(单节点) 跟踪服务器:192.168.4.121 (edu-dfs-tracker-01) 存储服务器:192.168.4.125 (edu-dfs-sto ...
- 使用Webupload上传图片到FastDFS分布式文件系统
使用Webupload插件上传图片到FastDFS分布式文件系统. 前提条件:1.已安装FastDFS分布式文件系统 2.使用webuploader插件上传文件 3.maven工程已引入FastDFS ...
- CentOS7 安装FastDFS分布式文件系统
CentOS7 安装FastDFS分布式文件系统 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家 ...
- django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除
运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.16 ...
- FastDFS分布式⽂文件系统
FastDFS分布式⽂文件系统 1. 什么是FastDFS FastDFS 是⽤用 c 语⾔言编写的⼀一款开源的分布式⽂文件系统.FastDFS 为互联⽹网量量身定制, 充分考虑了了冗余备份.负载均 ...
- 07.Linux系统-Fastdfs分布式文件系统-互为主从配置搭建部署
Fastdfs分布式文件系统-互为主从配置部署 1.安装基础依赖 yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl ...
随机推荐
- D3.js从入门到“放弃”指南
前言 近期略有点诸事不顺,趁略有闲余之时,玩起D3.js.之前实际项目中主要是用各种chart如hightchart.echarts等,这些图形库玩起来貌都是完美的,一切皆可配置,但几年前接触了D3之 ...
- HTML学习笔记 w3sCss盒子模型(阴影)(div的一些使用)案例 第十节 (原创) 参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- WebGL学习(2) - 3D场景
原文地址:WebGL学习(2) - 3D场景 经过前面WebGL学习(1) - 三角形的学习,我们已经掌握了webGL的基础知识,也已经能够画出最基本的图形,比如点,线,三角形,矩形等.有了2D绘图的 ...
- C#内部关于绑定事件Event的线程安全
private EventHandler _FieldsChanged;public event EventHandler FieldsChanged{ add { Even ...
- c# asp.net 多数组索引的解决方法
本人今天做了一个功能 需要在一个类里用多个数组, 数组需要索引器来调用 一个数组 我查了msdn 一个类里面只能有一个this 索引器 那这么多数组如何构造索引呢 我在坛子里找到了解决之道 view ...
- 在写一点关于MySQL的知识,感觉自己mmd
DBMS(Database Management System)数据库管理系统 包括有DDL(数据定义语言)和DML(数据操纵语言)以及DCL(数据库控制语言) 数据库设计方法: 1.需求分析阶段 ...
- JavaScript基本知识点整理(超实用)
絮叨絮叨 今天给大家分享一下这两天自己整理的JavaScript部分的笔记,下面都是我觉得比较常用的,希望能帮助到大家! 1. 导入JS的三种方式 ①在HTML ...
- Python待分析的模块
fcntl 文件控制模块 http://docs.python.org/2.7/library/fcntl.html#module-fcntl struct 二进制文本处理模块 http://docs ...
- mac 安装protobuf,并编译
因公司接口协议是PB文件,需要将 PB 编译成JAVA文件,且MAC 电脑,故整理并分享MAC安装 google 下的protobuf 文件 MAC 安装protobuf 流程 1.下载 http ...
- C++对象模型之lambda表达式
lambda表达式的求值-对象构造 本来想写“定义”,即“definition”,像函数定义一样,函数具体实现的代码实体即为实现,但是就像lambda既然被称为表达式,它确实有表达式那样“求值”的动作 ...