Azure(애저)와 GCP는 각각 마이크로소프트와 구글에서 제공하는 IaaS이다.
즉 클라우드를 활용하여 간단하게 Spring Boot 서버 배포가 가능한데, 정석적인 방법은 아니지만... 아주 간단하게(야매로) 할 수 있는 방법을 서술하려고 한다.
먼저, GCP는 블로그(https://coding-is-fun.tistory.com/9)의 두 포스트 순서대로 따라하면 된다.
다만 해당 저자는 maven으로 이루어진 파일을 .jar로 만들어냈기 때문에 gradle은 다음과 같이 하면 된다.
GCP의 서버 설정이 다 완료되었다고 가정할 때, 위에 언급한 블로그처럼 단순히 VM 인스턴스에 SSH를 연결하여 그 창에서 바로 파일을 업로드할 수 있다.
하지만 Azure은 조금은 다른 방식을 사용해야 한다!
첫번째는 Azure App Service를 이용하는 것이다.
프로젝트가 담겨있는 Github Repository에 연결한 뒤 workflow를 자동으로 생성하여 배포까지 마칠 수 있다. 하지만 maven 기준이라 gradle은 직접 workflow를 수정해야한다. (나는 실패했음^^)
가장 간단한 방법이지만 오류가 많아 화가 치솟는 결과를 볼 수 있다.
따라서 내가 해결한 두번째 방법은 VM 인스턴스를 생성하여 그 서버에 git clone 후 .jar을 배포하는 것이다.
https://portal.azure.com 에 접속하여 VM 인스턴스(가상머신)를 생성해준다.
(과정 생략. 단, 글에서는 Centos7 기준으로 함.)
좌측 메뉴 중 설정>네트워킹 에 들어간 다음, 인바운드 보안 규칙 추가를 눌러 다음과 같이 설정한다.
다시 좌측 메뉴 중 설정>연결 에 들어간 다음, 3번과 4번을 참조하여
ssh -i privateKeyPath User@ipAddress
를 기억한다.
해당 페이지 상단에 Azure CLI 아이콘을 누른 뒤 Bash에 들어간다.
(처음 이용한다면 누르고 확인 버튼을 눌러 생성하면 된다.)
하단에 Bash 창이 나타난다면, 2번의 코드를 붙인다.
(참고 : ctrl+c, ctrl+v가 되지않아 마우스 우클릭으로 복사, 붙여넣기를 해야한다.)
sudo passwd
를 입력하여 root 비밀번호를 생성해준 뒤,
su - root
를 입력하여 root 계정에 진입한다.
배포할 프로젝트의 Github Repository에 .jar 파일을 commit 후 pull request한다.
(사진에는 잘렸지만 .jar 파일 우클릭 후 Git -> Add 누르면 된다.)
해당 repository에 가서 code(초록색 아이콘)>HTTPS>링크 를 복사한다.
다시 Azure Bash로 돌아와 git clone 복사한주소
를 입력한다.
해당 Repository가 Private인 경우 Github의 계정과 비밀번호를 입력해야한다.
ll
으로 파일명을 확인하고, .jar파일이 있는 디렉토리로 cd
를 이용하여 이동한다.
which java
를 이용하여 java 파일이 어디있는지 확인하고,
만약 자바가 설치되어 있지 않으면 yum install java-버전 -y
으로 설치한 후 which java
를 다시 실행한다.
which java
를 통해 얻어낸 경로를 기억하고, 현재 경로(jar 파일이 있는 곳)에서
java가있는경로 -jar 파일이름.jar
으로 실행한다.
jar 파일이 실행되고 타 환경에서는 SSH의 ip주소:8080
로 접근할 수 있다!