[Spring] AWS 서버 배포 - (4) EC2에 배포
● 자바 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하면 접속완료!