-
[AWS/Lightsail] AWS에서 웹서비스 만들기 실습 - 5. 웹 서버 배포(NodeJS, Express)서버 관리/AWS & Lightsail 2021. 3. 27. 19:48반응형
https 적용까지 했으니, 웹서버를 올릴 차례이다. 이번 개인 프로젝트로 NodeJS, Express 기반의 웹 서비스를 개발할 목표를 가졌기 때문에, NodeJS + Express 기반으로 설명할 예정이다.
1. EC2에서 NodeJS 설치
SSL로 접속해, EC2에 NodeJS를 설치한다. 설치방법은 예전에 작성했던 포스트가 있다.
[nodeJS] 우분투에서 apt를 사용하여 최신버전 nodeJS 설치
우분투에서 바로 apt-get 명령어로 nodeJS 설치하면 최신버전이 아닌 v4.x 버전으로 설치된다. (Ubuntu Server 16.04 LTS 기준) 최신버전으로 설치하려면 아래 명령어로 실행해주면 된다. # Using Ubuntu curl -f..
ddochea.tistory.com
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 기준이기 때문에 실습시 약간 다를 수 있다.
express 웹 서비스 실행 명령어 예시 정상적으로 적용되었다면 아래와 같은 페이지를 볼 수 있다.
정상동작하는 express 웹 서비스 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 명령어로 확인해보자
서비스가 online 된 모습 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