웹서버 구성
서버 : Oracle Cloud VM 무료티어 (VM.Standard.E2.1.Micro, 지역 Seoul)
운영체제 : CentOS 7
웹구성 : React <=(GraphQL) => NestJS <=(TypeORM)=> MariaDB
사용 언어 : TypeScript
시작하기 전에
# 패키지 업데이트
sudo yum update -y
# curl 설치
sudo yum install -y curl
# zsh, ohmyzsh 설치
sudo yum install -y zsh
sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Node.js 14 버전 설치
# https://github.com/nodesource/distributions/blob/master/README.md 참조
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum install -y nodejs
# yarn 패키지 매니저 설치
sudo npm install -g yarn
# NestJS 설치
sudo npm install -g @nestjs/cli
가상 클라우드 네트워크에서 80, 443, 8080 포트 오픈
인스턴스 안에서 방화벽 열기 (RHEL8부터 iptables가 아닌 firewalld로 변경됨)
# 포트 오픈
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
# ifconfig로 이더넷 이름 확인
sudo firewall-cmd --zone=public --change-interface=이더넷 이름
# firewalld 설정
sudo firewall-cmd --reload
# zone 설정 확인
sudo firewall-cmd --list-all
# 활성화된 zone 확인
sudo firewall-cmd --get-active-zone
NestJS 웹서버 테스트
nest new web
# npm/yarn 중 yarn 선택
# 포트 수정
vi src/main.ts
# 3000을 8080으로 수정
# NestJS 시작
yarn start
# 자기 IP 주소와 포트번호로 접속 후 Hello World! 뜨는지 확인
# ex) 123.45.67.89:8080
PM2 설치
# PM2 설치
sudo yarn global add pm2
# nest라는 이름으로 yarn start 실행
# yarn 명령어를 pm2로 실행
# --name nest : 이름은 nest로
# -- start : yarn 명령어의 매개변수로 전달
pm2 start yarn --name nest -- start
# 프로세스 목록 확인
pm2 list
# 프로세스 정지
pm2 stop nest
# 프로세스 종료
pm2 delete nest
프로세스을 조종하는 것은 이름을 줄 수도 id를 줄 수도 있는데, id로 컨트롤하는 것이 좋아보인다.
----------------------
기타 정보
무료티어 VM 인스턴스 인터넷 속도 측정
표기 대역폭 : 480.0 Mbit/s
실제 대역폭 : 45.08 Mbit/s (다운로드), 21.69 Mbit/s (업로드)
표기에 한참 못 미치는 속도이다.
VM.Standard.E2.4 인스턴스 테스트
표기 대역폭 : 5600 Mbit/s
실제 대역폭 : 285.93 Mbit/s (다운로드), 530.51 Mbit/s (업로드)
역시나 표기보다 한참 떨어지는 속도이다.
추후 지역을 변경해서 다시 테스트해볼 예정.
----------------------
메모리 사용량
CentOS 7 > Ubuntu 18.04 > Oracle Linux 8.3 (왼쪽이 가장 사용량이 적다)
기본 이미지는 Oracle Linux 7.9이지만 개인적으로 Oracle Linux 8을 선택했습니다. 하지만 메모리 사용량이 기본 50% 이상이라 CentOS 8과 7 버전으로 다시 테스트해본 결과 CentOS 8은 약 40~50%로 오라클 리눅스 8보다는 다소 나은 메모리 사용량을 보여주었습니다 CentOS 7은 그보다 매우 나은 약 30%의 메모리 사용량을 보여주었습니다.
1GB라는 한정적인 메모리 용량에서는 CentOS 7이 나을 것으로 예상됩니다.
우분투 18.04의 경우 (Minimal 버전이 아닙니다!) 대략 35~40%로 CentOS 7보다는 메모리 사용량이 약간 많습니다.
최근댓글