码迷,mamicode.com
首页 > 其他好文 > 详细

一键架设FastDFS分布式文件系统脚本,基于Centos6

时间:2016-06-25 00:51:40      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:

一、使用背景

  业务驱动技术需要,原来使用 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的机器,请酌量。

  脚本要改的变量都在脚本前面了,看着改。

 

五、代码

  1 #!/bin/bash
  2 gcc -v
  3 if [ $? > 0 ]
  4 then
  5 yum install -y gcc-c++
  6 fi
  7 ######################## user property #########################################
  8 # 安装tracker机器的IP地址,如果部署其他tracker机器需要更改此ip
  9 ip=172.17.0.2
 10 # 用户路径
 11 base_path=/usrdata/fastdfs
 12 #指定tracker端口
 13 tracker_port=22122
 14 #nginx 端口
 15 nginx_port=80
 16 ################################################################################
 17 
 18 #进入初始目录
 19 cd ~
 20 #创建数据目录
 21 mkdir -p $base_path
 22 
 23 
 24 ############################### 1、软件下载: ##################################
 25 
 26 if [ -f V1.0.7*.gz ]
 27 then
 28 echo ""
 29 else
 30 wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
 31 fi
 32 
 33 if [ -f fastdfs*module*.gz ]
 34 then
 35 echo ""
 36 else
 37 wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
 38 fi
 39 
 40 if [ -f V5.05*.gz ]
 41 then
 42 echo ""
 43 else
 44 wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
 45 fi
 46 
 47 if [ -f nginx-1.8.0*.gz ]
 48 then
 49 echo ""
 50 else
 51 wget http://nginx.org/download/nginx-1.8.0.tar.gz
 52 fi
 53     
 54 if [ -f pcre*.gz ]
 55 then
 56 echo ""
 57 else
 58 wget http://exim.mirror.fr/pcre/pcre-8.36.tar.gz
 59 fi    
 60 
 61 if [ -f zlib*.gz ]
 62 then
 63 echo ""
 64 else
 65 wget http://zlib.net/zlib-1.2.8.tar.gz
 66 fi
 67 
 68 packages=`ls -l | grep gz$ | wc -l`
 69 echo $packages
 70 if [ $packages != 6 ]
 71 then
 72 echo "网络错误,下载少东西了"
 73 exit
 74 fi
 75 ######################### 判断文件是否下载好了 end ###############################
 76 
 77 #2、libfastcommon安装:
 78 cd ~
 79 cp V1.0.7.tar.gz /usr/local/
 80 tar -zxvf V1.0.7.tar.gz
 81 cd libfastcommon-1.0.7
 82 ./make.sh
 83 ./make.sh install
 84 rm -f /usr/local/V1.0.7.tar.gz
 85 
 86 #libfastcommon.so默认安装到了/usr/lib64/libfastcommon.so,而FastDFS主程序设置的lib目录是/usr/local/lib,所以设置软连接
 87  ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
 88  ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
 89  ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
 90  ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
 91 
 92 #3、安装FastDFS:
 93 cd ~
 94 tar -zxvf V5.05.tar.gz -C /usr/local
 95 cd /usr/local/fastdfs-5.05/
 96 
 97 ./make.sh
 98 ./make.sh install
 99 
100 
101 #配置文件设置:
102 cd /etc/fdfs
103 cp tracker.conf.sample tracker.conf
104 cp storage.conf.sample storage.conf
105 cp client.conf.sample client.conf
106 
107 #详细设置见附件
108 #tracker.conf配置中要修改的几个项:
109 #bind_addr=172.17.0.2
110 #port=22122
111 #http.server_port=8181
112 sed -i "s#\(bind_addr\).*#\1=$ip#" tracker.conf
113 sed -i "s#\(^port\).*#\1=$tracker_port#" tracker.conf
114 sed -i "s#\(base_path\).*#\1=$base_path#" tracker.conf
115 sed -i "s#\(^http.server_port\).*#\1=8181#" tracker.conf
116 
117 
118 #storage.conf配置中要修改的几个项:
119 #group_name=group1
120 #bind_addr=172.17.0.2
121 #port=23000
122 #base_path=/usrdata/fastdfs
123 #store_path0=/usrdata/fastdfs
124 #tracker_server=172.17.0.2:22122
125 #http.server_port=8888
126 sed -i "s#\(bind_addr\).*#\1=$ip#" storage.conf
127 sed -i "s#\(base_path\).*#\1=$base_path#" storage.conf
128 sed -i "s#\(store_path0\).*#\1=$base_path#" storage.conf
129 sed -i "s#\(tracker_server\).*#\1=$ip:$tracker_port#" storage.conf
130 sed -i "s#\(http.server_port\).*#\1=8888#" storage.conf
131 
132 #(3)启动
133 #启动tracker storage.conf
134 fdfs_trackerd /etc/fdfs/tracker.conf
135 fdfs_storaged /etc/fdfs/storage.conf
136 
137 ##############################4、安装nginx插件:#####################################
138 #(1)安装
139 cd ~
140 tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
141 
142 
143 #(2)config文件修改:
144 #vi config
145 #修改如下配置,我这里原来是
146 #CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
147 #改成
148 #CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
149 #这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。
150 cd fastdfs-nginx-module/src/
151 sed -i "s#\(CORE_INCS=\"\$CORE_INCS \).*#\1/usr/include/fastdfs /usr/include/fastcommon/\"#" config
152 
153 
154 
155 #修改配置
156 #group_name=group1
157 #tracker_server=172.17.0.2:22122
158 #store_path0=/usrdata/fastdfs
159 #base_path=/usrdata/fastdfs
160 #url_have_group_name = true
161 sed -i "s#\(group_name\).*#\1=group1#" mod_fastdfs.conf
162 sed -i "s#\(tracker_server\).*#\1=$ip:$tracker_port#" mod_fastdfs.conf
163 sed -i "s#\(store_path0\).*#\1=$base_path#" mod_fastdfs.conf
164 sed -i "s#\(base_path\).*#\1=$base_path#" mod_fastdfs.conf
165 sed -i "s#\(url_have_group_name\).*#\1=true#" mod_fastdfs.conf
166 
167 cp  mod_fastdfs.conf /etc/fdfs
168 
169 
170 
171 #2)、配置文件服务器的软连接
172 ln -s /usrdata/fastdfs/data /usrdata/fastdfs/data/M00  
173 #(配置文件中stoage存放数据的路径)
174 
175 
176 #同时将以下两个文件复制到/etc/fdfs/
177 cp /usr/local/fastdfs-5.05/conf/http.conf /etc/fdfs/
178 cp /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs/
179 
180 
181 #5、nginx安装:
182 #在每个Storage服务器上安装Nginx
183 
184 #(1)pcre安装:
185 cd ~
186 tar -zxvf pcre-8.36.tar.gz
187 cd pcre-8.36
188 ./configure
189 make && make install
190 cd ../
191 
192 ln -s /usr/local/lib/libpcre.so.1 /lib64/
193 
194 #(2)zlib安装:
195 cd ~
196 tar -zxvf zlib-1.2.8.tar.gz
197 cd zlib-1.2.8
198 ./configure
199 make && make install
200 
201 
202 #(3)nginx安装:
203 cd ~
204 tar -zxvf nginx-1.8.0.tar.gz
205 cd nginx-1.8.0
206 ipath=`whoami`
207 ./configure --prefix=/usr/local/nginx --add-module=/$ipath/fastdfs-nginx-module/src
208 make
209 make install
210 
211 
212 
213 
214 #在server中添加
215 #
216 #location /group1/M00{
217 #    root /usrdata/fastdfs/data;
218 #    ngx_fastdfs_module;
219 #}
220 
221 #判断文件内容是否已经写入
222 nginxconf=`sed -n /group1/p /usr/local/nginx/conf/nginx.conf`
223 
224 if [ -z $nginxconf ]
225         then
226                 sed -i "s@#error_page.*@location /group1/M00{root /usrdata/fastdfs/data;ngx_fastdfs_module;}@" /usr/local/nginx/conf/nginx.conf
227         else
228                 echo "nothing todo"
229 fi &> /dev/null
230 
231 
232 
233 
234 启动:
235 kill -9 $(ps -A | grep nginx | cut -d "?" -f 1 ) &> /dev/null
236 /usr/local/nginx/sbin/nginx
237 
238 
239 安装完成。
240 #6、测试文件上传:
241 sed -i "s#\(base_path=\).*#\1$base_path#" /etc/fdfs/client.conf
242 sed -i "s#\(tracker_server=\).*#\1$ip:$tracker_port#" /etc/fdfs/client.conf
243 cd ~
244 echo "hello world" > 1.txt
245 #/usr/bin/fdfs_test /etc/fdfs/client.conf upload 1.txt
246 result=`/usr/bin/fdfs_test /etc/fdfs/client.conf upload 1.txt |grep url | grep -v big`
247 echo "得到类似这样的 $result"
248 curl ${result:17}

 

六、成功示意图

  输出 hello world 为成功。

技术分享

一键架设FastDFS分布式文件系统脚本,基于Centos6

标签:

原文地址:http://www.cnblogs.com/zengyufei/p/5615572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!