AWS

AWS EC2 Linux 2003에 React 배포하기

심나라 2024. 3. 21. 15:29
728x90

 

React를 EC2에 배포하고 실행하기 전에 Node.js가 설치 되어있어야 합니다. 
Node.js가 설치되어 있지 않으면 링크를 참고하세요..

https://ksshim.tistory.com/146

 

AWS EC2 Linux 2003에 Node.js 설치

AWS EC2 인스턴스에 React를 배포하기 전에 Node.js 가 설치되어 있지 않으면 먼저 설치해야 합니다. 1. nvm 설치하기 $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash 2. nvm 명령어를 사용

ksshim.tistory.com

 

 

1. EC2에 Git 설치 및 설치된 버전 확인

$ sudo yum update // 초기에 package 들을 update 해준다.
$ sudo yum install git
$ git --version
git version 2.40.1



2. 프로젝트 소스를 저장할 디렉토리로 이동

$ pwd
/home/ec2-user/app



3. git clone 실행

$ git clone https://github.com/계정명/레포지토리명.git
Username for 'https://github.com': git계정
Password for 'https://git계정@github.com': git계정 비밀번호

정상적으로 수행되지 않으면 링크 참고하세요.
https://ksshim.tistory.com/142

 

AWS EC2 인스턴스에 SpringBoot 프로젝트 배포

ec2 서버에서 git에 있는 소스를 내려받은 후, gradlew를 이용해서 소스를 빌드하는 과정입니다. 1. EC2에 Git 설치 및 설치된 버전 확인 $ sudo yum update // 초기에 package 들을 update 해준다. $ sudo yum install g

ksshim.tistory.com

 

 

4. 프로젝트가 정상적으로 다운되었는지 확인
ll 명령어로 레포지토리명 디렉토리가 생성되었는지 확인

 


5. npm install 및 build 
내려받은 소스 디렉토리에서 lib를 설치 및 build를 합니다.

$ npm install
$ npm run build



6. 웹서버 설치하기
EC2에서 React를 실행하기 위해서 웹서버가 있어야 하는데 여기서는 Express를 사용하겠습니다.
express 설치

$ npm install express



7. server.js 파일 생성
내려받은 소스 루트 디렉토에서 server.js 파일을 생성합니다.

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

const app = express();

const port = 3000;

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}`);
});



8. 서버 실행

$ node server.js &

"app listening at 3000" 문구가 나오면 정상적으로 배포가 된 것입니다.

 


9. 배포스크립트 참고 (deploy.sh 파일)

#!/bin/bash
REPOSITORY=/home/ec2-user/app/front

echo "> git pull"
git pull

echo "> npm install"
npm install

echo "> npm build"
npm run build

echo "> check the currently running app PID"
CURRENT_PID=$(pgrep -f server)

echo "> currently running app PID : $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
    echo "> currently running app no";
else
    echo "> kill -15 $CURRENT_PID stop"
    kill -15 $CURRENT_PID
    sleep 5
fi

echo "> new app deploy"
node server.js &

 

728x90