기타

aws EC2에 Node pm2 nginx 설치후 배포하기

호리둥절 2023. 8. 3. 13:17

aws ec2 생성하기

https://develop-const.tistory.com/40

 

aws ec2 서버 생성하기

aws ec2 인스턴스 생성해보기 0. 리전 선택 AWS 리전은 사용자의 데이터와 서비스의 가용성 및 성능을 최적화하기 위해 중요한 역할을 합니다. 사용자는 자신의 요구 사항과 지리적 위치에 따라 가

develop-const.tistory.com

aws ec2 접속하기

https://develop-const.tistory.com/41

 

aws 인스턴스 고정 IP (탄력적 IP) 생성하기

기존에 인스턴스를 만들지 않았더라면 아래글을 참고하여 인스턴스를 만들고 오는것을 추천드립니다 ! https://develop-const.tistory.com/40 aws ec2 서버 생성하기 aws ec2 인스턴스 생성해보기 0. 리전 선택

develop-const.tistory.com

위의 과정을 완료한후 우분투 서버로 들어와주세요

ssh -i 키파일명.pem ubuntu@퍼블릭_ip

1. ubuntu 기본 세팅하기

sudo apt-get update저장소의 패키지 목록을 업데이트하고, sudo apt-get upgrade시스템에 설치된 패키지를 새로운 버전으로 업그레이드합니다.

sudo apt-get update

sudo apt-get upgrade

2. node 설치하기

노드 버전 관리자 (Node Version Manager, NVM) 설치 (권장): NVM을 사용하면 다양한 Node.js 버전을 관리하고 손쉽게 전환할 수 있습니다.

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

//설치 버전 확인
nvm --verion

Node.js 설치 ( npm과 함께 설치됨)

//특정 버전 설치
 nvm install 18.17.0

//최신 버전 설치
nvm install node

//설치 확인
node -v
npm -v

3. pm2 설치하기

pm2는 Node.js 애플리케이션을 관리하고 실행하기 위한 프로세스 관리 도구입니다. PM2를 사용하면 애플리케이션을 백그라운드에서 실행하고, 로그를 관리하며, 자동으로 다시 시작하거나 확장하는 등의 작업을 수행할 수 있습니다. 즉 서버가 꺼지지않고 운영되도록 합니다.

 

우선  실행시킬 프로젝트가 없으니 pm2 전역에 설치하고 다음단계로 넘어가 주세요.

//pm2 전역에 설치하기
npm install -g pm2

//pm2로 nest js 백앤드 서버 실행하기
pm2 start dist/main.js

//pm2로 node js 백앤드 서버 실행하기
pm2 start app.js 

//실행 중인 프로세스 목록 확인
pm2 list

//프로세스 로그 확인
pm2 logs <앱 이름>

//프로세스 중지 및 삭제
pm2 stop <앱 이름>

//프로세스를 삭제
pm2 delete <앱 이름>

4. nginx 설치하기

Nginx(엔진엑스)는 웹 서버로서 다음과 같은 주요 특징을 가지고 있습니다:

  • 빠른 성능: Nginx는 빠른 속도와 높은 성능을 제공하여 웹 페이지 및 콘텐츠를 빠르게 전달할 수 있습니다.
  • 리버스 프록시: Nginx는 클라이언트 요청을 웹 애플리케이션 서버로 전달해주는 역할을 하는데, 이를 통해 보안과 성능을 향상시킬 수 있습니다.
  • 로드 밸런싱: 여러 대의 서버 사이에 요청을 분산하여 부하를 고르게 분담해주어 웹 사이트의 안정성과 성능을 개선할 수 있습니다.
  • 정적 파일 서빙: Nginx는 이미지, 스타일 시트, 자바스크립트와 같은 정적 파일을 효율적으로 제공해주어 웹 페이지 로딩 속도를 높일 수 있습니다.
  • SSL 및 TLS 지원: 보안을 강화하기 위해 HTTPS를 사용하여 암호화된 통신을 제공하며, SSL 인증서를 관리할 수 있습니다.
  • 간단한 설정: Nginx의 설정 파일은 직관적이고 간단하여 사용자가 쉽게 설정을 조작할 수 있습니다.
  • 가상 호스팅: 하나의 서버에서 여러 개의 도메인을 호스팅할 수 있어 여러 웹사이트를 동시에 운영할 수 있습니다.
  • 모듈 확장성: 다양한 모듈을 사용하여 Nginx의 기능을 확장하거나 맞춤 설정할 수 있습니다.

이러한 특징들로 Nginx는 높은 성능과 안정성을 제공하며, 웹 애플리케이션 및 서버 환경을 효과적으로 관리할 수 있습니다.

sudo apt-get install nginx

//설치 확인하기
nginx -v

nginx 실행시키기

cd /etc/nginx/
sudo service nginx start

http://<공개 아이피 주소> 로 접근하면 이렇게 nginx 페이지가 뜨는것을 볼수 있습니다. 만약에 안뜨는분은 보안그룹 설정에 80번 포트가 열려있는지 확인해주세요

5. 프로젝트 클론받기

프로젝트 클론받기전에 우분투 서버에 프로젝트 폴더를 만들어줍니다

cd /home/ubuntu

mkdir project

cd project

sudo git clone <클론받을 주소명>

아이디랑 비밀번호를 입력하면 클론이 완료됩니다 ls 명령어를 입력해 잘 받아졌는지 확인합니다.

package.json 파일에 정의된 종속성을 설치해주세요 

npm install

만약 퍼미션 관련해서 에러가 난다면 파일권한을 변경해주세요 ~

cd ..
sudo chmod -R 777 <프로젝트명>
cd <프로젝트명>

npm install

이제 서버를 실행시켜봅시다.

 npm run start

하지만 위의 방식으로 실행하면 터미널을 닫았을 때 서버도 종료 되기 때문에 pm2로 실행시켜 서버가 중단되지 않게 해줍니다.

 pm2 start dist/main.js <프로젝트명>

pm2 list 해보면 현재 실행되고 있는 서버 리스트를 볼수있습니다

 

저는 개발용 서버 포트를 3000 포트를 사용하기 때문에

http://<공개 아이피 주소>:3000으로 접근하시면 잘 뜨는것을 확인하실수 있을것입니다 ^^ !

 

만약 3000번 포트로 접속을 하였는데 접속이 안되는경우에 보안그룹에 인바운드 규칙에 3000번 포트를 열었는지 확인해보시길 바랍니다.

혹시나 모르는분들을 위해 나중에 보안그룹 설정하는법도 다뤄보겠습니다 ~

 

다음시간에는 스크립트 파일을 이용하여 자동배포하는법 , ssl 인증서 등록하는법 , 도메인 붙이는법을 배워볼태니 잘 따라와 주세요