스프링 프로젝트 헤로쿠 배포 (Spring, java, mysql, 깃허브 연동 방법 사용)

하... 역시 구글에는 천사같은 분들이 너무너무 많아서 나같은 초짜도 헤로쿠 배포를 해볼 수 있었다....

일단 나는 아래의 블로그를 보고 시도해보았는데 글쓴이분은 mac이셔서 윈도우와는 좀 다른 부분이 있었고 

중간중간에 나는 오류들이 있었기 때문에 그 해결과정까지 적어보도록 하겠다. 💁‍♀️

 

아 그리고 제발 한글 지원 필요하신 분들은 clearDB말고 jawsDB 쓰세요......

clearDB 설정 다 하고 배포했는데 한글 지원을 안하더라고요.... 결국 jawsDB로 다시 함🤦‍♀️🤷‍♀️🤦‍♀️

 

👇 도움을 받은 블로그 

https://m.blog.naver.com/sgs03091/221633332556

 

[Heroku] JAVA Maven Webapp + MySQL 헤로쿠 배포하기 1탄

열심히 web project 만든 것을 다른 사람들도 사용할 수 있게 하기 위해서는 배포(Deploy)를 해야합니다. ...

blog.naver.com

 

감사합니다..........🤗❤❤❤


일단 구글에 헤로쿠 배포 치면 헤로쿠 가입부터 create new app하는 방법까지는 많이 나와있으니 이 부분은 생략하도록 하겠다.

 

📌 헤로쿠 앱에서 mysql을 쓰기 위해서는 jawsDB MySQL (clearDB MySQL도 가능하지만 한글지원X) 을 사용해야 하니, 위의 블로그에서 소개한 대로 Resource에서 Add-ons으로 jawsDB MySQL를 찾아 추가해준다. (사용하기 위해서는 미리 해외에서도 사용이 가능한 카드를 등록해야한다. 무료버전을 사용하더라도 일단 카드를 등록해놓아야 사용할 수 있다.)

 

 

window에서 jawsDB Mysql 사용하기

Sequel Pro는 mac만 사용할 수 있는 것 같다..(아마도?) 

그렇기 때문에 나는 편하게 사용할 수 있는 MySQL Workbench에서 새로 만든 DB에 접속을 해보았다.

mysql://유저네임:비밀번호@us-cdbr-east-04.cleardb.com/s29oj5odr85rij2o.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/myi7zo609gxul153

이런 형태의 DB URL을 받았다면 규칙에 맞게 connection창 빈칸에 넣어준다.

 

Hostname : 본인의 DB 호스트주소

Username : 유저네임

Password : 비밀번호

(password는 store in vault...를 누르면 입력할 수 있다.)

Connection Name은 그냥 지금 이 이름 뭐로 할 건지 적어주고 Default Schema는 안적어줘도 무방하다.

각자의 DB URL에 맞게 넣어주기

잘 되는지 Test Connection을 눌러보고 문제가 없으면 ok를 누른다.

난 RDS를 쓰다가 헤로쿠 DB로 접속하려고 하니 아주 느려 터져서 답답해죽는 줄 알았다.

그치만 유료와 무료의 차이기 때문에 불만을 가지지 않고 기다려 주도록 한다.

버벅이지만 그래도 잘 들어갔다면 여기서도 주의해야 할 사항이 있다.

 

일반적으로 우리는 어떤 DB를 다룰 때나 알아두어야 할 부분이 SYSTEM 스키마는 건드리지 않는 것이다.

그렇기 때문에 새로 DB를 만들게 되면 우리가 사용할 스키마를 또 새로 만들어서 거기에 테이블을 만들어 두게 된다.

그러나 헤로쿠는 디폴트로 준비되어있는 스키마에 테이블을 추가하는 방식으로 진행한다.

새로 스키마를 추가하려고 하면 에러가 난다! 📌📌📌

 

난 이렇게 Tables could not be fetched가 뜨긴 하는데 배포에 문제가 되진 않았다

무시하고 테스트를 위해 일단 user테이블만 새로 추가해주었다. 

 

그리고 sts(이클립스)에서 root-context.xml의 dataSource 내부 코드를 변경해준다.

난 기존에 RDS를 사용했기 때문에 처음에 엔드포인트와 내가 입력한 유저네임, 비밀번호가 적혀있었는데 위에서의 헤로쿠 DB URL을 참고하여 내용을 다시 변경해준다.

(주의해야 할 부분은 호스트 네임을 커넥션 때와는 다르게 호스트네임:3306/URL주소 이어서 붙이기 라는 점!!)

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://s29oj5odr85rij2o.cbetxkdyhwsb.us-east-1.rds.amazonaws.com:3306/myi7zo609gxul153?reconnect=true"></property>
    <property name="username" value="유저네임"></property>
    <property name="password" value="패스워드"></property>
</bean>

서버를 실행해보고 헤로쿠 DB의 데이터가 잘 들어가는지 확인해본다!

 

>>> 여기서부터도 쭉 블로그를 따라해보기 >>>

 

난 헤로쿠 배포를 위해 git 레파지토리를 새로 만들었다.

👇 깃 업로드 명령어 

/* 올리고자 하는 디렉토리로 cd 이동*/
1. git init
2. git add . 
3. git commit -m "커밋메시지"
4. git remote add origin 깃허브레포지토리url
5. git push origin master

/* 혹시나 무슨 LF인가 MF 에러가 난다면 아래의 명령어를 붙여넣은 뒤, 다시 git add . */
git config --global core.autocrlf true

 


 

 

쭉쭉 블로그의 내용대로 잘 따라와서 deploy를 눌렀을 때 잘 되면... 운이 좋은거지만..

나는 여기서부터 에러를 만났기 때문에,,,

무서운 deploy🤯

에러1. 빌드팩 결정 에러 🤯🤯🤯

-----> Building on the Heroku-20 stack
-----> Determining which buildpack to use for this app
 !     No default language could be detected for this app.
			HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
			See https://devcenter.heroku.com/articles/buildpacks
 !     Push failed

헤로쿠가 자동으로 해당 프로젝트가 어떤 언어를 사용하는지 감지하지 못했을 때 빌드팩 오류가 발생하는 것 같다.

헤로쿠 CLI에서는 여러 방법들이 나오지만 그 방법대로 하면 당연히 통하지 않기 때문에.. 그치만 알고나면 훨씬 쉽다.

먼저 Settings로 이동해서 아래로 스크롤을 쭉 내려주면

Buildpacks가 보인다. 여기서 Add buildpack을 눌러 명령어 없이 간편하게 빌드팩을 설정할 수 있다.

 

에러2. pom.xml 확인

-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/java
-----> App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/java.tgz
       Could not find a pom.xml file! Please check that it exists and is committed to Git.
       More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
 !     Push failed

나는 깃랩을 사용해서 팀원들과 협업 플젝을 진행했기 때문에 pom.xml을 .gitignore에 지정해놓은 상태였다. 그래서 깃에서 pom.xml을 인식하지 못해 다음과 같은 에러가 발생하였다.

pom.xml을 잘 넣어주었는지 확인해보자.

deploy 성공화면

 

수 많은 build failed 끝에... 잘 deploy가 되었다면 왼쪽 config들이 설정되어 있을 것이다.

우측 상단에 있는 Open app을 눌러주면...

따흐흑 잘된다

🤸‍♀️🤸‍♂️헤로쿠 배포 성공🤸‍♀️🤸‍♂️

https://hanium-ewsn.herokuapp.com/

 

Insert title here

취약점 조치 권고 취약점에 영향을 받는 설비에 대해 조치 권고를 발행할 수 있습니다.

hanium-ewsn.herokuapp.com

혹시나 둘러보고 싶은 분들은 아이디 admin / 비밀번호 admin으로 로그인하고 이용하시면 됩니당🙌