deploy.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/bash
  2. # 修改APP_NAME为云效上的应用名
  3. APP_NAME=manatee
  4. PROG_NAME=$0
  5. ACTION=$1
  6. APP_START_TIMEOUT=20 # 等待应用启动的时间
  7. APP_PORT=8080 # 应用端口
  8. HEALTH_CHECK_URL=http://127.0.0.1:${APP_PORT} # 应用健康检查URL
  9. APP_HOME=/home/admin/${APP_NAME} # 从package.tgz中解压出来的jar包放到这个目录下
  10. JAR_NAME=${APP_HOME}/target/manatee-1.0.jar # jar包的名字
  11. JAVA_OUT=${APP_HOME}/logs/start.log #应用的启动日志
  12. # 创建出相关目录
  13. mkdir -p ${APP_HOME}
  14. mkdir -p ${APP_HOME}/logs
  15. usage() {
  16. echo "Usage: $PROG_NAME {start|stop|restart}"
  17. exit 2
  18. }
  19. #health_check() {
  20. # exptime=0
  21. # echo "checking ${HEALTH_CHECK_URL}"
  22. # while true
  23. # do
  24. # status_code=`/usr/bin/curl -L -o /dev/null --connect-timeout 5 -s -w %{http_code} ${HEALTH_CHECK_URL}`
  25. # if [ "$?" != "0" ]; then
  26. # echo -n -e "\rapplication not started"
  27. # else
  28. # echo "code is $status_code"
  29. # if [ "$status_code" == "200" ];then
  30. # break
  31. # fi
  32. # fi
  33. # sleep 1
  34. # ((exptime++))
  35. #
  36. # echo -e "\rWait app to pass health check: $exptime..."
  37. #
  38. # if [ $exptime -gt ${APP_START_TIMEOUT} ]; then
  39. # echo 'app start failed'
  40. # exit 1
  41. # fi
  42. # done
  43. # echo "check ${HEALTH_CHECK_URL} success"
  44. #}
  45. start_application() {
  46. echo "starting java process"
  47. nohup java -jar ${JAR_NAME} > ${JAVA_OUT} 2>&1 &
  48. echo "started java process"
  49. }
  50. stop_application() {
  51. checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`
  52. if [[ ! $checkjavapid ]];then
  53. echo -e "\rno java process"
  54. return
  55. fi
  56. echo "stop java process"
  57. times=60
  58. for e in $(seq 60)
  59. do
  60. sleep 1
  61. COSTTIME=$(($times - $e ))
  62. checkjavapid=`ps -ef | grep java | grep ${APP_NAME} | grep -v grep |grep -v 'deploy.sh'| awk '{print$2}'`
  63. if [[ $checkjavapid ]];then
  64. kill -9 $checkjavapid
  65. echo -e "\r -- stopping java lasts `expr $COSTTIME` seconds."
  66. else
  67. echo -e "\rjava process has exited"
  68. break;
  69. fi
  70. done
  71. echo ""
  72. }
  73. start() {
  74. start_application
  75. # health_check
  76. }
  77. stop() {
  78. stop_application
  79. }
  80. case "$ACTION" in
  81. start)
  82. start
  83. ;;
  84. stop)
  85. stop
  86. ;;
  87. restart)
  88. stop
  89. start
  90. ;;
  91. *)
  92. usage
  93. ;;
  94. esac