Next.js로 만든 프로젝트는 Vercel을 사용하면 간단하게 배포할 수 있지만 (+ 자동으로 HTTPS, 국내 CDN이 적용된 상태로 배포된다..!) 배포 제한 사항에 걸린다거나(무료 사용자 기준으로 메모리 제한, 하루 당 빌드 개수 제한, Serverless Functions 관련 제한 등이 있다) 좀 더 커스텀 하고 싶다면 자유도가 높은 AWS를 선택할 수 있다.
인스턴스 시작
클릭Ubuntu Server 18.04 LTS
를 많이 선택하던데 이제는 사라진 것인지 찾을 수가 없어 Ubuntu Server 20.04 LTS
버전을 선택했다. 새 키 페어 생성
키 페어 생성
을 클릭하면 .pem 파일이 다운로드된다.
이후 권한 설정 등에 필요하므로 쉽게 찾을 수 있는 경로에 두는 것이 좋음.
인스턴스 시작
클릭연결
클릭chmod 400 .pem 파일 경로
chmod 400 pikadev1771.pem
의 의미 : pikadev1771.pem
파일을 나에게만 읽기 권한을 부여키 페어 파일 권한을 설정하지 않은 경우 권한이 너무 open되어 있다는 경고 메시지와 함꼐 접속이 거절된다.
이제 SSH 명령어를 통해 인스턴스에 접속할 수 있다.
yes
입력sudo apt-get update
- apt(advanced package tool) : Ubuntu에서 사용하는 패키지 관리 시스템.
- 패키지를 install, upgrade, clean할 때는 apt-get을 사용한다.
- 새로운 패키지를 찾고자 할 때는 apt-cache를 사용한다.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node 또는 nvm install --lts
sudo npm install -g yarn
HTTPS로 주소 복사
git clone 복사해 온 주소
clone 받아온 프로젝트 폴더로 이동
yarn 패키지 매니저 설치
curl -o- -L https://yarnpkg.com/install.sh | bash
package.json에 명시돼있는 패키지 설치
yarn install
빌드
yarn build
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
서버 실행
yarn start
애플리케이션 접속
: EC2 인스턴스 콘솔에 나와있는 자동 할당된 IP 주소
또는퍼블릭 IPv4 DNS
로 배포한 애플리케이션에 접속할 수 있다.
✅ 이렇게 열린 서버는 SSH 연결을 종료하는 순간 함께 종료된다. 서비스가 계속해서 열려있기를 원한다면 무중단 배포가 필요하다.
PM2 : Node.js의 프로세스 매니저. 애플리케이션을 온라인으로 관리하고 유지하는 데 도움을 준다.
PM2 global로 설치
npm install pm2 -g
PM2 실행 (해당 프로젝트 폴더 위치에서 실행)
pm2 start yarn -- start
✅ 이제 EC2 인스턴스가 꺼지지 않는 이상, SSH 연결을 종료해도 서비스가 중단되지 않는다.