NCloud 사용해서 Express 배포하기

krkorklo·2022년 10월 11일
1

Vanilla JS로 SPA 프론트 작업, express로 백엔드 작업을 진행했다. 서버에서 프론트 번들 파일을 사용해서 화면을 띄우기 때문에 express를 ncloud로 배포해야했다.

express 배포는 처음 해봐서,,, 아직도 잘 모르겠지만 2주 전에 배포 실패했다가 이제야 성공해서 까먹기 전에 기록을 남겨본다.

1. ACG 생성

ACG?

  • 서버 간 네트워크 접근 제어 및 관리를 할 수 있는 IP/Port 기반 필터링 방화벽 서비스
  • 서버 그룹에 대한 ACG 규칙을 설정하고 관리할 수 있음

NCloud에 로그인하고 우선 콘솔로 이동한다.
먼저 서버를 생성하기 위해서 Services 중 Server 탭으로 이동한다.

Server - ACG 탭으로 이동한다. ACG 생성을 선택한다.

원하는 이름으로 ACG를 생성한다.

ACG 설정에서 다음과 같이 규칙을 설정해준다. ssh 접속을 위해서 20번 port를, 서버 접속을 위해서 3000 port를 허용해준다.

SSH?

  • 원격으로 호스트에 접속하기 위해 사용되는 보안 프로토콜
  • Telnet의 보안상 취약점을 보완한 프로토콜
  • 대칭키, 비대칭키 방식을 사용해 안전하게 데이터를 주고받음

비대칭키 방식

  • 서로를 증명하기 위해 사용되는 방식
  • 공개키로 암호화, 개인키로 복호화
  • pub이 공개키, pem이 개인키 파일

대칭키 방식

  • 정보를 주고받기 위해 사용되는 방식

2. 서버 생성

Server에서 서버 생성을 진행한다.

필요한 옵션을 선택한다. 나는 가볍게 배포해보는 거였기 때문에 50GB, OS, Ubuntu, Standard를 선택했다.

서버 설정도 디폴트로 해주고 서버 이름만 원하는 이름으로 설정해준다. 서버를 실수로 반납하는 것을 막기 위해 반납 보호 설정을 하는 것이 권장된다고 한다.

다음으로 인증키를 생성해준다. 이름을 원하는대로 설정해주고 인증키 생성 및 저장을 선택해주면 ssh 접속을 위한 pem 파일이 저장된다. 절대 지우지 말기!

다음으로 보유중인 ACG 중 1에서 생성한 ACG를 선택한 후 서버 생성을 완료한다.

3. 관리자 비밀번호 확인

SSH 연결을 위해서는 관리자 비밀번호 확인이 필요하다. Server 탭에서 서버 관리 - 관리자 비밀번호 탭을 선택한다.

앞서 저장된 pem 파일을 업로드하고 비밀번호를 확인할 수 있다. 이 비밀번호 기억해두기!!

4. 포트 포워딩 설정

포트 포워딩?

  • 포트를 전달하는 것으로 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 전송해주는 것
  • 내 컴퓨터에서 해당 서버로 원격 접속하기 위한 역할

서버의 포트 포워딩 설정 탭으로 이동한다.

서버를 선택하고 외부 포트를 설정해준다. 접속할때 사용할 고유한 port를 설정해주고 적용한다.

터미널에서 ssh root@[포트포워딩의 서버 접속용 공인 IP] -p [포트포워딩 외부 포트]로 해당 서버에 성공적으로 원격 접속할 수 있다!!!
비밀번호는 관리자 비밀번호 확인에서 pem 파일 업로드하고 얻은 비밀번호를 입력하면 된다.

5. 공인 IP 신청

공인 IP?

  • 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소
  • 전세계에서 유일한 IP 주소를 가지고 다른 PC에서 접근이 가능하다.

Server - Public IP 탭에서 공인 IP 신청을 선택한다.

Zone을 서버의 Zone과 같이 설정하고 적용 서버를 내가 사용할 서버를 선택해준다.

그러면 공인 IP까지 생성 완료되고 서버 설정이 완료된다!

6. Express 서버 구동

ssh 접속한 서버에서 서버 구동을 위한 몇 가지 작업이 필요하다.

update

운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 최신으로 업데이트

apt-get update

git

배포한 파일들을 가져오기 위해 Github에 있는 파일들을 가져와야 한다.

apt-get install git # git 설치

node, npm

express 사용을 위해 node, npm 설치가 필요하다.

apt-get install curl # curl을 이용해서 node, npm 설치 필요
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt-get install -y nodejs
apt install npm

node 버전 업데이트를 위해 추가적인 설정이 필요하다.

sudo npm cache clean -f
sudo npm install -g n
sudo n lts

mysql

mysql을 사용해서 프로젝트를 진행했기 때문에 mysql도 설치해줘야 했다.

sudo apt install mysql-server
sudo mysql_secure_installation

필요한 DB와 테이블을 생성해서 사용 가능하다.

pm2

  • Nodejs 어플리케이션을 쉽게 관리할 수 있게 해주는 Process Manager
  • node 서버의 모니터링 및 무중단 배포를 가능하게 해준다.
npm install pm2@latest -g

git clone

우선 clone을 위해 token 설정이 필요하다. ID/Password 방식으로는 로그인할 수 없다.

github의 settings 탭으로 이동한다.

하단으로 쭈욱 내리다보면 Developer settings가 있다.

Personal access token 탭에서 Generate new token을 선택한다.

원하는대로 note와 유효기간을 작성하고 repo를 체크하면 token을 생성할 수 있다.

토큰을 생성하면 token을 복사할 수 있는데, 해당 토큰은 다시는 볼 수 없다고 하니 바로 복사해둔다.

그리고 clone을 진행하면 git user name과 password를 입력하라는 명령이 뜨고 내 git id, 앞서 복사한 token을 입력해주면 클론이 가능하다!

git config --global user.name [id]
git config --global user.password [token]

위 명령어로 로컬 컴퓨터 git에 name, password를 등록해주면 clone 시 name과 password를 물어보지 않는다.

express 실행

clone한 프로젝트로 이동해서 npm install을 진행해준다.

pm2 start app.js

위 명령어로 무중단으로 서비스를 이용할 수 있다.

  "scripts": {
    "deploy": "pm2 start app.js",  
    "stop": "pm2 kill",
  },

보통 이렇게 script로 추가해서 npm run deploy를 실행하는 것 같다.

이제 deploy를 실행하면 공인 IP로 접속이 가능하다.

배포 끝!


참고자료
https://kjwsx23.tistory.com/353
https://nemne.tistory.com/18
https://kimce.tistory.com/11
https://wotres.tistory.com/entry/Github-에러-해결법-Authentication-failed-for-use-a-personal-access-token-instead

0개의 댓글