一鍵架設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的機器,請酌量。

  腳本要改的變量都在腳本前面了,看着改。

 

五、代碼

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

 

 

六、成功示意圖

  輸出 hello world 為成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM