-
[AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 5. 웹 서버 배포(NodeJS, Express)서버 관리/AWS & Lightsail 2021. 3. 27. 19:48반응형
https 적용까지 했으니, 웹서버를 올릴 차례이다. 이번 개인 프로젝트로 NodeJS, Express 기반의 웹 서비스를 개발할 목표를 가졌기 때문에, NodeJS + Express 기반으로 설명할 예정이다.
1. EC2에서 NodeJS 설치
SSL로 접속해, EC2에 NodeJS를 설치한다. 설치방법은 예전에 작성했던 포스트가 있다.
2. git으로 소스코드 가져오기
NodeJS 소스코드를 github로 올린 후, EC2에서 git clone 명령어로 소스코드를 복사해온다. git은 EC2에 기본적으로 설치되어 있기 때문에 따로 설치과정이 필요없다.
git clone https://github.com/ddochea0314/nosuchuser.git
3. Nginx Config 수정하기
지난시간에 설정했던 /etc/nginx/sites-available/default 파일을 수정해야한다. 아래는 전체 default 파일 내용 중 https가 적용되는 server 설정에 대한 설정부분이다.
# Virtual Host configuration for example.com # # You can move that to a different file under sites-available/ and symlink that # to sites-enabled/ to enable it. # server { #listen 80 default_server; # 사용안함 #listen [::]:80 default_server; # 사용안함 listen 443 ssl default_server; # https 서비스를 위해 추가 listen [::]:443 ssl default_server; # https 서비스를 위해 추가 ssl_certificate /etc/letsencrypt/live/{도메인명}/fullchain.pem; # certbot으로 만든 인증서 풀체인파일(cert.pem + chain.pem) ssl_certificate_key /etc/letsencrypt/live/{도메인명}/privkey.pem; # certbot으로 만든 인증서 키파일 server_name nosearchuser.com www.nosearchuser.com; root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } }
여기서 location 부분의 try_files 를 지우고, proxy_pass 속성을 추가한다.
location / { proxy_pass http://localhost:3000; # 수정한 부분 }
proxy_pass 속성의 http://localhost 주소는 node + express기반 웹서비스를 처음 생성할 때 설정되는 기본 포트이다. 만약 수정했다면 이를 바꿔줘야 한다.
restart 명령어로 nginx 명령어를 재실행해주자.
sudo service nginx restart
테스트를 위해 소스코드 위치로 가서 명령어로 웹 서비스를 실행해보자. 예시의 스크린샷은 개인 개발 프로젝트인 nosuchuser 기준이기 때문에 실습시 약간 다를 수 있다.
정상적으로 적용되었다면 아래와 같은 페이지를 볼 수 있다.
4. PM2로 서비스화시키기
명령어로 직접 실행시켰기 때문에 CTRL+C 키를 누르거나, SSH 세션을 종료하면 웹 서비스가 닫히게 된다. 이를 방지하기위해 백그라운드 서비스형식으로 동작시키게 만들어야 하는데, nodeJS에선 이를 쉽게 설정할 수 있는 패키지들이 존재한다. 이번시간엔 pm2 라는 패키지로 실습해 보겠다.
EC2 인스턴스에 npm install 명령어로 pm2를 설치한다.
sudo npm i -g pm2
설치가 완료되었으면 pm2 명령어로 실행시킨다.
pm2 start dist/app.js
예시 소스가 typescript 에 dist 에 웹 서버 root 코드를 배포하기 때문에 dist/app.js 를 start 하도록 작성했다. 소스코드 구조가 다르다면 예시와 차이가 존재할 수 있다.
* 권한접근에 따라 sudo 명령어가 필요할 수 있다.
성공여부를 확인하기위해 pm2 list 명령어로 확인해보자
SSH 연결을 끊어도 웹 페이지가 잘 표시된다면 성공한 것이다.
반응형'서버 관리 > AWS & Lightsail' 카테고리의 다른 글
[AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 6. Certbot을 통한 인증서 업데이트 (1) 2021.06.17 [AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 4. Certbot 을 통한 인증서 발급 및 https 적용 (0) 2021.03.25 [AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 3. 보안설정 및 Nginx 설치 (0) 2021.03.25 [AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 2. Rout 53에서 구매한 도메인 연결 (0) 2021.03.24 [AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 1. EC2 인스턴스 및 IP 생성 (0) 2021.03.24