[Azure] App Service로 Spring boot 배포하기

강버섯·2022년 1월 1일
2

SPRING 🌱

목록 보기
3/3

.jar file로 azure에 서버를 배포하려고 했는데, 정확한 방법을 몰라서 구글링도하고 유투브도 뒤졌다.

그런데도 방법을 못찾아서 트위터 공계(@AzureSupport)에 멘션까지 보냈었다.

결론적으로는 트위터 애저 공계를 통해 Q&A 페이지에 글을 게시했고, 알려준 방법을 통해 배포에 성공했다.

이거 하려고 며칠을 소비한 건지...

Microsoft Q&A에 올린 질문 페이지



Azure에서 제공하는 App Service를 이용해서 서버 배포를 시도했다.

내가 헤매서 그렇지 사실 배포하는 방법은 상당히 간단하다.

Azure는 체험 계정으로 12개월간 무료 서비스와 크레딧을 제공하므로 처음 사용시에는 체험 계정을 생성하여 무료로 서비스를 이용해볼 수 있다.

👉 App Service 리소스 생성


https://portal.azure.com/ 에서 리소스를 생성할 수 있으며, home에 원하는 리소스 서비스가 없을 경우에는 리소스 만들기를 눌러 원하는 리소스를 검색하여 찾을 수 있다.

웹앱의 정보를 채워 넣고 필요 사양을 선택한 후 검토 + 만들기 버튼을 눌려 에러 없이 검토가 완료되면 만들기 버튼을 눌러 리소스를 생성하면 된다.

길게는 몇 분 대기 후에 리소스 배포가 완료된다.

👉 .jar 파일 Azure에 배포

배포한 리소스에 .jar 파일을 배포하기 위해서는 Azure에서 제공하는 REST API를 이용하면 된다.

API를 이용하여 배포하기에 앞서 배포를 위한 자격 증명을 설정한다.

붉은 네모 박스 안의 버튼을 눌러 Azure의 PowerShell을 열은 뒤 "az webapp deployment user set --user-name <username> --password <password>" 를 입력하면 사진과 같은 response를 받으며 배포 자격 설정이 완료된다.

추가적인 글은 다음 글에서 참고 👇
https://docs.microsoft.com/ko-kr/azure/app-service/deploy-configure-credentials?tabs=cli

설정이 완료되면 PC 터미널에서 .zip 파일을 REST API로 서버에 배포를 할 수 있다.
intelliJ을 사용하여 spring boot 개발을 하는 경우 intelliJ의 Gradle > Tasks > build > bootJar를 더블 클릭하면 spring boot 코드가 존재하는 폴더의 build > libs에 배포를 위한 jar 파일이 생성된다.

생성된 .jar 파일을 원하는 위치로 옮긴 뒤(옮기지 않아도 상관은 없다) .zip파일로 압축을 한다.
압축한 파일을 PC의 터미널 창에서 "curl -X POST -u <deployment_user> --data-binary @"<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy" 명령어를 입력한 뒤 cmd 창에서 위에서 설정한 password를 입력한다.

별다른 메세지가 없다면 업로드에 성공한 것이다.
패스워드는 cmd 창에 표시되지 않는다.
업로드에 대한 로그는 "curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments" 명령어를 통해 확인할 수 있다.

Rest API에 대한 자세한 정보 확인 👇
https://docs.microsoft.com/ko-kr/azure/app-service/deploy-zip?tabs=cli#deploy-zip-file-with-rest-apis

업로드를 완료했다면 리소스의 구성 > 일반 설정 > 시작 명령"java -jar /home/site/wwwroot/<업로드한 파일명>.jar --server.port=80" 을 입력하고 저장한다.
저장하면 리소스는 자동으로 재기동이 되고 리소스의 개요에서 확인할 수 있는 "url"로 request하면 200 OK response와 서버 코드에서 작성한 response 값을 받는 것을 확인할 수 있다.
(리소스 재기동 후 서버 실행까지는 길게는 몇 분까지도 걸릴 수 있다.)
이것까지 확인이 되면 Azure에 서버 배포가 완료된 것이다!

간단하니 천천히 따라하면 쉽게 배포를 마무리할 수 있다.
나처럼 개뻘짓만 안하면.....
추가적으로 FTP를 통해 .jar나 .war 파일을 서버에 업로드하는 것은 지양해야한다고 한다.

profile
무럭무럭 버섯농장

1개의 댓글

comment-user-thumbnail
2022년 2월 7일

좋은 정보 감사드립니다! powershell 열 때 스토리지를 만들라는데 여기서 소정 비용이 발생한다는 안내 문구가 있습니다. 이건 제공되는 크레딧에서 빠져나가는 것인가요??

답글 달기