새벽코딩

[Shell] war 배포 및 서버 재기동 sh 본문

생각정리

[Shell] war 배포 및 서버 재기동 sh

J 코딩 2024. 7. 24. 17:57
반응형

Jeus서버에 개발서버를 구축하고 소스배포를 위한 shell script 작성이 필요했다. 관리자 서버, 사용자 서버별 각각 배포 파이프라인을 만들고 서버를 재기동 할 수 있는 스크립트까지 만들어보는게 이번 포스팅의 목적이다. 

 

1. 소스 배포 스크립트

#!/bin/bash

#init
deploy_dir="/app/service/was/service.war/WEB-INF"
source_dir="/app/local/dev/war"
backup_dir="$source_dir/backup"
timestamp=$(date +"%Y%m%d%H%M%S")

#check backup directory
if [ ! -d "$backup_dir" ]; then
	mkdir -p "$backup_dir"
    echo "create backup directory: $backup_dir"
fi

#copy backup directory
cp -r "$deploy_dir/classes" "$backup_dir"
mv "$backup_dir/classes" "$backup_dir/classes_$timestamp"

#check backup
if [ $? -eq 0 ]; then
	echo "backup complete: $deploy_dir/classes -> $backup_dir"
    
    cd "$source_dir"
    jar xvf service.war
    cd "$source_dir/WEB-INF"
    
    rm -rf "$deploy_dir/classes"
    cp -r ./classes "$deploy_dir"
 fi

 

2. 서버 종료 및 재기동

#!/bin/bash

#init
ip="10.123.111.5"
port=3000

MAX_CNT=10
SLEEP_INTERVAL=0.5

shutdown server

for ((i=1; i<=MAX_CNT; i++)); do
	echo "[$(date)] Shutdown Test $i/$MAX_CNT: $port PORT"
    
    if nc -z -w 1 $ip $port >/dev/null 2>&1; then
    	current_status="open"
    else
    	current_status="closed"
    fi
    
    echo "Current Status: $current_status"
    
    if [[ "$current_status" == "closed" ]]; then
    	echo "[$(date)] The $port is closed"
        reboot server
        break
    fi
    sleep $SLEEP_INTERVAL
done
echo "$port: The port check is completed.."

 

3. 두 스크립트를 묶을 shell script

#!/bin/bash

GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NONE='\033[0m'

print_status() {
	echo -e "${1}${2}${NONE}"
}

print_divider() {
	echo -e "${YELLOW}======================================================${NONE}"
}

print_divider
print_status "$YELLOW" "Deploy Script is starting..."
print_divider

./deploy.sh

print_status "$GREEN" "Service Wait 3Sec..."
sleep 3

print_divider
print_status "$YELLOW" "Service Shutdown and Reboot..."
print_divider

./server_reboot.sh

print_status "$GREEN" "All Process is Completed..!"

 

이로서 개발 소스 서버 배포 및 서버 종료 재기동 스크립트를 구성해보았습니다.

감사합니다.

반응형
Comments