🍀 Spring Boot

[Spring] AWS 서버 배포 - (4) EC2에 배포

dmaolon 2021. 8. 15. 18:29

● 자바 8 설치

sudo yum install -y java-1.8.0-openjdk-devel.x86_64

로 설치를 해주고

sudo /user/sbin/alternatives --config java

를 해준다.
 

나 같은 경우에는 java 8만 있어서 그대로 1번 선택 후 설정 완료이지만, 자바 7도 있는 경우에는 사용하지 않으니까 삭제해주면 될 것 같다. 

java -version

으로 잘 설정되었는 지 확인해주면 된다.

 

● Git 설치 및 clone

sudo yum install git

git 설치 후

git --version

으로 버전도 한 번 확인해줘본다.

 

mkdir app
mkdir app/git

으로 git clone을 해올 디렉토리를 생성해주고

cd ~/app/git

으로 해당 디렉토리로 이동해준 후

 

git clone https://github.com/~~.git

로 클론해온다.

 

cd 프로젝트명

으로 이동해서

./gradlew test

를 해주면 실행이 되지 않는다.
권한이 없다는 오류가 발생해서

chmod +x gradlew

를 해주고 다시 실행
 
 
FAILED로 테스트가 성공하지 않는다.
근데 실패 원인에 프로젝트는 JAVA SE 11인데 얘는 JDK 8이라고 하는 문장이 있었다.
11로 바꿔줘야 할 것 같다! (갑자기 변덕부리기..)
(지금보니 다른 오류들 때문에 성공 실패였어서 굳이 안해줘도 될 것 같다 [아닐수도있돠])

 
그래도 난 여러 오류가 발생했다.
 
 
./gradlew test를 성공시키기 위해 엄청난 삽질을 했다.
 
그 모든 과정을 기록해보고자 한다.
 
일단,
clone해온 곳에 application.yml이 gitignore로 적용되어있어서 데려올 수가 없었다.
따라서, cd src/main/resources로 이동한 후,

nano application.yml

로 편집기를 실행시켜서 기존 원래 플젝에 존재했던 application.yml을 옮겨주었다. (복분은 마우스 우클릭!)
 
바꿔준 점은,
원래

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3307/{DB 이름}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: {마스터 사용자 이름}
    password: {비밀번호}

이렇게 되어있었는데, url 부분을 아래처럼 바꿔주었다. 이렇게 해주어야 RDS 인스턴스와 연결시킬 수 있다.

url: jdbc:mysql://{RDS 인스턴스 엔드 포인트}:3307/{DB 이름}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8

 
그리고 src/test/resources/application.yml 에도 추가를 해주어야 한다는 글을 봤었는데 안해줘도 돌아가길래 해주지 않았다. 그리고 local이 아니라 바로 엔드포인트로 연결해주어서 안해줘도 괜찮을 것 같았다.
 
그랬더니 

java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132

라는 오류가 발생했다.
 
이 오류같은 경우엔 데이터베이스가 켜져있지 않다는 것을 의미하는데, 나는 데이터베이스도 켜져있었다고 생각했지만
알고보지 localhost로 되어있는 데이터베이스였다.
 
따라서 mysql workbench를 실행시켜 New Connection으로

위의 글에 따라 설정해준 후 실행시켜주니 데이터베이스에 연결이 잘되어서 그런지 BUILD SUCCESSFUL을 볼 수 있었다.
 
 
그 외에도 gradle 오류인

Process 'Gradle Test Executor 1' finished with non-zero exit value 1
  This problem might be caused by incorrect test process configuration.
  Please refer to the test execution section in the User Manual at https://docs.                                                                                                             gradle.org/6.9/userguide/java_testing.html#sec:test_execution

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug                                                                                                              option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with                                                                                                              Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.9/userguide/command_line_interface.html#sec:comman                                                                                                             d_line_warnings

이런 오류도 봤는데,

./gradlew --stop

이나 

./gradlew clean

을 해주었었다

 

Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)

이런 오류도 접했었는데

./gradlew test --no-daemon

를 입력해주었었다. 
 
 
다양하게 오류를 접하고 데이터베이스도 잘 다룰 줄 몰라서 이것저것 해매었었지만,

잘 통과해서 다행이다.
 

./gradlew build

도 해주어 BUILD SUCCESSFUL!
 
src/build/libs/에 있는 jar 파일을 실행시켜주면 잘 실행되는 것을 확인해볼 수 있다.

 
 
스프링 부트가 8080으로 접속될 수 있도록 실행되어있기 때문에
이 8080을 접속 가능하도록 설정해주어야 한다.
 
해당 EC2 인스턴스의 보안그룹으로 이동하여

위처럼 새로 추가하여 수정해준다.
 
인스턴스의 퍼블릭 IPv4 DNS를 복붙하고 그 뒤에 :8080하면 접속완료!

반응형