AWS 배포 중 발생한 이슈들

최준영·2022년 7월 21일
1

프로젝트 관련

목록 보기
3/6
post-custom-banner

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 참고하여 EC2와 RDS를 구축하고 프로젝트 배포 경험을 쌓을 수 있었다. 그러한 과정에서 겪은 이슈들을 기록하려 한다.

1. EC2 자바 11 설치

  • 내 프로젝트에서는 자바 11 버전을 사용한다. 하지만 책에서의 방법으로는 8버전 까지만 설치할 수 있다. 참고로 AMAZON LINUX 2 AMI이다.
  • sudo yum install java-11-amazon-corretto-headless로 다음과 같이 java 11 버전을 설치할 수 있다.
  • 참고자료 : https://lemontia.tistory.com/941

2. EC2 hostname 변경

  • IP만으로는 어떤 서비스의 서버인지 확인이 어렵다 그래서 각 서버가 어느 서비스인지 표현하기 위해 HOSTNAME을 변경한다.
  • 책에서의 방법대로 하면 다음처럼 HOSTNAME이 없다. 직접 추가를 해주어도 HOSTNAME이 변경되지 않았다.
  • 대신 다음의 방법을 사용하였다.
    1. sudo -s 명령어 입력
    2. hostnamectl set-hostname {hostname명} 명령어 입력
    3. hostnamecat /etc/hostname을 입력하여 변경 확인
  • 참고 자료 : https://minjii-ya.tistory.com/24

3. ./gradlew test 예외 발생

해당 블로그의 방법과 --no-daemon을 붙여보는 시도가 모두 실패하였다. 예외 콘솔을 다시 한번 살펴보면서 daemon이 없다는 글을 보고 ./gradlew --status를 입력해 보았다.

로컬 PC에서는 IDLE 상태의 데몬이 있는데 여기는 모두 stopped 상태이다. 없으면 생성하면 되지 않을까?라는 생각으로 ./gradlew test --daemon으로 입력하니 test가 잘 동작하였다! 곧바로 ./gradlew --status 입력해보니 다음처럼 바뀌어있었다.

4. 빌드 시 두개의 jar가 생성되는 현상

  • 책에서와 달리 plain.jar가 출력되어 서칭해보았다. 알고보니 스프링부트 2.5 이후부터는 그냥 jar와 plain.jar가 두개가 생성이 된다더라.
  • 의존성이 제거된 plain.jar가 불필요하였기 때문에 build.gradle에 다음의 코드를 추가하였다.
jar {
	enabled = false
}

5. no main manifest attribute 에러

  • nohup 열어보니 실행되지 않고 계속 해당 문구가 발생하였다. 알고보니 JVM이 Main 메소드를 찾지 못해서 발생하는 에러였다.
  • 그래서 build.gradle에 다음의 코드를 추가해주었다.
jar {
	enabled = false
	manifest {
		attributes(
				'Main-Class': 'toyproject.pyeonsool.PyeonsoolApplication'
		)
	}
}

  • 나를 제외한 ec2, 팀원들 모두 동일한 에러가 발생하였다. 그래서 ec2의 문제라기 보다는 rds 인바운드 설정을 빠뜨린 것 같다는 생각을 하였다.
  • ec2의 보안 그룹 id를 rds 인바운드 규칙에 추가하지 않아서 발생한 문제였다. 이를 끝으로 배포가 성공적으로 이루어졌다!!
profile
do for me
post-custom-banner

0개의 댓글