天天看點

Tomcat pool 釋出腳本

首先這邊是乙方,項目多,系統多。新上線的項目都是腳本去做釋出,早上又趕了套腳本。

之前公司有兄弟運作了下面這套腳本未加參數,說靜态資源未發成功,tomcat 和釋出系統的agent反而給幹沒了,于是又做了點優化,加了參數判斷。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<code>$ </code><code>cat</code> <code>copy_h5_mall_new.sh </code>

<code>#!/bin/sh</code>

<code>#copy h5 mall</code>

<code>nginx_static_ip=10.10.13.37</code>

<code>time_stamp=`</code><code>date</code> <code>+</code><code>"%Y-%m-%d-%H-%M-%S"</code><code>`</code>

<code>h5_mall_zip_name=$1</code>

<code>war_md5=`md5sum ..</code><code>/static/</code><code>${h5_mall_zip_name} | </code><code>awk</code> <code>'{print $1}'</code><code>`</code>

<code>md5_file=`</code><code>cat</code> <code>..</code><code>/static/</code><code>${h5_mall_zip_name}.md5 | </code><code>awk</code> <code>'{print $1}'</code><code>`</code>

<code>if</code> <code>[ $</code><code># -ne "1" ];then</code>

<code>    </code><code>echo</code> <code>"不看腳本就運作,幹死你!"</code>

<code>else</code>

<code>    </code><code>if</code> <code>[ </code><code>"${war_md5}"</code> <code>= </code><code>"${md5_file}"</code> <code>];</code><code>then</code>

<code>        </code><code>ssh</code> <code>${nginx_static_ip} </code><code>"cp -r /data/desheng/h5_mall /data/desheng/h5_mall-${time_stamp}"</code>

<code>        </code><code>ssh</code> <code>${nginx_static_ip} </code><code>"cd /data/desheng/h5_mall &amp;&amp; /bin/rm -rf *"</code>

<code>        </code><code>scp</code> <code>..</code><code>/static/</code><code>${h5_mall_zip_name} ${nginx_static_ip}:</code><code>/data/desheng/h5_mall</code>

<code>        </code><code>ssh</code> <code>${nginx_static_ip} </code><code>"cd /data/desheng/h5_mall &amp;&amp; unzip ${h5_mall_zip_name}"</code>

<code>        </code><code>ip_list=`</code><code>cat</code> <code>..</code><code>/env</code><code>.sh | </code><code>grep</code> <code>"frontier-cms-web"</code> <code>| </code><code>cut</code> <code>-d </code><code>"="</code> <code>-f1 | </code><code>cut</code> <code>-d </code><code>"#"</code> <code>-f2 | </code><code>uniq</code><code>`</code>

<code>        </code><code>for</code> <code>ip </code><code>in</code> <code>${ip_list[*]};</code><code>do</code>

<code>            </code><code>ssh</code> <code>$ip </code><code>"cd /data/static/10 &amp;&amp; cp -r h5_mall h5_mall-${time_stamp}"</code>

<code>            </code><code>ssh</code> <code>$ip </code><code>"cd /data/static/10/h5_mall &amp;&amp; /bin/rm -rf *"</code>

<code>            </code><code>scp</code> <code>..</code><code>/static/</code><code>${h5_mall_zip_name} $ip:</code><code>/data/static/10/h5_mall/</code>

<code>            </code><code>ssh</code> <code>$ip </code><code>"cd /data/static/10/h5_mall &amp;&amp; unzip ${h5_mall_zip_name}"</code>

<code>        </code><code>done</code>

<code>    </code><code>fi</code>

<code>fi</code>

#這個腳本早上臨時做的,發現這個靜态資源還沒有腳本釋出。腳本主要對參數和運作腳本的使用者做了判斷。

<code>$ </code><code>cat</code> <code>copy_cms_static.sh </code>

<code>#!/bin/bash</code>

<code>war=$1</code>

<code>nginx_static_ip=10.10.1.28</code>

<code>temp_time=`</code><code>date</code> <code>+%Y-%m-%d-%H-%M-%S`</code>

<code>if</code> <code>[ `</code><code>whoami</code><code>` == </code><code>"ody"</code> <code>];</code><code>then</code>

<code>    </code><code>if</code> <code>[ $</code><code># -ne "1" ];then</code>

<code>        </code><code>echo</code> <code>-n </code><code>"輸入的參數不對,請重新輸入."</code>

<code>    </code><code>else</code>

<code>        </code><code>ssh</code> <code>${nginx_static_ip} </code><code>"cd /data/stgds/ &amp;&amp; cp -r cms_dev{,-${temp_time}}"</code>

<code>        </code><code>ssh</code> <code>${nginx_static_ip} </code><code>"cd /data/stgds/cms_dev/ &amp;&amp; /bin/rm -rf ./*"</code>

<code>        </code><code>scp</code> <code>..</code><code>/static/</code><code>${war} ${nginx_static_ip}:</code><code>/data/stgds/cms_dev/</code>

<code>        </code><code>ssh</code> <code>${nginx_static_ip} </code><code>"cd /data/stgds/cms_dev/ &amp;&amp; unzip ${war}"</code>

<code>    </code><code>echo</code> <code>-n </code><code>"目前使用者不是ody使用者."</code>

下面是新項目一套釋出腳本,昨天改的,運作一天還未見報錯、未見釋出失敗的。

war包釋出的腳本:

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<code># cat deploy_new.sh </code>

<code>read</code> <code>-p </code><code>"請輸入你需要釋出的Poll Name:"</code> <code>pool_name</code>

<code>if</code> <code>[ </code><code>"$pool_name"</code> <code>= </code><code>""</code> <code>];</code><code>then</code>

<code>    </code><code>echo</code> <code>"pool_name 不支援為空!"</code>

<code>    </code><code>product_ip_list=`</code><code>cat</code> <code>.</code><code>/deploy_env</code><code>.ini | </code><code>grep</code> <code>${pool_name} | </code><code>awk</code> <code>-F </code><code>'='</code> <code>'{print $2}'</code><code>`</code>

<code>    </code><code>time_stamp=`</code><code>date</code> <code>+</code><code>"%Y-%m-%d-%H-%M-%S"</code><code>`</code>

<code>    </code><code>function</code> <code>shutdown_tomcat() {</code>

<code>        </code><code>ip=$1</code>

<code>    </code><code>tomcat_port=8080</code>

<code>    </code><code>tomcat_id=`</code><code>ssh</code> <code>ody@$ip </code><code>ps</code> <code>-ef | </code><code>grep</code> <code>java | </code><code>grep</code> <code>"tomcat"</code> <code>| </code><code>grep</code> <code>-</code><code>v</code> <code>"grep"</code> <code>| </code><code>awk</code> <code>'{print $2}'</code><code>`</code>

<code>    </code><code>if</code> <code>[ ! $tomcat_id ];</code><code>then</code>

<code>        </code><code>echo</code> <code>"tomcat process in ${ip} is not exist."</code>

<code>        </code><code>echo</code> <code>"shutdown tomcat in ${ip}"</code>

<code>        </code><code>ssh</code> <code>ody@$ip </code><code>"/bin/kill -9 $tomcat_id"</code>

<code>            </code><code>if</code> <code>[ $? == 0 ];</code><code>then</code>

<code>                </code><code>echo</code> <code>"shutdown ody@$ip tomcat process is success."</code>

<code>            </code><code>else</code>

<code>                </code><code>echo</code> <code>"shutdown ody@$ip tomcat process is false."</code>

<code>                </code><code>exit</code> <code>2</code>

<code>            </code><code>fi</code>

<code>    </code><code>}</code>

<code>    </code><code>function</code> <code>start_tomcat() {</code>

<code>    </code><code>ip=$1</code>

<code>    </code><code>echo</code> <code>"start tomcat in ${ip}."</code>

<code>    </code><code>ssh</code> <code>ody@$ip </code><code>"JAVA_HOME=/usr/local/java/jdk1.7.0_80;export JAVA_HOME;/bin/sh /data/tomcat/bin/startup.sh"</code>

<code>    </code><code>ssh</code> <code>ody@$ip </code><code>"/usr/local/java/jdk1.7.0_80/bin/jps"</code>

<code>    </code><code>if</code> <code>[ `</code><code>whoami</code><code>` == </code><code>"ody"</code> <code>];</code><code>then</code>

<code>          </code><code>ssh</code> <code>10.18.3.200 </code><code>"cd /data/war &amp;&amp; md5sum -c ${pool_name}.war.md5"</code>

<code>          </code><code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ];</code><code>then</code>

<code>            </code><code>pool_ip_list=`</code><code>awk</code> <code>'BEGIN{list="'</code><code>${product_ip_list}</code><code>'";split(list,ip_list,",");for(ip in ip_list){print ip_list[ip];}}'</code><code>`</code>

<code>            </code><code>for</code> <code>deploy_ip </code><code>in</code> <code>${pool_ip_list[*]};</code><code>do</code>

<code>                </code><code>shutdown_tomcat ${deploy_ip}</code>

<code>                   </code><code>ssh</code> <code>${deploy_ip} </code><code>"cd /data/tomcat/webapps &amp;&amp; mv ${pool_name}.war ${pool_name}.war-${time_stamp}"</code>

<code>                     </code><code>ssh</code> <code>${deploy_ip} </code><code>"cd /data/tomcat/webapps &amp;&amp; rm -rf ${pool_name}"</code>

<code>                     </code><code>scp</code> <code>10.18.3.200:</code><code>/data/war/</code><code>${pool_name}.war </code><code>/data/war/</code>

<code>                     </code><code>scp</code> <code>/data/war/</code><code>${pool_name}.war ${deploy_ip}:</code><code>/data/tomcat/webapps</code>

<code>                     </code><code>start_tomcat ${deploy_ip}</code>

<code>                    </code><code>done</code>

<code>             </code><code>else</code>

<code>                        </code><code>echo</code> <code>"md5 check false."</code>

<code>                        </code><code>exit</code> <code>2</code>

<code>        </code><code>echo</code> <code>"please use ody user to exec this shell."</code>

腳本中的deploy_env.ini檔案,是war和ip對應的關系:

大緻是下面的樣子:

<code># cat deploy_env.ini </code>

<code>ad-whale=10.18.1.1,10.18.1.64</code>

<code>ad-whale-web=10.18.1.2</code>

本文轉自青衫解衣 51CTO部落格,原文連結:http://blog.51cto.com/215687833/1905065