AWS (EC2) 서버 유지 방법.
- EC2에 SSH 접속이 종료 되면, 프로세스가 종료되고, 서버 또한 종료 되게 된다. (터미널 종료)
- 하지만 서버는 SSH 연결이 끊기더라도 켜져 있어야 한다. (SSH를 계속 연결해놓을 이유가 없다..)
- 백그라운드에서 실행할 수 있게 하는 nohup 명령어를 사용하여 서버를 유지 시켜 보자.
*서버 유지와 더불어 React(npm), SpringBoot(Java)를 동시에 EC2 하나에서 사용 할 수 있다.(권장하지는 않는다.)
* 해당 포스트에서는 Spring Boot 기반으로 작성된다.
nohup - 사용법
1. 명령어 - 기본
nohup java -jar build/libs/test-0.0.1-SNAPSHOT.jar & [옵션]
- 기본 명령어는 위의 코드블럭을 참고하면된다.
- [옵션] 부분은 없어도 무방하다!
- 명령어에 관련된 부분은 -> nohup ~ & 이다.
- 앞부분의 nohup, 뒷부분의 & 는 필수 이다.
1-1. 설명
- ssh 연결이 종료 되어도 Spring Boot는 Back Ground 에서 동작 하게 된다.
- log가 보이지 않는다고 당황 하지말자!
- log는 기본적으로 nohup.out 파일에 저장된다.
- 명령어를 사용하여 log를 확인 할 수 있다.
1-2. nohup log 조회
- nohup로 백그라운드에서 어플리케이션이 실행되고 있다면 log가 보이지 않는다. log를 확인해보자.
- jar 파일이 실행 되고 있는 directory로 이동.
- 로그 확인 명령어 사용 (cat, tail)
# 로그 조회
$ cat nohup.out
# 마지막 10줄 조회
$ tail -n 10 nohup.out
# 파일의 10번째 줄 이후 부터 출력
$ tail -n +10 nohup.out
# 실시간 로그 출력
$ tail -f nohup.out
1-3. 백그라운드 실행 목록 확인
- 만약 nohup 로그 출력 명령어를 사용해도 보이지 않는다면, 백그라운드에서 어떤 작업이 이루어지는지 확인해보자.
# 백그라운드 실행중인 프로세스 확인
$ bg
bash: bg: job 1 already in background
# 목록 출력
$ jobs
[1]- Running nohup java -jar day-0.0.1-SNAPSHOT.jar &
1-4 옵션
- 옵션의 경우, 평범하게 쓰이는 1가지를 알아보도록 하자.
nohup ~ & > /dev/null
- 기본 명령어와 달라진점은 & 의 뒷부분 일것이다.
- ' > /dev/null '
- 해당 옵션은 log 를 저장하지 않는다. 라는 옵션이다. (기본적으로는 nohup.out 파일에 log가 저장된다.)
프로세스 종료(background process kill)
- 백그라운드에서 서버를 구동 했다면 종료 하는 방법또한 알아보자.
1. PID 찾기 - (PID를 이미 알고 있다면 생략 가능)
$ ps -ef | grep [실행 파일 이름]
- 예) ps -ef | grep test-0.0.1-SNAPSHOT.jar
1-1 찾아야 하는 Process
- build/libs/ 폴더 이동.
- 'ps' 명령어 사용
- java에 해당하는 PID 확인.
2. 종료
$ sudo kill -9 [PID]
- 예) sudo kill -9 8559
반응형
'AWS' 카테고리의 다른 글
[AWS] RDS 생성 - (EC2 연결, SpringBoot 배포)(2) (0) | 2023.02.16 |
---|---|
[AWS] EC2 생성 - Spring Boot 배포(1) (0) | 2023.02.15 |
[AWS] EC2 포트 포워딩 (Port forwarding) - 포트연결 (0) | 2023.02.14 |
댓글