[Azure, GCP] .jar 파일을 간단한 방법으로 배포하기

조오닭·2022년 5월 27일
0

Azure(애저)와 GCP는 각각 마이크로소프트와 구글에서 제공하는 IaaS이다.
즉 클라우드를 활용하여 간단하게 Spring Boot 서버 배포가 가능한데, 정석적인 방법은 아니지만... 아주 간단하게(야매로) 할 수 있는 방법을 서술하려고 한다.

먼저, GCP는 블로그(https://coding-is-fun.tistory.com/9)의 두 포스트 순서대로 따라하면 된다.
다만 해당 저자는 maven으로 이루어진 파일을 .jar로 만들어냈기 때문에 gradle은 다음과 같이 하면 된다.

  1. IntelliJ의 가장 오른쪽에 비치한 아이콘 'Gradle'을 클릭한다.
  2. Gradle 창이 나오면, Tasks > build 항목을 연다.
  3. bootJar을 더블클릭하여 실행한다. (밑에서 두번째에 있는 jar하면 안됨!!)
  4. 실행이 완료되면 프로젝트 폴더>build>libs에 .jar파일이 생성된다.

GCP의 서버 설정이 다 완료되었다고 가정할 때, 위에 언급한 블로그처럼 단순히 VM 인스턴스에 SSH를 연결하여 그 창에서 바로 파일을 업로드할 수 있다.
하지만 Azure은 조금은 다른 방식을 사용해야 한다!

첫번째는 Azure App Service를 이용하는 것이다.
프로젝트가 담겨있는 Github Repository에 연결한 뒤 workflow를 자동으로 생성하여 배포까지 마칠 수 있다. 하지만 maven 기준이라 gradle은 직접 workflow를 수정해야한다. (나는 실패했음^^)
가장 간단한 방법이지만 오류가 많아 화가 치솟는 결과를 볼 수 있다.

따라서 내가 해결한 두번째 방법은 VM 인스턴스를 생성하여 그 서버에 git clone 후 .jar을 배포하는 것이다.

  1. https://portal.azure.com 에 접속하여 VM 인스턴스(가상머신)를 생성해준다.
    (과정 생략. 단, 글에서는 Centos7 기준으로 함.)

  2. 좌측 메뉴 중 설정>네트워킹 에 들어간 다음, 인바운드 보안 규칙 추가를 눌러 다음과 같이 설정한다.

  3. 다시 좌측 메뉴 중 설정>연결 에 들어간 다음, 3번과 4번을 참조하여
    ssh -i privateKeyPath User@ipAddress 를 기억한다.

  4. 해당 페이지 상단에 Azure CLI 아이콘을 누른 뒤 Bash에 들어간다.
    (처음 이용한다면 누르고 확인 버튼을 눌러 생성하면 된다.)

  5. 하단에 Bash 창이 나타난다면, 2번의 코드를 붙인다.
    (참고 : ctrl+c, ctrl+v가 되지않아 마우스 우클릭으로 복사, 붙여넣기를 해야한다.)

  6. sudo passwd를 입력하여 root 비밀번호를 생성해준 뒤,
    su - root를 입력하여 root 계정에 진입한다.

  7. 배포할 프로젝트의 Github Repository에 .jar 파일을 commit 후 pull request한다.
    (사진에는 잘렸지만 .jar 파일 우클릭 후 Git -> Add 누르면 된다.)

  8. 해당 repository에 가서 code(초록색 아이콘)>HTTPS>링크 를 복사한다.

  9. 다시 Azure Bash로 돌아와 git clone 복사한주소 를 입력한다.
    해당 Repository가 Private인 경우 Github의 계정과 비밀번호를 입력해야한다.

  10. ll으로 파일명을 확인하고, .jar파일이 있는 디렉토리로 cd를 이용하여 이동한다.

  11. which java를 이용하여 java 파일이 어디있는지 확인하고,
    만약 자바가 설치되어 있지 않으면 yum install java-버전 -y으로 설치한 후 which java를 다시 실행한다.

  12. which java를 통해 얻어낸 경로를 기억하고, 현재 경로(jar 파일이 있는 곳)에서
    java가있는경로 -jar 파일이름.jar으로 실행한다.

  13. jar 파일이 실행되고 타 환경에서는 SSH의 ip주소:8080로 접근할 수 있다!

profile
백엔드 응애

0개의 댓글