본문 바로가기

개발/BACK

[Ubuntu] Linux 에서 톰캣 재시작 스크립트 작성하기

728x90

[서버 관련 포스팅 글]

 

https://hdhdeveloper.tistory.com/104

 

[Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기

sudo vi /etc/fail2ban/jail.conf​ 각설 이번에 보안의 중요성에 대해 실전에서 배웠다 클라우드 서버를 운영하면서 소위 무작위 대입 공격이라고 불리는 Brute Force 공격으로 인해 root 계정이나 서버에

hdhdeveloper.tistory.com

 

https://hdhdeveloper.tistory.com/100

 

Linux Ubuntu 톰캣 서버 구축 [1]

Ubuntu 는 Linux 커널에서 사용하는 OS다 이번 포스팅에서는 Ubuntu 운영체제에서 Tomcat (WAS) 만을 이용한 서버를 구축하려고 한다 이를 위해서 먼저, 톰캣 설치 파일이 필요하다 1 톰캣 다운 및 설치 htt

hdhdeveloper.tistory.com

 

https://hdhdeveloper.tistory.com/99

 

ssh 원격 접속하기 (ssh key 설정 포함)

외부에서 서버에 접속해서 제어하는 방법은 여러가지가 있다 그 중 Mac에서 터미널을 이용해 원격 접속하는 방법을 포스팅하려고 한다 SSH 시큐어 셸(Secure SHell, SSH)은 네트워크 상의 다른 컴퓨터

hdhdeveloper.tistory.com


 

 

 

이번 포스팅에서는

리눅스 서버 환경에서 톰캣 (WAS) 을 구동하고 있을 때, 

실행 여부와 상관없이 톰캣을 재구동할 수 있는 스크립트 예제를 작성해보려 한다

 

 

 


먼저 SSH (Secure Shell)로 서버에 접속하자

 

접속 후에, 예제를 진행하기 위한 스크립트파일을 하나 생성하면 된다

 

아래 명령어를 통해 스크립트 파일을 생성한다

vi tomcatLoader.sh

 

파일을 생성했으면 먼저 변수를 선언해주자 

 

dirName = 톰캣 디렉토리 경로

nowDate = 현재 시간 (로그 용)

1
2
3
4
5
6
7
8
#!/bin/sh
 
#tomcat connection off & on
 
 
dirName='/tomcat/bin'
 
nowDate=$(date+"%Y-%m-%d %H:%M:%S")
cs

 


 

서버를 리로드하기 위해 톰캣을 종료하고, 

 

해당 톰캣이 물고있었던 PID를 풀어줘야 한다

 

톰캣이 종료되면서, PID를 계속 놓아주지 않는 경우가 있어서, 필요한 작업이다

 

아래처럼 작성하자

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/sh
 
#tomcat connection off & on
 
 
 
dirName='/tomcat/bin'
 
nowDate=$(date+"%Y-%m-%d %H:%M:%S")
 
 
 
echo "${nowDate} tomcat Reload Start"
 
#톰캣 종료 스크립트 실행
$dirName/shutdown.sh
 
 
# 5초 슬립
sleep 5
 
 
echo "${nowDate} tomcat is now terminated"
 
if [ -"`ps -eaf|grep java|grep /tomcat/bin`"]; then
 
        echo "${nowDate} Tomcat was not started"
 
else
 
        ps -eaf|grep java|grep /tomcat/bin |awk '{print $2}'|
 
        while read PID
 
        do
 
                echo "${nowDate} Killing $PID"
 
                kill -9 $PID
 
                echo "${nowDate} Tomcat is being shutdowned"
 
        done
 
fi
cs

 

톰캣이 실행되어있는 상태에서는 [while] 문을 열어서 PID 를 kill 해주는 구문이다

 

톰캣이 붙잡고 있는 PID를 kill 해주지 않으면, 톰캣을 실행하면서 서버 오류를 내뱉을 것이다.

(Already In Use... 어쩌구 하는 오류)

 

여기까지 진행했으면, 정상적으로 톰캣을 셧다운 했다

 

이제 다시 톰캣을 실행 시키는 구문이 필요하다

 


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$dirName/startup.sh
 
 
 
sleep 10
 
  
 
if [-z"`ps -eaf|grep java|grep /tomcat/bin`" ];then
 
echo "${nowDate} Error!!! Cannot start tomcat server."
 
else
 
echo "${nowDate} Tomcat restart succcessfully. "
 
fi
cs

 

위 if 종결문 부터 바로 이어서 보면 된다

 

startup 스크립트를 실행시켜서 톰캣을 실행한다

 

10초를 sleep 시켜준 후, 다시 톰캣을 확인하고, 정상적으로 올라왔으면, successfully 구문이 나올 것이다

 

여기까지 작성을 완료했으면,

 

:wq!

를 입력해서 저장 후, 스크립트를 빠져나오면 된다

 

이제 생성한 스크립트를 테스트해보자

[./tomcatLoader.sh]

 

내가 스크립트를 생성한 경로에서 위 구문을 입력하면, 스크립트가 실행되는데 

 

톰캣이 정상적으로 리로드 되는지 확인하면 완료다 !

 


 

여기서 생성한 스크립트를 서버에서 자동으로 실행시키고 싶으면, 

 

리눅스 작업 스케쥴러인 CronTab 을 이용하면 된다

 

CronTab 사용방법

 

해당 명령어를 입력해서 쉘 스크립트파일을 열어보자

 

vi /etc/crontab

 

 

해당 파일로 들어가보면

 

[* * * * * root /test/test] 이런 식으로 적혀있는 문구들이 보일 것이다

 

cron을 사용해봤으면 이해할 수 있는데,

사용 방법은 아래 이미지에 나와있다 

 

 

내가 생각해서 만들기 정 귀찮으면, 아래 사이트처럼 cron식으로 생성해주는 사이트가 존재한다

 

https://crontab.guru/

 

Crontab.guru - The cron schedule expression editor

 

crontab.guru

여기서 원하는 cron식으로 생성해서 동일하게 입력해주고 저장 후 나오면

 

저장 시점부터 내가 지정한 시간에 주기적으로 실행될 것이다

 

 

728x90