본문 바로가기

aws

인텔리제이(IntelliJ) 프로젝트 빌드(build)하고 EC2서버 배포하기

⭐️ EC2서버 배포를 위한 과정

 

1. 배포 파일 빌드(build)

지금까지 만들어온 프로젝트를 배포하기 위해 하나의 파일로 묶는것 -> 배포 파일 빌드

인텔리제이 - 오른쪽 탭 Gradle 클릭 -> Tasks-build-build 더블 클릭

=> 좌측에 build폴더 -> libs- .jar확장자로 끝나는 파일이 생성되면 빌드 완료

 

2. OpenJDK설치(나는 설치했으니까 앞으로는 생략해도 되겠지..?)

// apt-get은 인덱스를 가지고있음(위치: etc/apt/sources.list)
// 이곳에 저장된 저장소에서 사용할 패키지의 정보를 얻는 것(?) 저장소에 openjdk 받기전에 확인하는 것
sudo apt-update

// 프로젝트 생성할 때 설정했던 자바 버전에 맞춰서 설치(설치되어있으면 안해도됨)
sudo apt-get install openjdk-8-jdk 
sudo apt-get install openjdk-11jdk 

// java 버전 확인
java -version
• apt-get(Advanced Packaging Tool): 우분투(Ubuntu)를 포함안 데비안(Debian)계열의 리눅스에서 쓰이는 패키지 관리 명령어 도구
 sudo: superuser 권한으로 실행하기 위해서 씀

3. AWS EC2 접속하기

1) keypair 접근 권한 변경

sudo chmod 400 받은키페어를끌어다놓기
chmod: 권한 변경(change mod)
나/그룹/전체 순으로 권한을 나타내고 Read(4) Write(2) execute(1) 숫자들의 합으로 권한을 표시함

👉🏻 400의 의미는 나만 읽을 수있다는 것 

 

2) SSH 접속하기

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

// ssh -i /Users/sky/Desktop/sky_key.pem ubuntu@111.111.111.220 이런식으로 나옴
SSH(Secure Shell Protocol)
다른 컴퓨터에 접속할 때 쓰는 프로그램으로 보안이 상대적으로 뛰어남

4. Filezilla(파일질라)를 이용해서 배포 파일 업로드

프로토콜: SFTP / HOST: 내 EC2서버 IP / USER: ubuntu / key file: 키파일 위치 

마우스로 드래그해서 파일을 업로드/다운로드
👉🏻 프로젝트 빌드한 .jar파일을 오른쪽으로 드래그하기

 

5.  포트 사용 확인

⭐️⭐️⭐️⭐️
매 주마다 스프링부트로 새로운 프로젝트를 올리고있어서 포트는 열려있고, 포트가 이미 사용중이라는 에러를 저번주에 이어 이번주도 본다..

미리 사용하고있는 포트 죽이고 스프링 부트를 작동시키자
더보기

1. 8080포트를 누가 쓰고있는지 찾기

lsof -i :8080
// 다른 포트번호 사용이 궁금하면 lsof -i :포트번호 입력하면 됨

2. 위 명령으로 8080포트 사용하고있는 PID를 확인할 수 있음. PID를 써서 포트 죽이기

kill -9 PID입력

// 내 8080포트 사용중인 PID를 넣으면 이런 형식
// kill -9 101681

6.  스프링 부트 작동시키기

java -jar {파일명.jar}

// java -jar 입력하고 파일명 앞에 몇 글자만 입력하고 Tap키 누르면 내가 만든 파일이 자동으로 들어옴

7. 웹브라우저에서 IP입력해서 접속해보기

http://내AWS아이피:8080

⭐️ 웹브라우저에서 안열리면 확인하기!

더보기

(첫 주에 파이참으로 프로젝트 했을 때는 포트가 8000이였었음)

 

기본적으로 22번 포트만 열려져있음

AWS에 E2C에서 자체적으로 포트를 열기/닫기를 관리함

-> AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 함

EC2 관리 콘솔 -> 보안그룹(영문: Security Group) -> 보안 그룹-> Edit inbound rules -> 포트 추가하기

 

80포트: HTTP접속을 위한 기본 포트 / 8080포트: 스프링 부트 기본 포트

접속 확인 후

 

8. nohup 적용하기

내가 터미널을 꺼도(SSH접속을 꺼도) 계속 서버가 돌아가게 하기위해서

// 원격 접속 종료해도 계속 서버가 돌아가게 하기: nuhup으로 배포
nohup java -jar {파일명.jar} &



// 서버 종료 방법 순서 1.pid 값(프로세스 번호)확인
ps -ef | grep java

// 2. 확인한 pid값을 입력하여 프로세스 kill
kill -9 {pid값}

 

9. 도메인 붙이기

이건 지금 가비아에 설정해놔서 따로 안해도 됨(필요 시 추후에 추가할 것)

 

📄 레퍼런스

https://spartacodingclub.kr/online/spring

 

스파르타코딩클럽 [웹개발의 봄, Spring]

스프링 기초를 누구보다 빠르게!

spartacodingclub.kr

https://blog.outsider.ne.kr/346

 

Ubuntu의 apt-get 명령어 정리 :: Outsider's Dev Story

apt-get(Advanced Packaging Tool)은 우분투(Ubuntu)를 포함안 데비안(Debian)계열의 리눅스에서 쓰이는 팩키지 관리 명령어 도구입니다. 우분투에는 GUI로 되어 있는시냅틱 꾸러미 관리자도 있기는 하지만 이

blog.outsider.ne.kr