每次更新项目,都有好多重复单调的工作需要做,其实可以用脚本解决。
今天写了一段shell脚本,功能有两个:
1.机器不重启
1)停掉所有tomcat
2)删除所有自解压项目
3)重启base开头的项目
4)停止base开头的项目
5)替换base开头的项目的自解压项目配置文件
6)重启所有tomcat
2.机器重启
1)启动zookeeper
2) 启动dubbo控制台
3)启动activeMq
4) 启动iBackStage后台项目
5)所有tomcat启动
以下是代码,以供参考
package com.sdzn.util;
import java.util.ArrayList;
import java.util.List;
/**
* Test 功能描述:用于生成项目在4号机的运维Shell代码
*
* @author RickyLee【lsr@sdzn.com.cn】
* @date 2017/4/8 16:19
*/
public class Test {
public static void main(String[] args) {
List<String> list = getProjectList();
creatRebootSh(list, "/Users/lishirong/sdznreboot");
createUpdateSH(list, "/Users/lishirong/sdznrestart");
}
/**
* 当阿里云服务器重启以后,根据此脚本来分别启动zookeeper、dubbo控制台、未来课堂后台、直播相关基础、业务、WEB服务
*
* @param list dubbo项目总计
* @param filePath 生成的脚本存储路径
*/
private static void creatRebootSh(List<String> list, String filePath) {
try {
List<String> dataList = new ArrayList<String>();
int pTotal=4+list.size();
dataList.add("#! /bin/bash");
dataList.add("echo \"-----------启动zookeeper..........\"");
dataList.add("sleep 5s");
dataList.add("/usr/local/zookeeper-3.4.8/bin/zkServer.sh start");
dataList.add("sleep 5s");
dataList.add("echo \"########################zookeeper完毕!【1/"+pTotal+"】########################\"");
dataList.add("echo \"-----------启动dubbo控制台.......\"");
dataList.add("/usr/local/dubbo_admin/apache-tomcat-6.0.35/bin/startup.sh");
dataList.add("sleep 5s");
dataList.add("echo \"########################dubbo控制台启动完毕!【2/"+pTotal+"】########################\"");
dataList.add("echo \"-----------启动iBackStage项目....\"");
dataList.add("/usr/local/iBackStage/bin/startup.sh");
dataList.add("sleep 10s");
dataList.add("echo \"########################iBackStage启动完毕!【3/"+pTotal+"】########################\"");
dataList.add("echo \"-----------启动activeMq....\"");
dataList.add("/usr/local/apache-activemq-5.9.1/bin/activemq start");
dataList.add("sleep 10s");
dataList.add("echo \"########################activeMq启动完毕!【4/"+pTotal+"】########################\"");
int count=4;
for (String vv : list) {
count++;
String[] v=vv.split("#");
dataList.add("echo \"-----------启动"+v[0]+"项目....\"");
dataList.add("/usr/local/dubbo_live/"+v[0]+"/bin/startup.sh");
dataList.add("sleep 10s");
dataList.add("echo \"########################"+v[0]+"启动完毕!【"+count+"/"+pTotal+"】########################\"");
}
dataList.add("echo \"----------本次更新已结束["+DateUtil.getNowTime()+"]-------------\"");
FileUtil.writeFile(filePath, dataList, false);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void createUpdateSH(List<String> list, String filePath) {
try {
List<String> dataList = new ArrayList<String>();
dataList.add("#! /bin/bash");
dataList.add("echo \"-----------第一步:停止所有tomcat..........\"");
for (String vv : list) {
String[] v=vv.split("#");
dataList.add("/usr/local/dubbo_live/"+v[0]+"/bin/shutdown.sh");
dataList.add("sleep 5s");
dataList.add("echo \"########################"+v[0]+"已停止!########################\"");
}
dataList.add("echo \"-----------第二步:删除所有tomcat自解压文件..........\"");
for (String vv : list) {
String[] v=vv.split("#");
dataList.add("rm -rf /usr/local/dubbo_live/" + v[0] + "/webapps/" + v[1]);
dataList.add("echo \"########################/usr/local/dubbo_live/" + v[0] + "/webapps/" + v[1] + "删除成功!########################\"");
}
dataList.add("echo \"-----------第三步:启动base_tomcat..........\"");
for (String vv : list) {
String[] v=vv.split("#");
if(v[0].startsWith("base_")) {
dataList.add("/usr/local/dubbo_live/"+v[0]+"/bin/startup.sh");
dataList.add("sleep 5s");
dataList.add("echo \"########################" + v[0] + "已启动!########################\"");
}
}
dataList.add("echo \"-----------第四步:停止base_tomcat..........\"");
for (String vv : list) {
String[] v=vv.split("#");
if(v[0].startsWith("base_")) {
dataList.add("/usr/local/dubbo_live/"+v[0]+"/bin/shutdown.sh");
dataList.add("sleep 3s");
dataList.add("echo \"########################" + v[0] + "已停止!########################\"");
}
}
dataList.add("echo \"-----------第五步:停止base_tomcat..........\"");
for (String vv : list) {
String[] v=vv.split("#");
if(v[0].startsWith("base_")) {
dataList.add("rm -rf /usr/local/dubbo_live/" + v[0] + "/webapps/" + v[1] + "/WEB-INF/classes/application.properties");
dataList.add("cp /usr/local/live_config/" + v[0] + "/webapps/" + v[1] + "/WEB-INF/classes/application.properties /usr/local/dubbo_live/" + v[0] + "/webapps/" + v[1] + "/WEB-INF/classes/application.properties");
dataList.add("echo \"########################" + v[0] + "配置替换结束!########################\"");
}
}
dataList.add("echo \"-----------第六步:重启所有tomcat..........\"");
for (String vv : list) {
String[] v=vv.split("#");
dataList.add("/usr/local/dubbo_live/"+v[0]+"/bin/startup.sh");
dataList.add("sleep 10s");
dataList.add("echo \"########################"+v[0]+"已启动!########################\"");
}
dataList.add("echo \"----------本次更新已结束["+DateUtil.getNowTime()+"]-------------\"");
FileUtil.writeFile(filePath, dataList, false);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取项目列表
* @return
*/
public static List<String> getProjectList() {
List<String> list = new ArrayList<String>();
list.add("base_backstage#live_base_service_backstage");
list.add("base_base#live_base_service_base");
list.add("base_LiveStreaming#live_base_service_LiveStreaming");
list.add("base_payment#live_base_service_payment");
list.add("base_statistics#live_base_service_statistic");
list.add("base_support#live_base_service_support");
list.add("base_user#live_base_service_user");
list.add("backup_plantasks#ROOT");
list.add("biz_backstage#live_biz_service_backstage");
list.add("biz_base#live_biz_service_base");
list.add("biz_LiveStreaming#live_biz_service_LiveStreaming");
list.add("biz_mobile#live_biz_service_mobile");
list.add("biz_payment#live_biz_service_payment");
list.add("biz_statistics#live_biz_service_statistics");
list.add("biz_support#live_biz_service_support");
list.add("biz_user#live_biz_service_user");
list.add("mq#ROOT");
list.add("web#ROOT");
list.add("web_api#ROOT");
list.add("web_backstage#ROOT");
list.add("web_mobile#ROOT");
list.add("web_pass#ROOT");
list.add("web_school#ROOT");
return list;
}
}