自动化部署脚本
说明:这个脚本主要是我部署java项目时:解压war包、停止服务、启动服务、查看日志、日志分割等常用命令,给他写成shell脚本了。
使用方法:
一般服务器都自带bash,该shell脚本通过bash执行。所以只需要把该脚本拉入到服务器,给脚本执行权限:
执行,输入需要的数字即可:
脚本代码内容如下:
#!/bin/bash# 定义颜色代码变量
RED='\033[1;31m' # 红色-用于强调操作提示
GREEN='\033[1;32m' # 绿色-用于成功提示
BLUE='\033[1;34m' # 蓝色-用于菜单标题
CYAN='\033[1;36m' # 青色-用于步骤说明
NC='\033[0m' # 重置颜色# 全局变量定义
TW_HOME="/home/hcf/TongWeb7.0" # TongWeb主目录
APP_HOME="/home/hcf/APP" # 应用部署目录
LOG_FILE="${TW_HOME}/logs/server.log" # 日志文件路径# 显示彩色标题函数
show_header() {clearecho -e "${BLUE}#***************XX项目的TongWeb 服务管理脚本 (端口:9060) ***************#${NC}"
}# 显示菜单函数
show_menu() {echo -e "${CYAN}"echo "0. 检查TongWeb状态"echo "1. 启动TongWeb服务"echo "2. 停止TongWeb服务"echo "3. 重启TongWeb服务"echo "4. 查看实时日志"echo "44. 查看最近1000条日志"echo "5. 编辑配置文件"echo "6. 日志文件分割"echo "7. 进入APP目录"echo "8. 删除hcf应用"echo "9. 解压hcf.war包"echo -e "${NC}"echo -e "${GREEN}请输入操作编号: ${NC}\c"
}# 获取TongWeb进程ID
get_pid() {ps -ef | grep tongweb | grep "${TW_HOME}" | grep -v auto | awk '{print $2}'
}# 主程序开始
show_header
show_menuread choice #执行脚本后,输入的值
pid=$(get_pid) # 获取当前启动的tongweb进程ID
timestamp=$(date +%Y%m%d%H%M) # 时间戳用于日志分割case $choice in0) # 检查服务状态if [ -n "$pid" ]; thenecho -e "${GREEN}✔ TongWeb正在运行 (PID: $pid)${NC}"elseecho -e "${RED}✖ TongWeb未运行${NC}"fi;;1) # 启动服务echo -e "${CYAN}▶ 正在启动TongWeb...${NC}"cd "${TW_HOME}/bin" || exit 1./startservernohup.shecho -e "${GREEN}✔ 已启动,开始跟踪日志...${NC}"tail -f "$LOG_FILE";;2) # 停止服务echo -e "${CYAN}■ 正在停止TongWeb...${NC}"if [ -n "$pid" ]; then"${TW_HOME}/bin/stopserver.sh"echo -e "${GREEN}✔ 已发送停止指令${NC}"elseecho -e "${RED}✖ 服务未运行,无需停止${NC}"fi;;3) # 重启服务echo -e "${CYAN}↻ 正在重启TongWeb...${NC}"[ -n "$pid" ] && kill -9 "$pid"cd "${TW_HOME}/bin" || exit 1./startservernohup.sh;;4) # 实时日志echo -e "${CYAN}📜 进入实时日志模式 (Ctrl+C退出)...${NC}"tail -f "$LOG_FILE";;44) # 查看最近日志tail -n 1000 "$LOG_FILE"echo -e "${CYAN}📄 最近1000条日志内容如上:${NC}";;5) # 编辑配置vi "${APP_HOME}/hcf/WEB-INF/classes/application-prod.yml";;6) # 日志分割echo -e "${CYAN}✂ 正在分割日志...${NC}"cp "$LOG_FILE" "${TW_HOME}/logs/server_${timestamp}.log"> "$LOG_FILE"echo -e "${GREEN}✔ 日志已归档并清空当前日志${NC}";;7) # 进入APP目录cd "$APP_HOME" || exit 1echo -e "${GREEN}✔ 已进入应用目录: $(pwd)${NC}";;8) # 删除应用rm -rf "${APP_HOME}/hcf" "${APP_HOME}/hcf.war"echo -e "${GREEN}✔ 已删除hcf应用文件${NC}";;9) # 解压war包cd "$APP_HOME" || exit 1unzip -d hcf hcf.warecho -e "${GREEN}✔ 解压完成,文件保存在hcf目录${NC}";;*)echo -e "${RED}⚠ 无效的输入,请重新运行脚本选择有效编号${NC}";;
esac