메타코딩 유튜브를 참고하여 정리한 내용입니다.
✏️ 배포
(1) 스프링 부트
- 수업에서는 프로젝트를 제공한다.
(2) 업로드된 Github 프로젝트를 보고 운영 컴퓨터로 옮겨본다.
(3) 환경세팅(JDK 설치)
(4) 실행
✔️ 강사님께서 github으로 주신 프로젝트
EC2 인스턴스에서 1개는 무료로 사용할 수 있지만, 인스턴스 갯수 추가시 비용이 발생한다.
ec2 서버 - t2.micro 서버
- 프리티어 사용자들 (가입한지 1년이 안된)
- 750시간 무료 (한달)
- 1일 24시간
- 30일 720시간
- 32일 744시간
ec2 서버 - t2.micro 서버 2대일 경우 - 1488시간 발생한다. (프리티어 일지라도 가격이 나온다.)
✔️ EC2 새로운 인스턴스 생성
IP 4개 제공하지 않는다.
이유 : 모든 집에서 지속적으로 동시에 인터넷을 사용하지 않기 때문이다. (공유)
고정 ip
: Elastic IP, 가격이 비싸다. ip가 변경되지 않는다.
유동 ip
: ip가 계속 변경되는 것 (일반 가정 집에서 사용한다.)
✔️ 탄력적 ip(고정 ip) 생성
⚠️ 프리티어 주의할 점
- 탄력적 IP 하나를 무료 제공한다.
- 대신, EC2에 탄력적 IP를 연결했을 때 무료로 제공한다.
- 탄력적 IP를 생성만 하고 사용하지 않을시, 비용이 발생한다.
- 탄력적 IP를 생성했을 시
- 사용하지 않을 때 비용이 발생한다.
- 탄력적 IP 2개 생성시, 비용 발생한다.
- 연결된 EC2가 종료되었을 경우, 비용이 발생한다.
✔️ Elastic IP와 EC2 인스턴스 연결
퍼블릭 IP 주소 : 3.34.118.212
git --version
: git 버전 체크
✔️ git에 있는 프로젝트 다운로드
✔️ 자바 설치(JDK, JRE)
sudo apt update
: 업데이트하기
sudo apt-cache search jdk | grep openjdk-11
: jdk
에서 openjdk-11
확인하기
sudo apt install openjdk-11-jdk
: openjdk-11-jdk
설치
✔️ gradlew : 실행 권한 주기
/aws-v1
파일 위치로 이동할 때 cd ~/aws-v1
으로 입력시 어느 위치에서든지 aws-v1
파일 위치로 이동한다. (절대 경로)chmod u+x gradlew
✔️ gradlew로 프로젝트를 jar파일로 변경하기
./
: 현재 폴더
./gradlew build
: 현재 폴더에 있는 gradlew build
로 프로젝트를 jar파일로 변경한다.
✔️ java로 jar를 실행
jar 파일
로 변경되고 나서, build
라는 디렉터리가 생성되었다.
java -jar v1-0.0.1-SNAPSHOT.jar
or java -jar *.jar
을 입력하여 프로젝트 서버를 실행한다.
📣 jar파일 실행하기
- jar 파일이 하나만 존재할 경우 :
java -jar *.jar
를 입력한다.- jar 파일이 여러개 존재할 경우 :
java -jar 파일이름.jar
를 입력한다.
서버 배포 완료!
📚 4. 배포 완료까지는 터미널 종료하였을 때, 웹(서버) 접속이 불가능하였다. (종료됨)
- nohup으로 백그라운드 실행 : 터미널 종료되어도, 웹(서버)에 접속할 수 있다.
✔️ spring build.gradle에서
plain archive
는 애플리케이션 실행에 필요한 모든 의존성을 포함하지 않고 작성된 소스코드의 클래스 파일과 리소스 파일만 포함한다.*plain.jar
파일은 모든 의존성이 존재하는게 아니기 때문에 java -jar 명령어로 실행시 에러가 발생한다.jar
빌드시에 plain.jar 파일
이 생성되지 않게 해주는 코드이다.plain.jar
과 SNAPSHOT.jar
파일 2개가 생겨서 배포하기 위해 java -jar *.jar
로 실행시 어떤 것을 실행시켜야 할지 인식하지 못하기에, plain.jar
파일을 생성하지 못하게 jar{enable=false}
를 입력하여 막았다.
✔️ nohup 이란?
nohup
: 우분투 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어이다.
sudo apt install nohup
: nohup
설치
nohup java -jar *.jar
: nohup
으로 백그라운드 실행
✔️ 그런데? 지금은 nohup으로 실행 후 종료하면, 웹도 종료된다.
이유 : 현재는 포그라운드로 실행했기 때문이다.
그러므로, -nohup
으로 실행했다고 하더라도 터미널 종료시에 함께 종료된다.
→ 백그라운드에서 -nohup
을 실행시켜야 한다.
✔️ nohup을 백그라운드에서 실행시키자!
nohup java -jar *.jar &
: nohub
을 백그라운드에서 실행
sudo apt install net-tools
: netstat
설치
netstat -nlpt
: 현재 실행되고 있는 port 번호
확인하기
✏️ 여기서는 로그를 볼 수가 없다.
로그 출력내용을 볼 수가 없다.
1 : info
,-1 : error
✔️ 로그 남긴 내용으로 이동하기
nohup
은 자동으로 로그를 남긴다.
nohup.out 파일
에 실행하며 발생한 로그들을 저장한다.
tail -f nohup.out
: 실시간으로 nohup.out 파일
에 입력된 내용을 확인하기
✏️ 종료할 때는?
ps -ef
명령어를 실행할 시, 현재 실행중인 프로세스들이 화면에 출력된다.
- 여기서,
jar
실행파일processID
를 찾는다.
kill -9 processID
를 입력하면 종료된다.