이제 Spring Boot를 배포해보도록 하겠습니다.
Heroku 가입 및 deploy 방법에 대해 모르신다면 아래의 포스팅을 통해 설정해주세요
1. Java Version 설정하기
1) Heroku의 경우 Java8을 기준으로 잡고 있습니다. 저와 같이 Java11 또는 그 외의 버전을 사용하고 계시다면 따로 설정을 해주셔야하는데요.
Heroku의 경우 Java8 이외에도 7, 11, 13, 15, 17을 지원해주고 있습니다.
2) Project에 아래 화살표에 있는 것처럼 "system.properties"라는 파일을 생성합니다.
3) system.properties 파일을 열고 그림과 같이 "java.runtime.version=<<사용하시는 버전>>"을 작성해주시면 됩니다.
2. Procfile 만들기
1) 우선 터미널을 키고 프로젝트의 위치로 이동한 다음 "gradlew build" 명령어를 통해 jar파일을 생성해주도록 합니다.
명령어가 성공적으로 실행되었다면 아래와 같이 jar파일이 생성된 것을 확인할 수 있습니다.
2) 아래의 그림과 같이 project에 Procfile을 파일을 생성해줍니다.
(기본 file로 생성해주시면 됩니다)
3) Procfile 안에 jar 관련 옵션 작성하기
web: java -Dserver.port=$PORT $JAVA_OPTS -jar [실행될 jar파일 경로]
저는 다른 블로그들을 보면서 PORT랑 JAVA_OPTS를 뭘 써야하는지 모르겠어서 많이 헤맸습니다. port의 경우 Heroku에서 자체적으로 변동되기도 하고 JAVA_OPTS의 경우 원하시는 경우에만 추가해주면 됩니다.
따라서 저처럼 다른 설정이 필요없으신 분들은 아래의 코드 그대로 사용하시되 빌드된 파일 이름으로 넣어주시면 됩니다.
web: java -jar build/libs/<<빌드된 jar 파일 이름>> //ex)test-0.0.1-SNAPSHOT.jar
4) Port 설정하기
여기 부분은 문제가 없으시다면 패스하셔도 괜찮습니다. Heroku는 자동으로 포트번호를 설정하는데 만약 고정시키고 싶으시다면 아래와 같이 application.properties에 작성해주시면 됩니다.
server.port = ${port:<<원하는 포트번호>>}
그 외1) Applcation Error 해결
위의 설정까지 따라했는데 아래 그림처럼 Application error 가 발생하는 경우가 있습니다. 그럴 경우 보시는 것처럼 cmd 창에 "heroku logs --tail" 명령어를 입력하면 빌드과정 및 에러가 뜨는 이유를 알려줍니다.
저 같은 경우 h2 데이터베이스로 테스트 하기 위해 설정해놨었는데 heroku의 경우 h2데이터베이스를 지원하지 않는다고 합니다. 따라서 H2를 사용하시는 분들은 MySql이나 다른 데이터베이스를 사용하시는걸 추천드립니다.
그 외2) MySQL 연결
MySQL을 사용하는 경우 Heroku쪽 ClearDB를 통해 연동하면 된다고 합니다. 연동할 때 카드등록을 하는데 무료이므로 정보만 입력해주시면 됩니다.
저같은 경우 GitHub를 통해 연동했기 때문에 간단한 방법을 알려드리도록 하겠습니다.
1) 그림처럼 Resources를 클릭하시면 아래에 Add-ons가 있습니다. 검색창에서 clearDB MySQL을 Ignite(무료)버전을 선택 후 download받으시면 간단하게 연결됩니다.
2) [Dashboard] - [Settings] - [Config Vars]에서 heroku config | grep CLEARDB_DATABASE_URL를 입력했을 때 나오는 정보를 제공해줍니다. 이 정보를 통해 데이터베이스를 관리 도구로 디비에 접근할 수 있습니다.
mysql://[user name]:[password]@[Host name]/[password2]?reconnect=true
3) 콘솔에서 접속한 후 위의 정보에 맞춰서 명령어에 대입시켜 실행해주시면 됩니다.
# mysql -u [user name] -h [host name] -p [password2]
# Enter password: [password] 입력
4) 워크밴치에서는 다음과 같습니다.
Connection Name : [ password2 ]
Host name : [ host name ]
User name : [ user name ]
Password : [ password ]
위와 같이 입력하면 MySQL에서 관리할 수 있게 됩니다.
'Spring' 카테고리의 다른 글
[Heroku] 헤로쿠(Heroku) Item could not be retrived: Internal Server Error (0) | 2022.05.04 |
---|---|
[Spring Boot] React와 RestApi 통신할 때 발생하는 cors 해결하기 (0) | 2022.03.06 |
[Heroku] 헤로쿠(Heroku) 가입부터 spring boot 배포까지 - 1 (0) | 2022.02.20 |
[IntelliJ] 인텔리제이 Entity Class의 @Table, @Column name에 나타나는 빨간 줄 없애기 (0) | 2022.02.17 |
[Spring Boot] Web server failed to start. Port 8080 was already in use. (0) | 2021.12.29 |
댓글