망각에 재주 있는 나를 위해 기록하는 곳.

[AWS] Node.js 프로젝트 ec2에 배포하기ver.2 본문

AWS

[AWS] Node.js 프로젝트 ec2에 배포하기ver.2

baobabtree 2024. 7. 2. 21:45

한동안 ec2를 사용하지 않다가 얼마전에 프로젝트 하나를 새로 시작하면서 ec2를 하나 새로 올렸다.

예전에 이곳에 잘 기록을 해두었기 때문에 나는 문제없이 순서대로 진행했지만 막상 퍼블릭ip로 접속을 하면 접속이 되지 않았다. 이유는 아무리 찾아도 찾아지지 않았다.... 멘탈이 그대로 아웃되었고 구글링과 채찍pt를 뒤져가며 열심히 헤메고 또 헤메어서 연결에 성공했다. 

(난 아직도 멀었다는게 느껴진다......)

 

일단 여기에 간단하게 글로만 적어놔야겠다.

 

 

1. ec2 ubuntu버전 기본 설정으로 생성. (+키페어 설정은 이전과 동일) (+프로젝트 파일 업로드)

2. ec2에 키페어로 접속 후 sudo apt update

3. nvm설치

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash

 

4. nvm 환경설정 및 버전확인

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# nvm활성화
. ~/.nvm/nvm.sh

# nvm버전 확인
nvm --version

 

5. node.js 설치(LTS로 설치하는경우)

nvm install --lts

 

5-1. C컴파일러 설치 (node.js LTS설치하다가 발생한 에러)

sudo apt update
sudo apt install build-essential

*완료되면 다시 nvm install --lts 진행.

 

 

!! 이 이후에 pm2설치하고 ec2 보안그룹에서 80포트 설정하고 포트 리다이렉션을 진행 했지만 접속이 안됐다.

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

 

열심히 삽질한 결과 Nginx를 설치해서 해결했다.....(이유는 이제 찾아봐야한다.)

 

 

 

6. Nginx설치

sudo apt update
sudo apt install nginx

 

6-1. Nginx 설정 파일 편집

sudo nano /etc/nginx/sites-available/default
server {
     listen 80 default_server;
     listen [::]:80 default_server;

     server_name _;

     location / {     
          proxy_pass http://127.0.0.1:3000;       
          proxy_set_header Host $host;       
          proxy_set_header X-Real-IP $remote_addr;       
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       
          proxy_set_header X-Forwarded-Proto $scheme;   
     }
}

** 아래 설정들은 주석처리
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
try_files $uri $uri/ =404;

 

6-2. Nginx 문법 오류 체크

sudo nginx -t

 

6-3. Nginx 재시작

sudo systemctl restart nginx

 

7. (+Nginx 에러로그)

sudo tail -f /var/log/nginx/error.log