Study/Node.js

[새싹x코딩온] 웹 개발자 부트캠프 과정 16주차 회고 | Nginx 이용해서 서버 배포하기

다니니니 2024. 8. 28. 22:27
728x90

1. 들어가며

  • Nginx 를 이용해서 서버 배포하기

2. Nginx

Nginx 는 비동기 이벤트 기반 구조의 웹 서버 프로그램이다.

Apache는 클라이언트 접속마다 프로세스 또는 스레드를 생성하는 구조라 요청이 많으면 자원이 많이 소모된다. 따라서 대량의 클라이언트가 접속했을 때는 한계가 있다.

Nginx는 event-driven 구조로 동작하는데, 따라서 Apache 보다 적은 자원으로 효율적인 운용이 가능하다.

 

Nginx 설치 및 설정

1. windows OS에서는 Putty, MAC OS에서는 터미널을 열어서 EC2 터미널에 접속한다. 

 

2. 패키지 저장소를 다음의 커맨드로 업데이트한다.

sudo apt-get update

3. Nginx 를 설치한다.

sudo apt-get install nginx

4. 설정 파일을 생성한다. (default 파일로 해도 될거 같음..)

sudo vi /etc/nginx/sites-available/test

위와 같이 생성하면 확장자가 .conf 로 된 것이 생성된다.

test는 원하는 설정 파일명으로 설정한다.

 

5. 다음 그림과 같이 설정 파일 안에 커맨드를 적어준다.

출처 : 코딩온 강의 교안

6. 다음의 커맨드로 심볼릭 파일을 생성한다.

sudo ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/test

그러면 sites-available 디렉토리에 있던 test.conf 파일이 sites-enabled 디렉토리에 생성된다.

sites-enabled 에 있는 파일로 실제로 활성화 된다.

제대로 생성되었는지 확인하려면 아래의 커맨드를 입력한다.

sudo nginx -t

 마지막 줄에 '파일명 is successful' 이 나오면 제대로 생성된 것이다.

 

7. nginx 를 재시작한다.

sudo systemctl restart nginx

8. node.js 로 프로젝트를 만들었기 때문에 node.js를 서버내에 설치한다.

curl -fsSL https://deb.nodesource,com/setup_lts.x | sudo -E bash

sudo apt-get install -y nodejs

9. 무중단 배포를 위해 pm2 를 설치한다.

sudo npm i -g pm2

10. 배포할 프로젝트가 있는 깃 저장소를 클론하고, npm install을 한다. 그 후, pm2 start index.js 로

프로젝트를 배포한다.

(만약 .env 를 사용한다면 .env 파일도 생성해준다)

 

※※참고

pm2 명령어

- pm2 상태 확인
pm2 status
- 재시작
pm2 restart id값
- 중지
pm2 stop id값
- 완전 중지
pm2 kill
- 로그 확인
pm2 log

 

 

결과

 

일단 테스트 파일을 배포하는데 성공했다.!

 

3. 마치며

전에 Apache로 배포했을 때는 파일질라를 이용해서 파일을 옮기면서 배포했는데 이번에 실습을 하면서

커맨드로 깃 저장소를 클론해서 배포를 해봤다.

뭔가 계속 CLI로 하니까 헷갈리기도 하지만 더 .. 뭔가 머릿속에 들어오는 느낌이다.

처음에 계속 502 Bad Gateway 오류가 떠서 왜 나만 이럴까.. 했는데

알고보니 내가 index.js 에서 오타를 내서 그런 것이었다!

배포 하는 방법에 대해서 더 잘 알게되서 나중에 사이드 프로젝트를 위의 방법을 이용해서 배포할 것이다.

 

4. Reference

1. 코딩온 강의 교안 및 실습

 

2. https://jammdev.tistory.com/217

 

[NGINX] NGINX 란?

1. nginx 란? nginx 는 경량 웹서버로 정적파일을 serving 하는 web server 또는 요청을 다른 서버로 전달하는 reverse proxy server 로 활용되어 was 의 부하를 줄이는 로드 밸런서로 사용할수도 있다. nginx 와 많

jammdev.tistory.com

 

3. https://bsssss.tistory.com/1053

 

Event Driven Architecture (이벤트 드리븐 아키텍처)란?

Event Driven Architecture란 MSA가 적용된 시스템을 보완하는 아키텍처로 Event Driven Architecture란 이벤트의 생산, 갑지, 소비 및 반응 또는 시스템 상태의 중대한 변화를 지원하는 소프트웨어 모델 또는

bsssss.tistory.com

 

4. https://medium.com/dtevangelist/event-driven-microservice-%EB%9E%80-54b4eaf7cc4a

 

Event Driven Microservice 란?

MicroService Architecture(MSA)는 loosely coupled를 기반으로 빠른 배포주기, 폴리글랏 프로그래밍, 관심사의 집중 등의 장점을 발휘해 Enterprise IT에서 가장 주목받고 있는 아키텍처 입니다. 또한, 분해된…

medium.com

 

728x90