본문 바로가기
카테고리 없음

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

by 태옹 2021. 8. 27.

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

일단 나는 아래의 블로그를 보고 시도해보았는데 글쓴이분은 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으로 로그인하고 이용하시면 됩니당🙌

댓글