0. 개요
이번에도 역시 저번 포스팅에 이어서, 프로젝트를 배포하는데 고려해야할 문제들에 대해서 조금씩 고쳐보는 시간을 가져보고자 합니다.
추가적인 고려했던 문제입니다.
- 현재 우분투의 시간설정이 US로 되어 있어서 +9시간이 된 채로 로그들이 남는다. 변경해야 한다.
- 일일히 배포를 하거나, PID를 알아내서 배포를 종료하는 작업을 스크립트로 해결하도록 하는 것이 좋다.
1. 타임존 변경
timedatectl
timedatectl list-timezones | grep Seoul
sudo timedatectl set-timezone Asia/Seoul
timedatectl이라는 명령어로 타임존을 변경할 수 있습니다. timedatectl을 옵션없이 실행하면 현재의 타임존을 알 수 있는데 UTC로 잡혀있습니다. 이를 대한민국으로 바꾸어 주어야합니다.
timedatectl list-timezones로 사용할 수 있는 타임존을 검색할 수 있는데 전세계에 서비스 중이다 보니 엄청많이 나올겁니다. Seoul을 옵션으로 검색하도록 합니다. 이를통해 Asia/Seoul로 타임존을 변경해주도록 합니다.
2. 스크립트 작성
프로젝트 프로세스를 키거나 꺼야하는 상황이 있을겁니다. 이전까지는 java -jar로 실행하고, 끌 때는 PID를 찾아서 확인하고 해당 PID를 kill해주었습니다. 이러한 불필요한 과정은 해야하는 일을 증가시킵니다. 이를 위해서 스크립트 파일을 작성해서 명령어들을 자동으로 실행해주는 것이 좋습니다.
ps -ef | grep *.jar | grep -v grep | awk '{print $2}'
이전에는 실행중인 프로세스를 확인하기 위해 "ps-ef" 라는 명령어를 사용했습니다. 여기서 우리가 실행하는 프로젝트의 PID만을 뽑아오기 위해서 위의 조건을 달아줍니다.
jar파일이어야 하고, 현재 ps-ef로 검색하는 것도 프로세스에 남으니 현재 프로세스는 빼고 가져오도록 하고, 두번째 칸에 있는 정보만 가져오도록 합니다. 그러면 위처럼 현재 실행중인 jar파일의 프로세스 PID를 가져올 수 있습니다.
pgrep -f *.jar
하지만 위처럼 많은 옵션을 달지않아도, pgrep이라는 명령어로 쉽게 실행중인 jar파일 프로세스의 PID를 가져올 수 있습니다.
vi spring-stop.sh
echo "Springboot Stop....."
SPRING_PID=$(pgrep -f *.jar)
echo $SPRING_PID
kill -9 $SPRING_PID
이제 이를 활용해 스크립트를 짜줍니다. spring-stop이라는 sh파일을 만들어줍니다.
SPRING_PID에는 pgrep으로 가져온 PID값을 넣어줍니다. (&로 감싸줘야 명령어로 인식합니다.) 이후 해당 PID를 kill 해주도록 합니다. 중간중간에 echo로 현재 실행중인 작업을 터미널로 인식할 수 있도록 합니다.
chmod u+x spring-stop.sh
./spring-stop.sh
이제 해당 스크립트 파일을 실행가능하도록 실행권한을 주고 현재 폴더에서 실행해 주도록 합니다. "./" 옵션을 줘서 현재 폴더에서 실행해도록 해야합니다. 안그러면 환경변수에서 설정된 파일을 실행할겁니다. 위처럼 정상적으로 현재 실행중인 프로젝트의 프로세스를 정상적으로 멈추게 해주었습니다.
'Project > AWS 및 배포' 카테고리의 다른 글
AWS - AWS 꼭 확인하자! 요금폭탄 피하기 (0) | 2024.02.03 |
---|---|
AWS - 3-3. 베이직 하게 배포해보기 - cron으로 주기적 실행 (0) | 2024.01.31 |
AWS - 3-1. 베이직 하게 배포해보기 - 백그라운드 실행, 로그파일 분리 (0) | 2024.01.31 |
AWS - 3. 베이직 하게 배포해보기 - EC2 서버에 프로젝트 배포하기 (1) | 2024.01.31 |
AWS - 2. 키페어와 RSA (0) | 2024.01.30 |