Judaeng

GCP를 이용해 'Hello World!' 띄워보기 본문

DevOps/GCP

GCP를 이용해 'Hello World!' 띄워보기

Judaeng 2022. 1. 13. 21:53

GCP를 이용해서 hello world를 먼저 배포해보자.

구글에서 'GCP hello world 배포'를 검색해도 잘 정리되어있는 블로그가 없었던 것 같다.

그래서 나는 내가 처음부터 hello world를 배포하는 과정을 블로그에 정리해보려고 한다.

 

GCP를 이용해 hello world를 배포하는 과정 정리


1. 구글 클라우드 플랫폼 접속 및 로그인
2. 인스턴스 생성하기(Computing Engine)
3. SSH 옆에 브라우저 창 열기 클릭
4. Ubuntu 20.04 LTS OS 환경 설정해주기
5. 폴더 생성해서 npm 설치 후에 server.js 작성
6. node server.js 명령어를 통해 실행해보기
7. GCP 인스턴스 네트워크에서 default 클릭 후 방화벽 규칙 만들어주기
8. 그 이후 (GCP 외부 IP):3000 이런 식으로 페이지가 열리는지 확인
9. 'Hello World!'가 브라우저에 띄워지는 것을 확인하고 마무리.

 

 

 

구글 클라우드 플랫폼 접속 및 로그인

아래 사이트로 접속하여 GCP 무료로 시작하기를 클릭하자.

 

클라우드 컴퓨팅 서비스  |  Google Cloud

데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.

cloud.google.com

구글 로그인 및 GCP 무료 사용 버튼 클릭

Google 아이디가 필요하고, 12개월간 300$의 금액을 GCP는 무료로 이용이 가능하다.

생성하고자 하는 인스턴스(CPU1개, 4GB RAM, 20G 스토리지) 기준으로 24시간 기동 하면 10개월 정도 사용이 가능하다.

진행 과정(1)

동의 및 계속하기를 눌러 계속하자.

진행 과정(2)

나도 맨 처음 구글 서비스 중 Firebase를 이용할 때, 되게 까다롭고 귀찮았다.

하지만! 카드 등록을 해야 진행이 가능하기 때문에 해줘야 한다.

인스턴스가 가동되고 있지 않으면 비용이 발생하지 않고 유료 계정으로 직접 전환해야 비용이 청구된다고 한다.

(무료 평가판 종료 후 자동 청구되지 않는다고 한다. 자동가입을 방지하기 위함)

 

인스턴스 생성

화면 왼측 메뉴 => Computing Engine => VM인스턴스를 선택

Compute Engine 위치

이후의 화면에서 '만들기' 버튼을 클릭하여 인스턴스 생성 화면으로 진입한다.

인스턴스 생성

화면에 안 보이는 부분도 포함되어 있을 것이다. 그것은 이 악물고 무시해보자...😅

꼭 위에 이미지대로 설정하라는 것이 아니다. 나는 처음이기에 여러 블로그를 통해 부딪히면서 배웠다.

이 화면에서 나는 이렇게 설정을 했다. => 실습에 사용한 설정

이름: 인스턴스 이름을 정한다. (기본 설정)
지역: asia-northeast3 (서울), 영역은 아무거나
머신 계열: 일반 용도
머신 유형: e2-medium(vCPU 2개, 4GB 메모리)
컨테이너: 비활성화

부팅 디스크: Ubuntu, 버전은 Ubuntu 20.04 LTS, 균형 있는 영구 디스크, 10GB
ID 및 API 액세스: 액세스 범위:  기본 액세스 허용 => 모든 Cloud API에 대한 전체 액세스 허용 설정
방화벽: HTTP 트래픽 허용, HTTPS 트래픽 허용 둘 다 클릭

설정이 완료되었다면 만들기 버튼을 누르면 인스턴스가 생성된다. (잠깐의 소요시간 필요)

인스턴스 접속해보기

인스턴스 생성 후 브라우저 창에서 열기 클릭!

브라우저 창에서 열기를 통해 Ubuntu 20.04 LTS OS를 탑재한 인스턴스에 접근한다.

리눅스 터미널과 동일하며, 명령어를 통해 인스턴스를 제어할 수 있다.

인스턴스 접속

접속을 성공했다면, 이제부터는 인스턴스 안에 폴더를 하나 생성하고, 서버를 작성하고, 띄울 것이다.

GCP에 처음 접속했으니, pwd명령어로 경로를 확인해보자.

/home/ubuntu라고 나올 텐데 이게 최초 접속했을 때의 경로이다.

경로를 확인했다면 ls명령어로 아무것도 없는 것도 확인해보자.

없다면 이제부터 아래를 따라 해 보자.

sudo apt-get update
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g npm

apt는 리눅스의 advaned pakaging tool의 약자로 쉽게 말해 패키지 매니저이다.

우리 Node.js에서 npm으로 이것저것 의존성들을 설치하고, 삭제하고 업데이트하고 그런 일을 해주는 것이 npm이라면, 리눅스에서는 apt-get으로 패키지들을 관리한다.

apt-get update 명령어로 기본적으로 설치된 패키지들의 사용 가능한 새 버전과 그 리스트를 가져올 수 있다.

그다음 curl 명령어를 이용해 14.x 버전의 최신 node를 설치한다.

다른 방법도 있겠지만, 나도 다른 분의 블로그를 보고 그대로 따라한 것을 연습해본 것이다.

버전을 바꾸고 싶다면, 구글링을 통해 알아봐야 할 것 같다.😅

그다음 apt-get install -y nodejs를 하면 14.x 버전의 최신 node가 설치된다고 한다.

-y 옵션을 붙인 이유는 중간에 무엇을 설치할 것인데 몇 KB가 필요하다. 설치하시겠습니까? 하면

y나 n를 입력해야 하는데 어차피 설치하려고 한다면 y를 눌러야 하니까 자동으로 모든 질문에 y를 입력할 수 있도록 하기 위함이라고 한다.

여기까지 따라왔다면 node와 npm 버전 설치가 완료되었다.

 

그 이후 node와 npm 버전 설치까지 완료되었다면 아래를 따라 해 보자.

mkdir [folder_name] && cd [folder_name]
npm init -y
npm i express

folder_name은 만들고 싶은 폴더의 이름을 정해주면 된다.

그다음 npm init으로 node 프로젝트를 하나 생성하게 된다.

package.json에서 따로 설정해줄 것이 있다면 -y 옵션을 붙이지 말고 따로 실행해주면 된다.

express.js를 사용하기 위해 express를 설치하고, node_modules들까지 설치해주자.

다 설치되었다면 아래 코드를 작성해보자.

server.js

const express = require('express');
const app = express();
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

 

위에 코드까지 작성했다면 실행해보자.

node server.js

실행이 되었다면, VM 인스턴스 홈페이지에 내 서버에 대한 정보가 있을 텐데, 거기서 외부 IP를 복사해준다.

외부 IP는 인스턴스 속성에 보면 있다.

복사했다면 홈페이지에 이런 식으로 붙여준다. => (인스턴스 외부 IP):3000

저렇게 붙여주면 'Hello World!'라고 뜨는 것을 볼 수 없다.

🤷‍♀️ 뭐가 잘못이야...

아래처럼 '사이트에 연결할 수 없음'이 뜰 것이다. 왜냐하면 우리는 아직 방화벽 설정을 해주지 않았기 때문이다.

NO 방화벽 설정

GCP에서 서버를 구축하고 외부 인터넷 망을 통해서 해당 서버에 접속하는 경우 방화벽에서 특정 프로토콜과 포트를 허용해야 한다.

우리는 3000번 포트를 허용하기로 했으니, 방화벽 설정에서도 3000번을 허용해주면 된다.

AWS에도 방화벽 Inboond 규칙이 있는 것을 알고 있다면, 방화벽 설정을 해줘야만 외부에서 내부 서버로 접근 가능한 것을 볼 수 있다.

 

방화벽 설정하기

방화벽에서 포트를 열어주기 위해 설정을 시작해보자.

방화벽 사용 시 보통 특정 포트만 설정하여 열어주지만, 실습용으로 학습할 때는 전체 포트를 열기도 한다.

 

인스턴스 이름 클릭

네트워크에 있는 default 클릭

방화벽 규칙 => 방화벽 규칙 만들기

방화벽 규칙 만들기 클릭

방화벽 규칙 이름 및 설명 기입

이름 기입

설정 및 만들기

대상: 네트워크의 모든 인스턴스
프로토콜 및 포트: 모두 허용도 가능하지만, 우리는 3000 포트로 하기 위해 지정된 프로토콜 및 포트 클릭
소스 IP 범위: 0.0.0.0/0

설정 및 만들기

위처럼 설정이 끝났다면 '만들기'를 눌러 마무리!

끝났다면 다시 위로 가서 gcp 서버에 만들어놓은 코드를 실행해보자.

그리고 다시 '(외부 IP):3000' 이런 식으로 페이지에 접근해보자

그러면? 'Hello World!'가 짜잔! 하고 등장할 것이다ㅎㅎㅎㅎ🤗

Hello World!

 

이번 게시물을 만들기 위해 참고한 사이트

1. 위키 독스

2. BESPIN GLOBAL

3. 다른 사람의 블로그

'DevOps > GCP' 카테고리의 다른 글

GCP(Google Cloud Platform)란?  (0) 2022.01.13
Comments