기타/서버

AWS EC2에 nodejs 배포 방법 : nginx, pm2

에잇콘텐츠 2021. 3. 28. 08:30

AWS EC2의 ubuntu, nginx 서버에 nodejs 코드를 배포하는 방법입니다.

 

1. AWS EC2 인스턴스 생성

 

AWS EC2 인스턴스 생성 방법

아마존의 클라우드 서비스인 AWS EC2 인스턴스 생성 방법을 소개 하겠습니다. 1. EC2에서 인스턴스 시작 버튼을 클릭 2. AMI 를 선택 - ubuntu server 18.04 LTS 3. 인스턴스 유형을 선택 - t2.micro 4. 인스턴..

sajupick.tistory.com

2. nodejs, nginx 설치

cd /var
sudo mkdir www
sudo chown ubuntu www
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install nginx
sudo systemctl start nginx- curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -v
sudo npm install -g pm2

https://torbjorn.tistory.com/527

 

Ubuntu 18.04 Node.js 설치 방법

(참고 링크) distro-stable version 설치 (apt) 간단하게 apt를 이용해 설치해보겠습니다. $ sudo apt update $ sudo apt install nodejs $ sudo apt install npm 그런데 버전이 너무 낮습니다. 최신 버전을 받기..

torbjorn.tistory.com

 

 

3. nodejs 코드 가져오기 

 cd /var/www
 git clone https://github.com/vipick/nodejs-example.git
 ls -ld ~/.config
 sudo chown -R $USER ~/.config
 cd /var/www/nodejs-example
 sudo npm install
 npm start

- 코드를 변경사항이 있으면 pm2 reload all 명령어를 실행합니다.

 

4. nginx 설정

cd /etc/nginx/sites-enabled

sudo rm default

sudo nano default

- 아래 내용을 default 에 저장

server {
	listen 80;
	listen [::]:80;
	access_log /var/log/nginx/reverse-access.log;
	error_log /var/log/nginx/reverse-error.log;
	location / {
		proxy_pass http://127.0.0.1:3000;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 포워딩 아이피
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-Proto $scheme; # 프로토콜proxy_set_header X-NginX-Proxy true;
		proxy_buffering off;
		client_max_body_size 200M;
		proxy_redirect off;
	}
}

sudo nginx -t

sudo systemctl restart nginx

cd /var/log/nginx

vi reverse-access.log  : access 로그가 저장된 것을 확인 할 수 있습니다.

 

5. pm2 자동시작 설정

- pm2 는 nodejs 어플리케이션을 위한 process manager 입니다.

- 로컬 개발 환경에서는 nodejs 를 실행시키기 위해 nodemon을 사용하지 만 운영(production) 서버에서는 pm2 를 사용합니다.

- pm2 startup 은 EC2가 재부팅 시 자동으로 pm2를 실행시켜주는 명령어 입니다.

pm2 startup
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
pm2 save
sudo systemctl restart nginx

6. ubuntu 서버 한국 시간 설정

sudo timedatectl set-timezone 'Asia/Seoul'

date