标签:
一、使用背景
业务驱动技术需要,原来使用 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