노드 입문 주차에 들어서 개인과제를 완성하고 AWS EC2를 이용해 배포를 하였다. 그 과정을 작성하려한다.
위에있는 인스턴스 시작을 눌러 새로운 인스턴스를 생성해 준다.
ubuntu로 설정해주고 프리티어가 있는 설정들로 세팅해준다.
새로운 키 페어를 생성해주면 해당 폴더에 .pem(.cer)이라는 키 페어가 생겼을 것이다.
🧐 AWS EC2에 접속하기
다운 받은 키페어 접근 권한을 바꿔줘야한다.
터미널을 열고
cd download
sudo chmod 400 test.cer
SSH로 접속하기
ssh -i 받은 키페어 ubuntu@AWS에 적힌 내 아이피
ssh -i test.cer ubuntu@13.209.41.102
그러면 이렇게 접속이 완료된다.
그 다음으로 EC2 인스턴스에 Node.js를 설치해야한다.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
어느 정도의 시간이 흐른뒤에 설치된 버전을 확인하려면 node -v 명령어로 확인 가능하다.
🧐 서버 프로그램 실행 및 웹 사이트 접속
깃허브에 있는 우리의 프로젝트를 클론해야한다.
프로젝트를 실행하기 위해 다음 순서로 작업한다.
- cd <프로젝트 명>
- sudo npm install -g yarn : yarn을 사용하기 위해 전역적으로 설치해 준다.
- yarn : 원격 저장소로부터 가져온 프로젝트의 의존성 및 패키지를 설치
- node app.js : 프로젝트를 실행
노드로 app.js를 실행 했는데 환경변수 gitinore파일에 있는 .env파일의 내용들이 불러오지 못하여서 에러가 발생 한것 같다.
우분투안에서 .env를 다시 설치해야한다.
방법은 두가지가 있다.
- nano .env 사용
nano .env
기존에 있던 .env의 내용을 그대로 옮겨준다.
저장하고 나온다 : ^x(ctrl + x) 누르기 => y 누르기 => 엔터
그리고 다시 node app.js 명령어를 치면
정상적으로 에러없이 서버가 실행된다.
2. cat > .env 사용
cat > .env
이후 방법은 위와 동일하다.
prisma 설치
npx prisma generate
🧐 영원히 꺼지지 않는 서버 실행 프로그램, PM2
우리는 EC2인스턴스에 ssh 명령어로 접속한 상태이다. 이 접속이 끊기는 순간 웹 사이트의 접속은 불가능해 진다.
서버 컴퓨터는 항상 켜져 있어야 들어오는 요청을 처리하고 응답을 보낼 수 있기 때문에 항상 서버가 돌아가야 한다. 어떻게 이런 문제를 해결 할 수 있을까?
Node.js를 실행하고 관리하도록 만들어진 PM2를 이용해 문제를 해결 할 것이다.
PM2는 프로세스 매니징 도구로 Node.js를 편하게 관리할 수 있게 도와주는 라이브러리이다.
터미널을 종료하더라도 웹 서버가 실행될 수 있게 하거나 log정보들을 실시산으로 확인하여 현제 서버의 상황을 더욱 빠르고 명확하게 관리할 수 있다.
PM2설치
# Linux의 관리자 계정으로 전환
sudo -s
# pm2 라이브러리를 global로 설치
yarn global add pm2
pm2로 app.js실행
# pm2로 app.js파일을 실행
pm2 start app.js
pm2로 app.js 실행 종료
# pm2의 id가 0인 프로세스를 종료한다.
pm2 delete 0
🧐 인바운드 규칙 변경
통신이 가능한 IP를 가진 모든 기기는 포트(Port)라고 불리우는 데이터가 드나들 수 있는 통로가 있다.
우리가 작업한 포트를 다른 사람들이 자유롭게 드나들 수 있게 하려면 인바운 규칙을 이용해 작업한 포트의 번호에 맞춰 다시 설정해 주어야한다.
EC2 인스턴스에있는 보안 버튼을 클릭하고 인바운드 큐칙 편집으로 들어간다.
규칙 추가를 눌러 우리의 포트 번호를 적고 소스는 Anywhere-IPv4를 설정해준다.
배포한 우리의 작업물
퍼블릭 IPv4주소를 입력하고 :PORT번호를 입력하면 우리가 작업한 결과물이 배포된 것을 볼 수 있다.
'TIL' 카테고리의 다른 글
[TIL] SQL과 종류 (0) | 2024.01.25 |
---|---|
[TIL] 관계형 데이터 베이스 (RDB) (0) | 2024.01.24 |
[TIL] 웹과 HTTP의 동작 방식 (0) | 2024.01.18 |
[TIL] 비동기 프로그래밍 (0) | 2024.01.17 |
[TIL] 영화 검색 사이트 팀 프로젝트 회고 (0) | 2024.01.16 |
댓글