먼저, 이 포스팅은 AWS에 하나 이상의 EC2 인스턴스를 생성 후, 보시기를 권장드립니다!

1. 먼저 터미널을 활용하여 우분투서버에 접속한다.

아래 명령어를 입력합니다.
ssh i- jungsw586-key.pem ubuntu@15.165.74.135

여기서 jungsw586-key.pem 은 인스턴스생성후 다운로드한 key파일 이름이다.

파일이있는 디렉토리에서 터미널을 실행하시면 위 명령처럼 파일명만 적으면 되지만, 다른 위치에서 실행하려면 key파일의 경로를 붙여주면 된다.

두번째 unbuntu@ 뒤에 붙은 IP주소는 생성한 인스턴스의 IP주소를 그대로 적어주면 된다.

위 커맨드를 시작하면, 아래와 같은 안내글이 나오는데 처음접속하는 IP주소이기 때문에 나름의 경고메시지로 알면된다. 무시하고 yes를 타이핑한후 엔터키를 치자

The authenticity of host '15.165.74.135 (15.165.74.135)' can't be established.
ECDSA key fingerprint is SHA256:Iaq5IsFYXn1MWr3DBH64twm+osLV7A09HSer0kWY17M.
Are you sure you want to continue connecting (yes/no)?

성공적으로 되었다면 터미널상에서 우분투@IP 를 확인할 수 있을 것이다.

2. node.js 설치

우분투서버에 접속한 상태에서 그대로 아래 코드들을 차례로 입력하여 환경세팅을 해준다.
sudo apt update
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

3. 접속한 우분투 서버에 deploy할 프로젝트를 git clone하기

설치가 되었다면 git clone 커맨드를 활용하여 deploy를 하고자 하는 프로젝트를 클론하자.

4. clone한 프로젝트 디렉토리에 npm 혹은 yarn 설치하기

클론한 프로젝트위치로 이동한 이후 npm 혹은 yarn 설치를 해줍니다.
-npm 설치
npm install
-yarn 설치
sudo apt-get install yarn

5. build 하기

-npm
npm run build
-yarn
yarn build
yarn build가 안된다면 앞에 sudo를 붙여서 다시해보자

6. sever.js 코드 추가하기

vim server.js
clone한 프로젝트 폴더 위치에서 위 커맨드를 입력하여 아래 코드를 입력한다.

const express = require('express');
const path = require('path');
const env = process.env.ENV;
const app = express();
app.get('/ping', function(req, res) {
  res.send('pong');
});
app.use('/', express.static(path.join(__dirname, 'build')));
app.get('/*', function (req, res) {
  res.set({
    "Cache-Control": "no-cache, no-store, must-revalidate",
    "Pragma": "no-cache",
    "Date": new Date()
  });
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(3000, () => {
  console.log('listening: ' + env);
});

위 코드 중 3000의 숫자는 포트를 의미하기에 각 생성한 인스턴스에 맞추어 작성해야한다.
위 코드 작성후
:wq 라고 차례로 입력한 후 엔터를 치면 코드가 반영이 된다.

7. Express 추가하기

-npm
npm install express
-yarn
yarn add express

8. deploy하기

위 express까지 마쳤다면 터미널에 아래 커맨드를 입력해보자
node server.js

혹시 listenin undefind 가 나왔다면, 브라우저에 주소창에 인스턴스 아이피와 :포트숫자를 붙여 접속해보자.
예시) http://13.209.85.225:3000/

나의 프로젝트가 웹브라우저에 잘나온다면 deploy 성공!