-
Node.js 프로젝트 수동 배포기타 2023. 3. 27. 10:52
수동 배포하는 나의 모습 배포 자동화 전까지는 개인 프로젝트에서 수동 배포를 몇 번 반복해야 할 듯하여 기록해 놓는다.
1. EC2 서버 생성 및 환경 설정
# 운영체제에서 사용 가능한 패키지 정보 업데이트 $ sudo apt-get update # 노드 버전 관리자(nvm) 설치 $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash # nvm 활성화 $ . ~/.nvm/nvm.sh # node 특정버전 설치 $ nvm install <노드 버전> # node lts 버전 설치할 경우 $ nvm install --lts # 노드 설치 및 실행 여부 확인 $ node -e "console.log('Running Node.js ' + process.version)"
2. EC2 서버 인바운드 규칙 수정
3. Local 환경에서 node 프로젝트 빌드
$ npm run build
4. pacakge.json 파일과 빌드된 dist 폴더를 원격 서버(EC2)로 전송
# dist 폴더 옮기기 $ scp -i "<pem key 경로>" -r "<dist 폴더 절대 경로>" <계정>@<타겟서버 IP>:<폴더 옮길 경로> # package.json 파일 옮기기 $ scp -i "<pem key 경로>" "<package.json 파일 경로>" <계정>@<타겟서버 IP>:<파일 옮길 경로> # 디버깅 모드는 option -vvv 붙여서 실행 # ex)scp -vvv -i ~
scp는 ssh 기반으로 port 기본값이 22번이다. 만약 다른 포트 번호를 이용해 파일 전송을 하고 싶다면 -P옵션을 이용해 실행하면 된다.
5. 원격 서버에 접속하여 package.json에 명시된 패키지 설치
# 원격 서버 접속 $ ssh -i "<pem key 절대경로>" <계정>@<원격서버 주소> # package.json 파일이 있는 경로로 이동하여 패키지 설치 $ npm install
6. (생략 가능) 원격 서버에서 node 프로세스가 정상적으로 실행될 수 있는지 확인# 실행해보고 별다른 에러가 없다면 프로세스 종료한다. # 참고로 루트 파일은 dist 폴더 내에 있다. $ node <루트 파일>
패키지 설치가 잘못되었다던가 등의 문제로 node 프로세스가 동작하지 않을 수 있다. 이 때문에 개인적으로는 프로세스를 실행시키고 확인하는 편인데 이 과정은 생략해도 무방하다.
7. node 프로세스 백그라운드 실행
# forever 패키지 설치 npm install forever -g # node 프로세스 시작 forever start <루트 파일> # ex) forever start main.js # 프로세스 확인 forever list
추가적으로 알아볼 것
- nginx 설치 및 설정
- forever, pm2, nodemon 비교
참고 자료
- https://velog.io/@denver/NestJS-AWS-Ubuntu-%EB%B0%B0%ED%8F%AC
- https://stackoverflow.com/questions/23445639/forever-command-not-found
- https://ssdragon.tistory.com/60
- https://icarus8050.tistory.com/57
- https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html
'기타' 카테고리의 다른 글
2023년 회고 (0) 2023.12.31 퇴사한지 3개월이 훌쩍 지난 시점에서 쓰는 회고 (0) 2023.03.31 비인증 결제 백엔드 개발할 때 만난 이슈와 삽질 기록 (0) 2022.12.29 [AWS] Lambda + API Gateway 사용기 ☁️ (0) 2022.09.18 윈도우 프로세스 확인 및 강제 종료 명령어 (0) 2022.07.13