aws ec2 환경에서 서버를 배포할 때는 백그라운드 실행을 통해 터미널을 종료해도 서버가 꺼지지 않도록 해야 한다.
터미널을 통해 ubuntu에 접속하고 스프링 애플리케이션을 백그라운드로 실행하는 방법을 알아보자.
EC2 ubuntu 서버 접속
AWS EC2에서 발급받은 private key파일(.pem)이 필요하다.
pem 파일 권한 변경
(최초 1회) pem파일이 저장되어 있는 경로로 이동 -> 파일 권한 변경
chmod 400 [개인키].pem
ssh 접속
pem 파일이 저장되어 있는 경로로 이동해서
ssh -i "[개인키].pem" ubuntu@[각자 EC2 호스트 이름]
'ubuntu@' 뒤에는 각자의 EC2 ip번호나 도메인을 적으면 접속할 수 있다.
Background Server 실행
ubuntu 내에 스프링 프로젝트가 있다면 해당 경로로 이동하고,
없다면 git clone, git pull 등을 사용해서 ubuntu 내에 실행하고자 하는 프로젝트를 생성해야 한다.
프로젝트 빌드
(gradle 프로젝트 기준)
우선 안전한 빌드를 위해 빌드 클린을 한다.
./gradlew clean
프로젝트 빌드
./gradlew build
애플리케이션 실행
포어그라운드
우선 포어그라운드로 실행하는 법을 알아보자. 평소 터미널에서 실행할 때와 동일하다.
java -jar build/libs/[프로젝트 이름]-0.0.1-SNAPSHOT.jar
백그라운드
터미널을 꺼도 애플리케이션이 돌아가게 하고 싶을 때
nohup java -jar build/libs/[프로젝트 이름]-0.0.1-SNAPSHOT.jar &
- nohup은 터미널을 꺼도 애플리케이션이 꺼지지 않도록 하는 명령어
- &는 애플리케이션이 백그라운드에서 돌아갈 수 있도록 하는 명령어
실행시 "nohup: ignoring input and appending output to 'nohup.out'" 메시지가 생기면 실행 성공이다.
백그라운드 로그를 보고 싶은 경우
tail -f nohup.out
nohup.out은 nohup으로 실행한 애플리케이션의 로그를 볼 수 있는 파일이다.
종료하고 싶은 경우 control + c하면 애플리케이션 종료 없이, 로그 보기만 종료할 수 있다.
백그라운드 실행 종료
백그라운드 실행을 종료할 때는 실행 중인 포트에서 동작하고 있는 프로세스 id를 파악해서 종료시켜야 한다.
8080 포트의 프로세스 id 확인
sudo lsof -t -i:8080
프로세스 종료
kill -9 [프로세스 id]
'aws' 카테고리의 다른 글
[Ubuntu] Ubuntu에서 rc.local 없을 때, 생성하는 방법 (0) | 2022.01.09 |
---|---|
[EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제 (2) | 2022.01.09 |
[Ubuntu] Jenkins 설치 (0) | 2022.01.09 |
[Linux] 한국 시간대(KST) 설정 (0) | 2021.12.10 |
[AWS] EBS 볼륨 크기 조정 후 Linux 파일 시스템 확장 (2) | 2021.12.10 |