AWS로 Spring Boot 프로젝트 배포하기 [4]

김영신·2022년 4월 12일
0

AWS로 배포하기

목록 보기
4/4

해당 포스팅은 Gradle을 사용합니다.
해당 포스팅은 jar를 사용합니다.
해당 포스팅은 InteliJ를 사용합니다.
해당 포스팅은 AWS RDS가 아닌 오라클 클라우드 전자 지갑 방식을 활용합니다.

Jar 파일 만들기

이제 인텔리제이로 들어가서 jar파일을 만들어 보자.

인텔리제이로 들어가서 우측 상단에 보면 Gradle이라고 있을 것이다.
클릭


그럼 이런 화면이 뜨게 되는데 일단 여기서 사용해 볼 것은
jar와, clean과 bootJar다
jar를 더블 클릭하게 되면 좌측에


build라는 메뉴가 생기고 다양한 폴더들이 생긴다.

이제 clean을 눌러보자.

그러면 build 폴더가 사라진다.

다시 jar를 더블 클릭 한뒤 이번에는 BootJar를 눌러보자

그러면 이제는 실행이 완료되었습니다가 뜨고 왼쪽 build/libs 안에
해당 프로젝트이름-0.0.1-SNAPSHOT.jar가 생긴 것을 확인 할 수 있다.
그런데 처음 진행하는 사람은 SNAPSHOT-plain.jar가 있을 수 있다.
우린 그냥 jar를 쓸 것이다.

jar파일 구동시키기

이제 putty로 미리 리눅스 서버 세션으로 진입하고
fileZila로 서버와 연결해 놓자.

그리고 3편인가 2편에서 본인은 리눅스 서버 경로로 오라클 전자지갑 경로를 입력해줬었다. /home/ubuntu ~~

그 경로에 맞춰서 jar파일을 파일질라로 서버에게 넘겨준다.

CGVProject-0.0.1-SN... 가 넘겨졌다.
이제 압축을 푼 전자지갑도 넘겨주자.


이렇게 넘겨주고 이제 putty로 들어간 세션에서 잘 들어가 있는 지 확인해본다

$pwd : 현재 경로
$cd /home/ubuntu : 이동할 경로 ( $cd ~ 로 대체 가능 )
$ls : 현재 경로에 있는 파일들을 나열


아주 잘 들어갔다. 이제 우리는 여기서 jar파일을 실행시켜보자.

$java -jar CGVproject-0.0.1-SNAPSHOT.jar


잘 실행이 된다!

만약 실행이 된다면 이제 터미널을 닫았을 때도 실행이 가능하도록 해주자.
$nohup java -jar CGVProject-0.0.1-SNAPSHOT.jar &

뒤에 꼭 &을 붙여주자.
이러면 이제 터미널을 꺼도 우리는 우리가 할당받은 탄력적IP:8080 을 통해 우리가 개발한 웹으로 접속할 수 있다.

개선사항

만약 뒤에 :8080이 붙는게 싫다면

$iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

를 입력해주면 된다.

추가적인 에러

  • 만약 포트번호를 사용하고 있다는 에러가 뜬다면
$sudo kill $(sudo lsof -t -i:죽일 포트번호)
ex)sudo kill $(sudo lsof -t -i:8080) 를 사용하면 된다.
  • 만약 thymeleaf 에러가 뜬다면
    혹시나 Controller에서 View페이지 경로를 /를 주었는지 확인해본다.
ex)
@GetMapping("")
public String main(){
	return "/user/main";
}

linux는 '/'의 파일 루트를 인식하지 못한다. ex /directory (x) directory

번외

아마 gradlew로도 jar파일을 build해서 하는 분도 있을 것이다.

$sudo chmod 777 ./gradlew ( 권한 주기 )
$sudo ./gradlew build ( jar 파일 build )

이렇게 사용하면 되는데 간혹 이렇게 권한과 build를 해도
no such file이라는 에러가 뜬다면
운영체제에 따른 개행문자가 달라서 그럴 것이다.
윈도우 경우 \r\n을 MAC의 경우 \n을 사용하기 때문이다.

그러므로 과정상에 gradlew가 개행문자가 다르다면 dos2unix 를 이용해 문자를 변환해준다.

dos2unix 설치
$sudo apt-get install dos2unix

gradlew 컨버팅
dos2unix ./gradlew


잘 작동되는 것을 확인할 수 있다.

profile
어제보다 오늘 더 Developer

0개의 댓글