본문 바로가기

Server

[Server] Node.js에서 Ec2서버와 Mongodb 연결하기

728x90

0. 터미널 접속하기 

 

✔︎mac

: Mac은 ssh가 있어서, 터미널 명령어로 바로 접근 가능

: 터미널 열기 (spotlight에 terminal 입력)

* spotlight 단축키 : command + space

 

sudo chmod 400 받은키페어를끌어다놓기
ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

예시는 다음과 같다.

ssh -i /path/my-key-pair.pem ubuntu@12.345.678.90

중간에 yes/no 입력하는 부분 나오면 yes 입력하고 enter

 

 

✔︎window

: window는 ssh가 없으므로, git bash라는 프로그램을 이용

: gitbash 실행하기

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

예시는 다음과 같다.

ssh -i /path/my-key-pair.pem ubuntu@12.345.678.90

중간에 yes/no 입력하는 부분 나오면 yes 입력하고 enter

 

 

 

1. node.js 설치하기

(복붙하면 바로 실행됨 걱정x, 중간에 멈추고 sudo apt-get install -y nodejs 나오면 enter 한 번 눌러주면 됨)

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

 설치확인

node -v
npm -v

 

 

2. mongoDB 설치하기 (mongoDB 5.0: 220325 기준 최신 안정화 버전)

(복붙하면 바로 실행됨 걱정x, 중간에 멈추고 sudo apt-get install -y mongodb-org 나오면 enter 한 번 눌러주면 됨)

 

❗️ubuntu 버전 확인 후 (ubuntu 18.04 or ubuntu 20.04) 맞는 버전으로 설치

* ubuntu 버전 확인방법

cat /etc/issue

 

✔︎ ubuntu 18.04 버전 

* 이전 게시물에서 이어서 하는 경우 ubuntu 버전을 18.04로 설치했기 때문에 해당 버전으로 설치하면 됨

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

sudo apt-get update

sudo apt-get install -y mongodb-org

 

✔︎ ubuntu 20.04 버전

wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update

sudo apt-get install -y mongodb-org

 

설치확인 (아무것도 안 뜨면 성공)

sudo service mongod start

 

 

3. mongoDB 접속 계정 생성하기

방금 만든 mongoDB를 외부에 열어주기 전에, 접속에 필요한 아이디와 비밀번호를 세팅하기. 세팅 안 하면 누구나 열어볼 수 있음.

mongo

 

❗️ 1번 방법, 2번 방법 중 하나로만 원하는 방법으로 생성하기

(6.에서 프로젝트 몽고디비 주소 변경하는 방법이 조금 다름)

 

1번 방법: admin(최고 관리자)로만 사용하기 

# admin(최고 관리자) 등록
use admin;

# 계정 생성하기
db.createUser({user: "test", pwd:"test", roles:["root"]});

 

2번 방법 : 세부 관리자 사용하기 (원하는 db에 따로 권한을 주기)

예시 설명 : 최고관리자 admin 등록하고 나서 권한이 생기면 -> 세부관리자 hello 등록

# admin(최고 관리자) 등록
use admin;

# 계정 생성하기
db.createUser({user: "test", pwd:"test", roles:["root"]});
# 원하는 서버이름 적기
use hello;

# 계정 생성하기
db.createUser({user: "test", pwd:"test", roles:["dbOwner"]});

 

 

계정 생성 확인해보기 (정상적으로 들어갔는지)

# 생성된 계정이 권한 확인이 가능한 상태인지 확인 (정상적으로 처리되면 1 리턴됨)
db.auth("아이디", "비밀번호")

# 계정 권한 확인
db.getUsers();

 

계정 생성 완료 되었으면 나가기

# 나오기
exit

# MongoDB 재시작
sudo service mongod restart

 

 

4. mongoDB 외부에 열어주기 (권한 설정)

sudo vi /etc/mongod.conf

# sudo: 관리자(SuperUser) 권한으로 다음을 실행
# => "관리자 권한으로 /etc 폴더 아래 mongod.conf 파일을 Vim으로 켜줘!"라는 뜻

입력하려면 i 누르고 키보드 방향키로 이동하면서 수정한다.

다음과 같은 내용을

아래와 같이 바꿔준다.

❗️0.0.0.0 확인, # 뺐는지 확인, 스펠링 확인!!! 오류의 주범!!!!

authorization: enabled

 

# 내용 저장하고 에디터 종료하기. esc 누르고 다음 입력.
:wq

# 재시작
sudo service mongod restart

 

5. 서버 연결되는 지 중간에 확인하기

 

EC2 인바운드 규칙을 추가하지 않으면 서버연결, 디비연결 통로가 막혀있다.

따라서 인바운드 규칙을 먼저 추가해주어야한다.

 

✔︎  인바운드 규칙 추가

 

EC2 로그인, 인스턴스 페이지 이동

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Instances: 

 

보안그룹 클릭

 

인바운드 규칙 편집 클릭

사용자 지정 TCP 27017 Anywhere-IPv4 추가

HTTP Anywhere-IPv4 추가

 

 

통로를 열어주었다면, 다시 터미널로 이동해서 내 프로젝트 파일을 실행하기

<터미널로 이동>

 

✔︎ git clone 내 깃허브 레파지토리 주소 입력 enter

git clone https://github.com/account/test.git

 

✔︎ cd 폴더이름(레파지토리 이름) enter

* 위에서 클론하고 나서 생긴 폴더 이름임

cd test

 

✔︎ npm i 

npm i

 

✔︎ 포트 포워딩 터미널에 입력

 

❗️ 해당하는 인스턴스 유형에 따라 둘 중 하나 입력하기

 

* 인스턴스 유형 t2(t2.micro, t2.small)로 선택했을 경우

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

 

* 인스턴스 유형 t3로 선택했을 경우

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

 

 

✔︎ node app.js (node.js 기본 파일 실행)

node app.js

 

 

<프로젝트 폴더로 이동>

6.  내 프로젝트 폴더의 mongodb 주소를 다음과 같이 변경해줌.

 

❗️ 3. 에서 했던 방법에 따라서 둘 중에 해당되는 것으로 바꾸면 됨.

 

(1) 3. 에서 1번 방법으로 했을 때 (admin)

const connect = () => {
    mongoose.connect('mongodb://test:test@localhost:27017/admin',
    {
        dbName:"hello",
    }
     ).catch((err) => console.log(err));
};

(2) 3. 에서 2번 방법으로 했을 때 (세부 관리자)

const connect = () => {
    mongoose.connect('mongodb://test:test@localhost:27017/hello')
    .catch((err) => console.log(err));
};

 

7. robo3T 켜기

- 노트북 두개 모양 클릭하기

- create 누르기

connection 정보 다음과 같이 작성

 

상단 Authentication 탭을 클릭합니다.

  1. Perform authentication 체크박스를 클릭
  2. 생성한 계정의 아이디와 비밀번호를 입력하고 좌측 하단 Test 눌러서 초록불 뜨나 확인
  3. 'save'를 클릭

❗️ 3. 에서 했던 방법에 따라서 둘 중에 해당되는 것으로 바꾸면 됨.

 

(1) 3. 에서 1번 방법으로 했을 때 (admin)

 

(2) 3. 에서 2번 방법으로 했을 때 (세부 관리자)

 

 

 

 

 

 

참고자료

노드js 설치

몽고디비 설치

728x90