본문 바로가기
Server

[Shell Script][쉘스크립트] war 배포하는 쉘스크립트 처음 작성해보기

by 오늘의개발부 2019. 12. 11.
반응형

스프링 레거시 기반 프로젝트를 war로 묶어서 테스트 서버에 배포하고 있습니다. 배포 방식은 단순무식하게 파일질라로 war를 업로드해 압축을 풀어주는 방식입니다.
하루에도 몇 번씩 똑같은 작업을 반복하며 이런 무식한 배포 방식이 왜 나쁜지 알아가던 중... 그래도 Shell Script를 써서 단순 작업은 조금이나마 줄여보고자 Shell Script를 처음 찾아보게 되었습니다. Shell Script의 활용은 무궁무진하겠으나, 처음 접해보시는 분들이 실습해보기에 아래 정도 수준의 스크립트면 괜찮을 거 같습니다.

먼저 vi 명령어로 test_deploy라는 파일을 만들어줍니다.

vi test_deploy

insert를 누르면 작성할 수 있습니다.

// 다음과 같이 쉘 스크립트문이라고 선언해줍니다.
#!/bin/sh

// 파일질라로 test.war를 업로드해줄 경로에 test.war가 존재하는지 확인합니다.
// if문에서 괄호 앞뒤 등 각종 띄어쓰기에 주의해야합니다.
if [ -f /home/project/test.war ]; then
        // 파일이 존재한다면 echo를 이용해 다음 문구를 출력해줍니다. sysout 같은 거라고 이해했습니다.
        echo "Start Deploy"
else
        // 파일이 없으면 파일을 올리라고 알려줍니다.
        echo "You must upload admin.war at /home/onemall/ "
        // 파일이 없으면 exit로 쉘스크립트를 종료합니다.
        //exit 뒤의 숫자는 쉘 스크립트가 종료된 후 출력해줄 데이터입니다. 0~255까지 가능하고 보통 0은 성공, 나머지는 에러코드로 이용한다고 합니다.
        exit 1
fi // if문을 종료시킵니다.


// 톰캣이 현재 구동 중인지 확인하기 위해 tc_cnt 변수에 구동 중인 톰캣의 수를 담아줍니다.
#tc_cnt='ps -ef|grep tomcat|grep -v grep|grep -v vi|wc -l'
// $뒤에 변수 이름을 사용해서 변수를 불러올 수 있습니다. 
#if [ $tc_cnt -gt 0 ]; then
        // 구동 중인 톰캣이 있으면 꺼줍니다. tc_shutdown.sh는 제가 지정한 명령입니다.
        tc_shutdown.sh
        echo "Tomcat Server Shutdown"
#else
#       echo "Tomcat not Running"
#fi
// 이 부분은 주석을 해제하고 돌려보지 않아서 제대로 동작하는지 모르겠습니다.

// 기존의 test 프로젝트가 배포되어 있는 폴더를 삭제해줍니다. -rf로 폴더 이하의 모든 파일을 삭제합니다.
rm -rf /home/project/htdocs/test/
echo "remove origin test"

// 지금까지 root 권한으로 진행했고 test 프로젝트를 담당할 유저인 test로 폴더를 만들어주겠습니다.
// su [계정] -c "명령"
// 한 번에 여러 개의 명렁을 내릴 땐 "명령; 명령"처럼 세미콜론으로 구분해줍니다.
su test -c "mkdir /home/project/htdocs/test"
echo "Make admin folder"


// 해당 파일이 경로에 존재하는지 한번 더 확인했습니다. 굳이 할 필요는 없을 것 같긴 합니다.
if [ -f /home/project/test.war ]; then
        // war파일을 tomcat이 바라보는 경로로 옮겨줬습니다.
        su test -c "mv /home/project/test.war /home/project/htdocs/test"
        // server.xml에서 자동 압축 해제 옵션을 false로 해놔서 수동으로 풀어줬습니다. 
        su test -c "unzip /home/project/htdocs/test/test.war -d /home/project/htdocs/test"
        echo "unzip test.war"

        //톰캣 구동 권한을 가진 root로 톰캣을 구동시켜줬습니다.
        tc_startup.sh
        echo "Tomcat Server Start"
else
        echo "file not exist"
fi

작성이 끝나면 esc를 누르고 :wq를 입력해서 작성 후 종료 명령을 내립니다.

쉘스크립트 실행은 source test_deploy.sh 로 합니다.

처음 짜본 Shell Script였습니다. 좀 더 깊고 다양하게 알 게 되면 많이 활용할 수 있을 것 같네용.

반응형