나중에 배포하는 방법을 잊어버릴까봐 기록하는 글입니다.
참고로 저는 맥 운영체제를 사용하고 있고, 이 글을 보시는 분들은 aws 회원가입이 완료된 상태라고 가정하고 진행하도록 하겠습니다.
웹 서버 배포하기
인스턴스 생성하기
콘솔로 로그인 후, 검색창에 EC2를 검색하여 서비스에 있는 EC2대시보드에 들어갑니다.
리전이 자신과 가장 가까운 지역으로 설정되어 있는 것을 확인하고, 중앙의 주황색 인스턴스 시작 버튼을 눌러주세요.
이름에 웹 서버 이름을 작성하시고, Quick Start에 우분투를 선택합니다. 우분투를 선택한 이유는 프리티어 계정도 사용할 수 있기 때문입니다.
밑에 키 페어 로그인에서 새로운 키 페어 만들기를 선택하고, 키 페어 이름을 지정 후 만들어주세요.
그리고 나서 아무 설정도 건드리지 않고, 오른쪽의 인스턴스 시작 버튼을 클릭합니다.
이 화면이 나오면 성공입니다.
인스턴스를 클릭하여 인스턴스 세부 정보를 확인합니다.
이 창에서 중앙 위쪽의 퍼블릭 IPv4 주소를 확인해주세요
우분투 서버 설정
이제 키페어 파일(.pem)이 저장된 디렉토리에서 터미널을 켜주세요
cd [키페어가 저장된 디렉토리 경로]
이제 [] 대괄호 안의 내용은 여러분의 설정에 맞게 작성하시고, 대괄호는 생략해주세요
pem 파일의 권한을 설정합니다.
chmod 400 [키페어 이름].pem
설정하지 않을 시
...
can't be established
...
Permissions 0644 for 'my-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
이런 에러를 보실 수 있습니다.
그 후
ssh -i "[키페어 이름].pem" ubuntu@[IPv4 주소]
를 입력하시면
이런 웰컴 메세지를 보실 수 있습니다.
아래 네 개의 명령어를 통해 환경설정을 하겠습니다.
sudo apt update
sudo apt install nodejs
sudo apt install npm
sudo npm install -g yarn
그리고 배포할 서버의 리포지토리를 클론하겠습니다.
git clone [리포지토리 url]
yarn add or npm install
클론한 리포지토리로 이동한 뒤,
사용된 npm을 install 합니다.
cd [리포지토리]
rm -rf node_modules package-lock.json
npm install
Nodejs SyntaxError: Unexpected token '('
저는 mysql2 모듈을 다운로드 하고 저런 에러 때문에 엄청난 삽질을 하게 되었는데요...
npm uninstall mysql2
npm install mysql2@3.0.0
다시 mysql2 3.0.0버전을 설치하니 되더라고요!!
물론 mysql 연결 오류가 나긴 합니다만, Server is running on port 3000이 나온것으로 보아 서버는 실행이 된 것 같습니다.
포트 범위 설정하기
이제 다시 aws로 돌아와 네트워키 밒 보안 - 보안 그룹을 클릭
배포할 인스턴스의 보안 id를 클릭하고, 우측의 인바운드 규칙 편집을 클릭합니다.
그 후 다음과 같이 보안 설정을 합니다. 저는 포트 번호를 3000으로 하기 때문에 포트 범위를 3000으로 했습니다.
이렇게 저장한 후 우측 하단의 규칙 저장을 눌러주세요.
이제 [퍼블릭 IP 주소]:3000에 접속하면 자신의 서버가 실행되고 있는 것을 보실 수 있습니다.
저는 db 배포를 하지 않아서, 모든 api가 실패했지만, 그래도 포트로 접속할 수 있게 되었습니다.
무중단 배포 설정하기
이제 직접 node app.js 처럼 명령을 통해 서버를 실행시키지 않고
계속 서버가 배포된 상태일 수 있도록 설정하겠습니다.
무중단 배포를 위해 pm2 라이브러리를 설치하고
npm install -g pm2
pm2 로 app.js 를 실행시킵니다
pm2 start app.js
아래 명령을 통해 프로세스 리스트를 확인할 수 있습니다.
pm2 list
이 명령어에서 status 를 확인해주세요. status가 online이면 우분투를 닫아도 계속 서버가 실행됩니다.
pm2 show [name]
다음 게시물에서는 db 배포 후 노드 서버와 연동하는 방법에 대해 포스팅하겠습니다!
불친절하고 긴 글 읽어주셔서 감사합니다 😙
ref
https://velog.io/@rheey90/AWS-EC2-Node.js-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC
https://sunghee2.tistory.com/entry/AWS-EC2-%EC%83%9D%EC%84%B1%EA%B3%BC-Nodejs-%EB%B0%B0%ED%8F%AC
https://jayoung977.tistory.com/entry/Issue-%ED%95%B4%EA%B2%B0-Nodejs-SyntaxError-Unexpected-token
'Deploy > AWS' 카테고리의 다른 글
[AWS] AWS S3를 알아보고 버킷 만들어보기 (1) | 2024.04.27 |
---|---|
[AWS] RDS로 MySQL 배포하기 (1) | 2024.03.07 |
ssh 원격 접속할 때 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!) (0) | 2023.11.18 |
[AWS] EC2 인스턴스와 연결하여 RDS로 DB 배포하기 (0) | 2023.10.31 |
[AWS] Elastic Beanstalk로 서버 배포 했을 때 502 Bad Gateway 해결하기 (0) | 2023.07.23 |