WIL(Weekly I Learned)

[JavaScript] 3천원으로 나만의 api 만들기 2 - lightsail 로 api 환경 셋팅

borobong230 2023. 12. 3. 00:22

지난번 간단한 api 를 만들어보았는데요!

 

https://borobong230.tistory.com/123

 

[JavaScript] 3천원으로 나만의 api 만들기 1

먼저 어떤 api를 만들지 결정합니다. 저는 운세를 봐주는 api 를 만들겁니다. 프로젝트 파일 생성 터미널 명령어 mkdir [my_project] cd my_project && code . /my_project 혹은 직접 만들어 주셔도 상관없습니다.

borobong230.tistory.com

 

현재는 로컬에서만 동작한다는 문제가 있습니다.

누구나 사용가능 하게 aws lightsail을 이용하여 만들어보겠습니다.

 

왜 lightsail인가요?

aws에서 서버를 띄울 수 있는 방법은 여러개가 있는데, 

대표적으로 ec2가 있습니다.

 

그럼 왜 ec2가 아니가 lightsail 을 사용하냐면, 바로 비용때문입니다.

 

ec2 는 요금 기준이 사용량이 아닌 서버 구동 시간입니다.

하지만 lightsail은 나의 사용량 기준으로 요금이 부과되기 때문에

24시간 계속 구동시키면서 가볍게 사용할 용도로는 lightsail에 이점이 많습니다.

 

만약에 프리티어사용이 가능하다면 1년동안은 무료이기 때문에 ec2로 셋팅하는 것도 좋은 방법입니다!

lightsail Instance 생성하기

1. aws 로그인 > lightsail > Create Instance

 

 

2. Linux/Unix > OS Only > Ubuntu

우분투 버전은 크게 상관없습니다. 저는 최신버전으로 진행하겠습니다!

 

 

3. ssh key-pair 생성 > Create New

 

 

4. 요금제 설정

저는 가장 싼 $ 3.5 요금제를 사용하겠습니다.

필요에 따라 요금제를 유동적으로 변경하셔도 좋습니다.

 

5. 생성

 

ubuntu 환경셋팅

1. 생성된 instance > Manage 

 

2. Networking 탭 설정

 

 

2-1 Attach static IP > Create and attach

이름은 본인이 편한걸로 설정해주세요!

 

2-2 3000번 포트 rule 추가

3000번 포트에 대한 접근 권한을 줍니다.

 

lighsail 인스턴스 실행

1. lightsail 인스턴스를 실행해줍니다.

 

2. nvm 설치

 

2-1 아래의 명령어를 통해 다양한 node 버전 설치 및 관리를 위한 nvm 설치를 합니다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

 

2-2 아래의 명령어를 통해 터미널 재시작 해줍니다

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

 

2-3 node 16버전을 설치해 줍니다.

nvm install 16

 

lightsail에 파일 업로드하기

파일을 업로드 하는 방법에는 여러가지가 있는데, 저는 git clone을 이용한 방법을 사용하겠습니다.

 

git clone [본인 레파지토리 주소]

 

 

lightsail에서 파일 실행하기

정상적으로 파일이 업로드가 되었다면

해당 파일에서 npm을 설치해줍니다.

npm install

 

그리고 명령어를 통해 api를 실행해줍니다.

node index.js

 

정상적으로 동작하는지 확인하기

해당 서버에 정상적으로 동작하는지 확인하기 위해서 

fetchTest를 진행해봅시다.

 

이전에 사용한 fetchTest.js 파일을 아래와 같이 수정해줍니다.

// 이전코드
fetch(`http://localhost:3000/fortune`)

// 변경 된 코드
fetch(`http://[나의 코드]:3000/fortune`)
// 변경된 전체 코드
import fetch from "node-fetch";

const fetchTest = () => {
  fetch(`http://[나의 ip]:3000/fortune`)
    .then((response) => response.json())
    .then((data) => {
      console.log("Answer:", data.fortune);
    })
    .catch((error) => console.error("Error:", error));
};

fetchTest();

 

위와 같이 실행하면 정상적으로 동작하는 걸 확인할 수 있습니다.

 

마무리

오늘은 localhost에서 동작시킨 api를 lightsail를 이용해서 서버에 구동시키는 작업을 했습니다.

하지만 아직 추가 해야할 작업이 많은데요!

(ip주소를 도메인으로 변경, 항상 켜져있는 상태 유지, 포트번호 리다이렉트...)

 

다음 글에서는 api를 항상 켜져있게 유지하는 방법을 알아보겠습니다.

 

https://borobong230.tistory.com/125

 

[JavaScript] 3천원으로 나만의 api 만들기 3 - pm2로 서버 계속 유지하기

지난번에 lightsail을 이용해서 api를 서버에 올리는 작업을 했습니다. https://borobong230.tistory.com/124 [JavaScript] 3천원으로 나만의 api 만들기 2 - lightsail 로 api 환경 셋팅 지난번 간단한 api 를 만들어보았

borobong230.tistory.com