aws 배포를 하기 전 헤로쿠로 배포를 하게되었는데, 이때 마주친 문제들을 기록하고자 한다..
먼저 헤로쿠 배포 과정을 간단히 설명하겠다. 헤로쿠 회원 가입 및 앱 생성 과정을 먼저 거친 후 다음과 같이 수행해주면 된다.
# 1. 헤로쿠 로그인
$ heroku login
# 2. 코드가 있는 폴더로 이동 (자신의 폴더명으로!)
$ cd Desktop/heroku
# 3. 깃 초기화
$ git init
# 4. 연동
$ heroku git:remote -a {앱이름}
# 5. 배포하기
$ git add .
$ git commit -am "commit comment"
$ git push heroku main
$ heroku open
하지만 이렇게 배포하게 되면 무조건! 에러를 마주치게 된다.
1. H10-App Crashed Error
아마 이 에러를 가~장 많이 마주치게 될 것이다. 헤로쿠 홈페이지에서는 H10 에러를 다음과 같을 때 발생한다고 한다. (아몰랑)
아무튼 내 해결방법은 다음과 같다.
Procfile을 루트 디렉토리에 생성하고 web: java -jar build/libs/나의프로젝트이름-0.0.1-SNAPSHOT.jar을 넣어준다. 루트 디렉토리에 생성해야함을 주의하고, Procfile의 p는 무조건 대문자로 해주어야 한다.
web: java -jar $JAVA_OPTS -Dserver.port=$PORT build/libs/{나의jar파일명}-0.0.1-SNAPSHOT.jar
jar 파일의 경우 build/libs 경로에 들어가서 존재하는지 확인해주자! 나같은 경우, 이름도 잘 설정 했는데 대체 왜 에러가 날까... 하다가 저 경로와 jar 파일이 없다는 것을 알게 되었다. 그래서 command + E를 누른 후 gradle 로 이동하여 bootJar을 눌러 빌드해주었고, 그러면 jar 파일을 생성된다.
2. JDK 버전
> Task :compileJava FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':compileJava'.> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.
스프링 프로젝트는 Java 11을 쓰고 있고, 헤로쿠는 1.8 버전을 사용하기 때문에 발생하는 오류이다. 이번에도 ✨루트 디렉토리✨에 system.properties 파일을 생성한 후 java.runtime.version=11을 넣어주자!
이 에러는 헤로쿠 공식 페이지에서도 잘 나와있다!
3. DB 연동 문제
heroku Caused by: java.net.ConnectException: Connection refused (Connection refused)
이러한 에러가 발생했었는데, 로컬에서는 MySQL 데이터베이스를 사용하고 있었다. 하지마 헤로쿠에서는 데이터베이스를 연동해주지 않았었다. 일단 생성해준 앱의 대시보드에서 Resources로 이동해서 Find more add-ons를 누른다. 그다음 JawsDB MySQL를 선택해준다.
그 후 Install JawsDB MySQL을 눌러서 설치해주면 된다.
그 후 나의 App을 선택해주면 된다! (아마 앱을 등록하려면 카드를 등록해주어야 했었다..!)
2. H14 - No web process running
2010-10-06T21:51:37-07:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno= connect= service= status=503 bytes=
H14 에러의 경우 헤로쿠 홈페이지에서 다음과 같이 설명되어있다.
This is most likely the result of scaling your web dynos down to 0 dynos. To fix it, scale your web dynos to 1 or more dynos:
해석해보면 dynos가 없어서 발생하는 문제이니 dynos를 만들으라는 얘기이다!ㅎㅎ
그래서 아래의 명령어로 서비스를 시작해주면 된다!
$ heroku ps:scale web=1
'Server' 카테고리의 다른 글
AWS EC2 서버 무중단 배포/백그라운드 실행 (0) | 2022.09.22 |
---|---|
[Spring] 카카오 지도 API를 통해 정보 가져오기 (0) | 2022.09.13 |
AWS EC2 Ubuntu 서버에 Domain 적용 (가비아) (0) | 2022.09.13 |
[Server] phpMyAdmin 설치법 (0) | 2022.08.16 |
[Server] MySQL 외부에서 접속하기(Workbench) (0) | 2022.08.16 |
댓글