봇 개발이 모두 끝났다면 이제 봇을 돌려놓고 이용하면 된다. 하지만 개발자의 로컬 환경에서 봇을 계속 돌리려면 컴퓨터가 365일 내내 켜져있어야 한다. 이러한 불편함을 극복하기 위해 사람들은 "호스팅"이라 불리는 서비스를 이용하곤 한다.
필자도 봇 개발을 어느정도 마치고 호스팅을 위해 Heroku라는 사이트를 이용하려 했으나, 무료 호스팅 지원이 이미 종료되어 반드시 과금을 할 수밖에 없는 구조로 변해있었다. 때문에 다른 플랫폼을 찾아보았고, Google Cloud에서 무료로 서버를 돌려준다는 것을 알게 되어 공유차 추가로 글을 작성해보기로 했다.
https://cloud.google.com/
cloud.google.com
최초 가입시 $300의 무료 크레딧도 받을 수 있으니 일단 받아주면 혹시 모를 기습 결제에 방어막이 하나 생길 것이다. 물론 무료사양으로 구성한다면 결제가 발생할 일은 없다고 한다.
가상머신 만들기
google cloud console에 들어가서 프로젝트를 생성하고, 좌상단 메뉴에서 compute engine > vm 인스턴스를 만들어 줄 것이다.
인스턴스 이름은 자유롭게 정해주고, 리전은 us-west1이 그나마 괜찮다고 한다. 영역은 뭘 고르든 상관없다.
시리즈는 E2, 머신 유형은 e2-micro를 골라주자.
이제 부팅 디스크를 변경해줄 것인데, 무료 한도 내에서 최고 용량인 30GB를 입력해주고, 부팅 디스크 유형을 표준 영구 디스크로 변경해준다. 반드시 표준 영구 디스크를 선택해줘야 결제가 발생하지 않는다고 하니 유의하자.
운영체제는 본인에게 편한 운영체제와 버전을 골라주면 되는데, 필자는 Ubuntu 20.04 LTS를 골라줬다.
다음으로 방화벽 부분에서 HTTP와 HTTPS 트래픽을 모두 허용해주었다.
이제 만들기 버튼을 눌러준다. 월별 예상 가격에 적힌 금액이 실제로 결제되는 것은 아니고, 무료 등급 만족시 부과되지 않는다고 하니 안심하자.
대시보드에 가면 결제 예상 요금도 실시간으로 확인할 수 있다.
이제 VM 인스턴스에서 SSH 버튼을 눌러 웹브라우저에서 바로 ssh로 접속해줄 것이다.
쨔쟌~ 성공적으로 ssh 접속에 성공해서 터미널창이 떴다. 이제 몇 가지 세팅을 해 주고 우리의 프로젝트 파일을 불러와서 봇을 돌리면 된다.
환경 세팅하기
먼저 각종 환경설정을 새로 해 줘야 한다. 프로젝트 파일을 불러와서 실행하려 했지만 아무 것도 깔려 있지 않은 것을 확인할 수 있었다.
먼저 nvm(Node Version Manager)을 설치해주자. 바로 node.js를 설치해도 되지만, 버전 이슈가 발생해 결국 버전 업데이트를 위해 nvm을 설치해야 했다.
아래 명령들을 순서대로 입력해주자.
sudo apt update
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
source ~/.bashrc
이제 아래 명령어를 이용하면 설치 가능한 node.js 버전 목록을 확인할 수 있다.
nvm list-remote
본인의 로컬 환경에 설치된 node.js의 버전을 확인하고 그에 맞는 버전을 설치하는 것을 추천한다. node -v 명령어로 버전 확인이 가능하니 참고하자.
node.js 설치가 끝났다면 npm도 받아주도록 하자.
sudo apt install npm
이제 프로젝트 파일을 옮기기 위해서 git도 설치해줄 것이다.
sudo apt install git
마지막으로 우리가 터미널창을 닫았을 때에도 봇이 돌아가도록 해주기 위해 tmux를 설치해주자.
sudo apt-get install tmux
프로젝트 파일 불러오기
이제 Github을 이용해서 프로젝트 파일을 가져와주자. 먼저 git repository를 생성해주고, 로컬 개발환경에서 git repository를 연동해준 다음 commit - push 순으로 레포지토리에 프로젝트 파일을 올려준다. (혹시 방법을 모른다면 구글에 "깃허브 파일 업로드"를 검색해보자)
이제 ssh 터미널창으로 넘어와서 아래 명령어를 이용해서 프로젝트 파일을 불러와준다. "repo-url"에는 본인의 깃 레포지토리 주소를 붙여넣어주면 된다.
git clone "repo-url"
git username과 token을 이용한 로그인 절차를 마치고 나서 ls 명령어를 쳐보면 성공적으로 파일을 불러온 것을 확인할 수 있을 것이다.
필자는 .gitignore에서 .env 파일과 node_modules 파일이 레포지토리에 연동되지 않도록 했는데, 원래 그런건지 이 때문인지 설치한 라이브러리들을 일일히 다시 설치해줘야 했다. npm i 명령어를 이용해서 하나씩 설치해주자.
npm i discord.js
npm i djs-commander
npm i dotenv
npm i axios
npm i cheerio
npm i mongoose
마지막으로 tmux 명령어를 입력해주면 쉘창 아래쪽 부분이 초록색으로 변한 것을 확인할 수 있을 것이다. 이 상태에서 node index.js 명령어를 입력해주면 봇이 실행되고, 창을 닫아도 유지된다.
다시 접속한 후 봇을 종료하고 싶으면 tmux ls 명령어로 현재 실행중인 tmux 세션 목록을 가져온 후 가장 처음에 나오는 세션 이름(아마도 0일 것이다)을 확인한 다음 아래 명령어로 다시 해당 세션에 접속해서 ^C를 입력해주면 된다.
tmux attach-session -t 0
디스코드 봇 24시간 작동시키기 성공~!
tmux나 깃 사용법은 따로 알아두는 걸 추천한다. 특히 git은 알아두면 두고두고 편하게 이용할 수 있을 것이다.
'Node.js > Discord.js' 카테고리의 다른 글
Discord.js로 메이플스토리 디스코드 봇 만들기 (7) -완- (0) | 2023.08.28 |
---|---|
Discord.js로 메이플스토리 디스코드 봇 만들기 (6) (0) | 2023.08.27 |
Discord.js로 메이플스토리 디스코드 봇 만들기 (5) (0) | 2023.08.27 |
Discord.js로 메이플스토리 디스코드 봇 만들기 (4) (0) | 2023.08.26 |
Discord.js로 메이플스토리 디스코드 봇 만들기 (3) (0) | 2023.08.25 |