Deploy/AWS

[AWS] EC2로 node.js 웹 서버 배포하기 / Nodejs SyntaxError: Unexpected token '(' 에러 해결

  • -
나중에 배포하는 방법을 잊어버릴까봐 기록하는 글입니다.

 

 

참고로 저는 맥 운영체제를 사용하고 있고, 이 글을 보시는 분들은 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

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.