본문 바로가기

Frontend Study - 2/배포

AWS : EC2 프론트 배포 따라하기

1. AWS 로그인 / 서비스 - EC2 클릭

2. 인스턴스 시작 / Quick Start - Ubuntu, 프리티어 사용 가능.

3. 인스턴스 유형 : t2.micro (프리티어)

4. 키페어 : 키페어 생성 (ex) turtlehome) , 다운로드 되는 파일 따로 저장해두기 한번만 다운로드 가능.

5. 네트워크 설정 : 기본값으로 설정 / 보안그룹 생성 : 보안그룹규칙 추가 - 포트범위 8,000 / 소스유형 위치 무관

6. 스토리지 구성 : 8gb / gp2, 8gb 넘어갈 시에 비용이 발생된다.

7. 고급 세부 정보 - 종료방식 중지 / 종료방지 활성화

8. 4번에서 다운로드 된 파일 터미널로 접근해서 권한 수정 chmod 400 turtlehome.pem

9.  그 다음 접속하기 ssh -i turtlehome.pem ubuntu@13.57.246.166  (인스턴스 클릭했을 때 나오는 public IP)

 

여기까지 했는데  port 22: Operation timed out 에러가 떴다.

해결법 : 

 

10. 접속을 하면 컴퓨터의 폴더로 들어온 것과 같은 의미.

11. 우분투 서버에 node 다시 깔기

curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

sudo apt-get update

sudo apt-get install nodejs

 

12. 프로젝트 clone 및 install

git clone 프로젝트_repo_주소 cd 프로젝트_repo_주소 npm install

 

13. build 모드로 전환

npm run build

 

14. express 설치해서 간단하게 웹서버

npm install express --save

 

15. 서버 코드 

vi server.js (서버.js 파일 수정하는 것. 이름은 원하는데로)

// insert 모드로 아래 코드 복사 붙여넣기

상황에 따라 아래 파일을 수정해서 쓰면된다.

const http = require("http");
const express = require("express");
const path = require("path");

const app = express();

const port = 8000;

app.get("/ping", (req, res) => {
    res.send("pong");
});

app.use(express.static(path.join(__dirname, "build")));

app.get("/*", (req, res) => {
res.set({
    "Cache-Control": "no-cache, no-store, must-revalidate",
    Pragma: "no-cache",
    Date: Date.now()
});
res.sendFile(path.join(__dirname, "build", "index.html"));
});

http.createServer(app).listen(port, () => {
  console.log(`app listening at ${port}`);
});

 

node server.js

 

계속 켜있게 하려면, 

node server.js &  <--- 붙이면 계속 켜져있는 상태가 된다.