AWS

EC2 서버에서 jar 파일 실행

JJJAEOoni 2022. 4. 5. 15:13
반응형

1. 방화벽 8080 오픈

 

 

 

 

 

2. 샘플 프로젝트

 

https://github.com/codingspecialist/Springboot-Jwt-blog-With-Flutter

 

GitHub - codingspecialist/Springboot-Jwt-blog-With-Flutter

Contribute to codingspecialist/Springboot-Jwt-blog-With-Flutter development by creating an account on GitHub.

github.com

 

EC2 서버에서 샘플 프로젝트를 내려받을 것이기 때문에

git이 있나 확인해보자.

 

 

pwd 명령어로 현재 내 위치 경로를 확인해볼 수 있다.

리눅스에서는 / 가 최상위 폴더이다.

 

ls로 폴더 내부 구조를 확인해볼 수 있다.

 

최상위 폴더에서 우리가 손댈 건 없고

다시 /home/ubuntu로 돌아가자.

여기서만 작업할 것이다.

 

여기서 프로젝트를 다운로드한다.

 

리눅스에서는 root라는 유저가 최상위 관리자이다.

나는 누구인지 whoami로 확인할 수 있는데 ubuntu 유저이다.

EC2 서버를 생성하면 ubuntu 유저가 자동으로 생성되는데

얘로 다운로드할 것이다.

 

 

다운로드한 프로젝트를 실행하기 위해서는 jar 파일로 구워야 하는데

이때 jdk가 필요하다.

jdk가 없으면 컴파일을 할 수 없기 때문이다!

 

여기 메뉴판에 jdk가 있는지 확인해보자.

내가 다운로드하여서 설치할 수 있는 프로그램 목록을 메뉴판에서 확인해볼 수 있다.

sudo apt list

 

 

명령어에 파이프라인(|)을 걸어서 grep이라는 명령어를 사용하여 같은 이름이 있는지 찾아보자.

 

 

우리는 jdk 11 버전을 사용하는데 이중에 뭔지 모르겠네..

 

메뉴판에 새로운 게 나왔을 수 있으니까 업데이트 한번 해주자.

항상 업데이트는 해주는 게 좋다.

sudo apt update

 

 

그 다음 메뉴판에서 search라는 명령어를 사용해 바로 검색해보자.

메뉴판에 어떤 게 있는지 모르니까 일단 리스트를 한번 보고 서치 하는 것이다.

 

sudo apt-cache search jdk-11

 

▼ 얘를 설치할 것이다.

 

 

이렇게 설치하면 서비스에 등록도 되고 환경변수도 알아서 잡힌다.

그래서 apt 사용하는 것!

 

sudo apt install openjdk-11-jdk

 

중간에 질문을 하나 하는데 용량을 이 정도 쓰는데 괜찮냐고 물어보는 것이다.

 

 

 

ls로 폴더 내부 구조를 확인해보니 샘플 프로젝트가 잘 다운로드하여졌다.

jdk도 잘 받아졌는지 버전을 확인해보니 잘 받아졌다.

이제 build만 하면 끝이다.

 

다 설치됐고 프로젝트 폴더로 이동하자.

탭키를 누르면 자동 완성된다.

 

 

얘는 gradle이 아니라 mvn이다.

얘를 빌드해야 한다.

 

빌드하기


(1) Maven이라면?

./mvnw package

(2) Gradle이라면?

./gradlew build

 

 

해당 파일의 실행 권한이 없다고 오류가 발생했다.

 

왜 안되는지 ls -l 로 파일 자세히 보기 해보니 해당 파일에 실행 권한이 없기 때문이다.

 

 

rwrw라고 앞에 붙어있는데

r은 read, w는 write인데 해당 파일에는 x가 없다.

x가 없고 -가 있으면 실행할 수 없는 파일이라는 것이다.

 

실행할 수 있는 파일로 바꿔보자.

 

실행 권한 주기


(1) Maven이라면?

chmod +x ./mvnw

(2) Gradle이라면?

chmod +x ./gradlew

 

 

 

성공적으로 x로 바뀌었다면 빌드해주자.

./mvnw package

 

빌드가 끝나고 나면 target이라는 폴더가 생긴다.

 

여기로 들어가 보자.

 

 

여기서 내부 구조를 확인해보면 jar파일이 있다.

얘를 실행하기만 하면 되는데 백그라운드로 실행해야 계속 돌고 있다.

 

터미널을 종료하면 자바도 같이 꺼지는데

nohup으로 실행해야 터미널을 종료해도 같이 꺼지지 않는다.

 

nohup java -jar 파일명 &

&키 추가!

 

이렇게 하면 실행은 되는데 티가 안 난다.

백그라운드로 돌고 있기 때문에 터미널에 안 보이는 것이다.

 

이때 ls 해보면 nohup.out이라고 로그로 남아있는 것을 확인할 수 있다.

 

 

cat이 파일 안에 있는 내용을 보여준다는 건데 아래 코드를 실행해보면 무슨 말인지 알 것이다.

 

cat nohup.out

 

vscode에서 서버 켰을 때처럼 로그가 남는 것을 확인해볼 수 있다!

 

 

실행이 되었으니 본인 IP 주소를 이용해서 서버에 요청을 해보자.

 

IP주소:8080/user/init 요청!

 

 

 


 

정리해보면 다음과 같다.

 

sudo는 root 권한 대행

1. 메뉴판 업데이트 sudo apt update

2. 메뉴판 검색 sudo apt-cache search jdk

3. JDK 설치 sudo apt install openjdk-11-jdk

4. git clone
git clone https://github.com/codingspecialist/Springboot-Jwt-blog-With-Flutter.git

5. 프로젝트 폴더로 이동 실행 권한 주기 (maven or gradle)
(1) Maven이라면?
chmod +x ./mvnw
(2) Gradle이라면?
chmod +x ./gradlew

6. 빌드하기
(1) Maven이라면?
./mvnw package
(2) Gradle이라면?
./gradlew build

7. jar 실행 (백그라운드 모드)
(1) Maven이라면?
target 폴더로 이동
(2) Gradle이라면?
build/libs 폴더로 이동

nohup java -jar 파일명 &

주의 **************
백그라운드 모드로 & 사용해서 실행되면 터미널에 아무것도 보이지 않는다.
화면이 멈추면 Ctrl+C 해주자.

8. 로그파일 확인 cat nohup.out

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 
반응형