티스토리 뷰

AWS EC2에 올려보자

지금까지 만든걸 로컬로 돌려도 예매 알림을 받을 수 있다. 

하지만 로컬을 계속 돌릴 수 있는 환경이 아니라면 AWS를 활용해 서버에서 프로그램이 돌게 만들면 된다.

AWS EC2 서버를 만들고 접속하기까지는 다른 곳에 정리가 잘 되어있다.

https://jojoldu.tistory.com/259?category=635883

 

4) 스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기

이번 시간엔 SpringBoot를 운영할 AWS 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) Tip) 운영 서버는 크게 클라우드 서비스(AWS, Azure 등) 과 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용하시..

jojoldu.tistory.com

특히나 여기에 잘 나와있다.

개인적으로 AWS EC2는 이전에도 세팅을 해봤어서 스프링부트로 웹 서비스 출시하기 5.EC2에 배포하기 를 많이 참고했다.

기존 스프링 프로젝트는 war 파일로 묶어서 tomcat 내부의 webapp에 올리고 톰캣을 실행해 war를 풀어줌으로써 배포를 끝낸다.

하지만 spring boot는 톰캣이 내장되어 있거니와 gradle build, git을 통해 소스를 받아와서 배포 등은 처음해보았기에 많은 도움이 되었다.

우선 aws 접속해 다음 명령어를 입력한다.

1
sudo yum list | grep java-

그럼 이런식으로 나오는데 처음에는 java-1.8.0-openjdk.x86_64 를 설치했다.

위의 블로그에 나와있는 자세한 설명을 바탕으로 git으로 소스도 가져오고 순조롭게 진행되었다.

그리고 ./gradlew test를 돌려보는데, 역시나 한번에 되는건 없다...

1
2
3
4
5
6
7
8
9
10
11
12
13
* What went wrong:
Execution failed for task ':compileJava'.
> Could not find tools.jar. Please check that /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.47.amzn1.x86_64/jre contains a valid JDK installation.
 
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
 
* Exception is:
...
...
...
Caused by: java.lang.IllegalStateException: Could not find tools.jar. Please check that /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.47.amzn1.x86_64/jre contains a valid JDK installation.

이런 에러가 나는데 처음엔 감이 안잡혔다.

나중에 찾아보니 (제타위키 참고) 그냥 openjdk 패키지는 jre, openjdk-devel 패키지는 jdk라고 생각하니 이해가 되었다.

기존에 설치한 java-1.8.0-openjdk.x86_64에는 컴파일할 수 있는게 없다. (javac -version으로 확인가능) 

그래서 java-1.8.0-openjdk-devel.x86_64 로 다시 설치해주니 해당 에러는 무사히 해결되었다.

./gradlew test를 success하고

nohup java -jar 해당 jar 파일명

을 돌리니 정상적으로 스케줄링 되면서 알림 메세지가 오는걸 확인할 수 있었다.

(nohup을 빼도 실행은 되지만 터미널 세션을 종료하면 프로세스가 종료되어 멈추게 됩니다)

ps. 알림 덕분에 1등으로 예매하고 크리스마스에 정중앙 꿀자리를 득할 수 있었다!!! (쑤아리!!!질러!!!)

이제 이거로 리팩토링과 AWS 간편 세팅 (로그인, git 설정 등등) 등 해보면서 공부 겸 정리를 진행해봐야겠다.

댓글