AWS EC2 Instance 생성
1. EC2 서비스에서 인스턴스 시작 클릭
2. Ubuntu, Ubuntu Server 22.04 KTS(HVM), 64비트 선택
3. EC2 인스턴스 유형: 프리티어 사용가능이라 적혀있는 t2.micro 타입 선택
4. keypair 이름 지정 및 다운로드: 키페어유형 RSA, 프라이빗 키 파일 형식 .pem
인스턴스 보안그룹에 들어가 인바운드 규칙편집까지 같이 해주기
규칙추가 > 사용자 지정 TCP, 포트범위 지정(내 Node.js 서버 포트번호), 소스는 Anywhere-IPv4
네트워크 설정 - 퍼블릭 IP 자동할당 비활성화 ★ ★ ★ ★ ★ ★
AWS EC2 접속하기
Window의 경우 git bash라는 프로그램으로 접속
1. 리눅스 명령어 사용해 키페어가 있는 위치로 이동
ssh -i 키페어이름.pem ubuntu@AWS에 적힌 퍼블릭 IPv4 주소
Key fingerprint 관련 메시지 나올경우 Yes 입력
Welcome to Ubuntu 라는 메시지와 함께 AWS EC2 접속 성공하게 된다.
☘ 간단한 리눅스 명령어
ls: 내 위치의 모든 파일을 보여준다.
pwd: 내 위치(폴더의 경로)를 알려준다.
mkdir [폴더 이름]: 내 위치 아래에 새 폴더를 만든다.
cd [폴더 이름]: 나를 해당 폴더로 이동시킨다.
cd .. : 나를 현재 위치의 상위 폴더로 이동시킨다.
cp -r [복사할 파일/폴더] [붙여넣기 할 위치]: 복사 붙여넣기
rm -rf [지울 파일/폴더]: 지우기 (이 명령은 매우 위험합니다. 신중히 사용해주세요!)
# 명령어 사용 당시에만 관리자 권한이 부여됩니다.
sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
# 명령어 사용 이후 모든 명령이 관리자 권한으로 실행됩니다.
sudo su: 관리자 권한이 있는 계정으로 접속한다. (exit 입력하면 관리자 계정에서 로그아웃)
2. AWS EC2 Node.js 설치
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
Node.js v18을 설치해주는 명령어
# 설치된 Node.js 버전 확인하기
node -v
# 설치된 npm 버전 확인하기
npm -v
서버 프로그램 실행 및 웹사이트 접속
1. gitHub에 있는 Repository Clone 해오기
# 원격 저장소로 부터 코드 가져오기
git clone <Github Repository URL>
# 예시
git clone https://github.com/archepro84/nodejs-todo-list.git
2. 프로젝트 실행
1. `cd nodejs-todo-list` : 원격 저장소로부터 가져온 프로젝트로 이동합니다.
2. `sudo npm install -g yarn` : yarn을 사용하기 위해, 전역으로 yarn을 설치합니다.
3. `yarn` : 원격 저장소로 부터 가져온 프로젝트의 의존성 및 패키지를 설치합니다.
4. `node app.js` : 프로젝트를 실행합니다.
잠깐, 그 전에!!
만든 프로젝트에 .env파일이 있는경우에는 nano .env 를 통해 .env 파일을 만들어주고, 이전 프로젝트에서 env 파일 내용을 복사 붙여넣기 해준다. 그래야 프로그램이 돌아감~!
PM2로 서버실행하기
1. 관리자 계정으로 전환
# Linux의 관리자 계정으로 전환합니다.
sudo -s
2. yarn 으로 설치
# pm2 라이브러리를 global로 설치합니다.
yarn global add pm2
global 옵션은 특정 폴더나 프로젝트에 설치하겠다는것이 아닌 전역프로그램으로 설치하겠다는 의미이다.
3. pm2로 프로젝트 파일 실행
# pm2 로 app.js 파일을 실행합니다.
pm2 start app.js
# pm2의 id가 0인 프로세스를 종료합니다.
pm2 delete 0
# Nest 프로젝트 실행하기
pm2 start npm --name "my-app-name" -- start
이전 프로젝트에서 배포를 한적 있음에도 불구하고 다시 해보려니 시간이 오래 걸렸다 ^^;
다시 헤매는 일 없게 기록해두자!
'프로젝트' 카테고리의 다른 글
카카오 로그인/로그아웃 기능 개발(REST API) (0) | 2024.02.06 |
---|---|
Err#2 - 알면알수록 허무한 디버깅 (0) | 2024.02.05 |
API 명세서, ERD 작성하기 (0) | 2024.02.02 |
Err#1 - PrismaClientValidationError (0) | 2024.02.01 |
팀 프로젝트 발표 & 피드백 (1) | 2024.01.16 |