본문 바로가기
문제해결

NCloud로 서버 생성과 Mysql 연동 후 express 배포하기 - 2

by NEMNE 2021. 9. 23.

지난번에는 서버 생성과 기본적인 세팅 관련해서 글을 썼습니다. 이번 시간에는 어떻게 Express로 배포하고 mysql를 연동하는지에 대해 다뤄보려고 합니다.


목차

NCloud로 서버 생성과 Mysql 연동 후 express 배포하기 - 1

  1. ncloud 서버 생성
    • acg 설정
  2. 포트포워딩
  3. 공인 아이피 신청
  4. 원격 접속 및 설정
  5. git 설치
  6. node 설치
  7. pm2 설치
    • git clone
  8. mysql 설치

pm2 설치

우리가 알고 있는 node는 싱글 스레드로 유명합니다. 그래서 명확한 단점이 있는데 바로 서버가 쉽게 죽는다는 것입니다. 물론 다양한 해결법이 있지만 이를 적용하기에는 까다롭습니다. 다행스럽게도 이를 해결해주는 라이브러리가 있습니다. 바로 PM2입니다.

PM2를 통해 우리는 무중단으로 서비스를 운영할 수 있게 해 줍니다.

먼저 서버에서 npm install pm2@latest -g를 입력하여 전역으로 설치합니다.

이후 우리가 배포할 폴더 안에 있는 package.json를 별도의 script를 추가해줍니다.

  "scripts": {  
    "start": "nodemon app.js",  
    "deploy": "pm2 start app.js -n airbnb",  
    "stop": "pm2 kill -n airbnb",  
    "build:dev": "cross-env NODE\_ENV=development webpack",  
    "build": "cross-env NODE\_ENV=production webpack"  
  },

여기서 deploy는 서비스를 시작하는 script이고 stop은 작동 중이었던 서비스를 중지하는 script입니다. (deploy에서 -n 옵션은 name을 지정하는 옵션입니다.)

Git clone

그러면 이제 내 PC에 작업 한 저장소를 github에 올리고 서버로 가져오는 작업을 해보겠습니다.

그러나 publickey가 없기 때문에 원격 저장소에 접근할 수 없다고 합니다.

최근에 github 로그인 방식이 ssh로 바뀌어 서버에도 등록을 해줘야 합니다.

$ cd ~/.ssh

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 엔터
Enter passphrase (empty for no passphrase): 엔터
Enter same passphrase again: 엔터 누르기

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256: ~~~~~~~
The key's randomart image is:
...

그러면 id_rsa와 id_rsa.pub가 ~/.ssh에 생성이 됩니다.

cat id_rsa.pub를 입력하여 안에 있는 개인키를 복사해서 github settings -> SSH keys and GPG keys -> new SSH key에서 개인키를 붙여 넣습니다.

이후 다시 git clone을 해보면 정상적으로 동작하는 것을 알 수 있습니다.

이후에 npm run deploy를 입력하면 서비스가 정상적으로 동작됩니다.

mysql 설치

만약 mysql를 필요한 경우에는 서버에 mysql를 설치해줘야 합니다.

리눅스에서는 기본적으로 문자 인코딩 방식이 다르기 때문에 한글이 안 나올 수 있습니다. 그래서 별도의 설정부터 해줍니다.

$ sudo apt update

$ sudo apt install language-pack-ko
$ sudo locale-gen ko_KR.UTF-8
$ sudo update-locale LANG=ko_KR.UTF-8 LC_MESSAGES=POSIX

서버를 종료 후 locale를 입력해서 확인하면 다음과 같이 변한 것을 알 수 있습니다.

이후 mysql-server 설치를 위해 다음과 같은 명령어를 입력해줍니다.

$ sudo apt install mysql-server
$ sudo mysql_secure_installation

mysql_secure_installation에서 추가적인 옵션을 입력하면 mysql 설치가 완료했습니다.

서버 mysql에도 동일한 데이터베이스와 테이블을 생성하고 npm run deploy를 입력하면 서버가 정상적으로 동작하는 것을 알 수 있습니다.