잘못된 부분 지적 및 피드백은 큰 힘이 됩니다 😃


이번 포스팅에서는 EC2를 만들고, 이전 포스팅인 탄력적 IP 셋팅을 끝낸 상황을 가정하고 EC2에 접근해 간단한 셋팅, NginX 설치, Docker 설치, Docker 이미지를 pull 받아 MongoDB 컨테이너를 띄우고, 외부에서 해당 MongoDB에 접속하는 것까지 해보도록 하겠습니다 🧐

EC2 접근 🗒️

  • 접속하고 싶은 EC2 인스턴스 클릭 후, 연결 버튼을 클릭합니다.
  • SSH 클라이언트 탭에 나와 있는 것을 참고하여, 발급 받은 .pem key가 있는 경로로 이동 후,에 나와 있는 코드를 이용하면 접속이 가능합니다.

EC2 셋팅 🔎

시간 설정

sudo timedatectl set-timezone Asia/Seoul
date

작성하신 내용은 대부분 정확하지만, 조금 더 명확하고 쉽게 이해할 수 있도록 약간의 수정을 제안드립니다.

sources.list 파일 수정

  1. 터미널에서 아래 명령어를 입력하여 sources.list 파일을 엽니다
    sudo vi /etc/apt/sources.list
  2. 파일이 열리면, kr.archive.ubuntu.commirror.kakao.com으로 변경합니다. 다음 명령어를 입력하여 전체적으로 치환합니다
    :%s/kr.archive.ubuntu.com/mirror.kakao.com
  3. 변경이 완료되었으면, :wq를 입력하여 파일을 저장하고 종료합니다.

apt-get update로 리스트 업데이트

sudo apt-get update

방화벽 허용 - (22 : ssh / 80 : http / 443 : https)

sudo ufw allow {포트번호} // ex) sudo ufw allow 22
sudo ufw enable
sudo ufw status
이미지 설명

NginX 셋팅 ✅

NginX 설치

sudo apt install nginx -y

NginX 상태 확인

sudo systemctl status nginx
  • 이렇게 나오면 NginX 설치후, 정상 동작 중인 것입니다 🍀
    이미지 설명
  • NginX 환경 설정은 다음에 하도록 하겠습니다.
    sudo vi /etc/nginx/site-available/{파일명}.conf

Docker 🐳

  • 도커 설치
     sudo apt update
      sudo apt install docker.io
  • 도커 버전 확인
    docker --version 
    # Docker version 24.0.7, build 24.0.7-0ubuntu4

Docker로 MongoDB 컨테이너 생성 📀

MongoDB 이미지 pull

  • EC2 인스턴스에 Docker를 깔았으니, 이제 우리가 사용할 mongoDB의 이미지를 다운받아야 합니다.
  • docker pull mongo를 사용하면 자동으로 latest 버전을 다운받습니다.
    	sudo docker pull mongo
  • 도커 이미지 리스트를 확인해 다운이 잘 받아졌는지 확인합니다.
    	sudo docker images
        REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
        mongo        latest    a31b196b207d   3 weeks ago   796MB

컨테이너 생성

  • 이미지를 pull 받았으면, container를 생성해야 합니다.

    • docker run 명령어에 다양한 옵션을 넣어 컨테이너 생성 가능
    • 자주 사용되는 옵션들
      • -name {이름}
        • 컨테이너의 이름을 설정하는 옵션
      • d, --detach
        • 보통 데몬 모드라고 부르며, 컨테이너를 백그라운드에서 실행시키는 옵션
      • p <호스트 포트>:<컨테이너 포트>
        • 포트포워딩 시 사용하는 옵션
      • e, --env
        • 컨테이너 내에서 사용할 환경 변수를 설정하는 옵션. 보통 설정 값이나 비밀번호를 설정할 때 사용.
      • -restart
        • 재시작 정책을 설정하는 옵션. EC2 재시작 시 컨테이너 또한 자동으로 실행되도록 설정할 때 사용.
  • e 옵션을 통해 root(슈퍼 어드민) 계정의 비밀번호를 설정할 수 있습니다.
    - MONGO_INITDB_ROOT_USERNAME에는 root를 MONGO_INITDB_ROOT_PASSWORD에는 사용하고자하는 비밀번호를 설정할 수 있습니다.

    볼륨

    1. Docker 볼륨 생성

      docker volume create mongodb_data
    2. 볼륨 마운트 포함하여 새로운 MongoDB 컨테이너 실행하기:

       	docker run -d -p 27017:27017 --name 컨테이너명 -v mongodb_data:/data/db -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=설정할비밀번호 mongo:latest
    • 만약, mongod.conf 파일을 사용하여 MongoDB를 설정해 컨테이너 실행하려면

         docker run -d -p 27017:27017 --name 컨테이너명 -v mongodb_data:/data/db -v /path/to/your/mongod.conf:/etc/mongod.conf mongo --config /etc/mongod.conf

    데이터 백업

    현재 MongoDB에 저장된 데이터가 중요하다면 데이터를 백업한 후, 새 컨테이너에 복원하는 것이 좋습니다.

    1. 컨테이너 내부에 있는 데이터 백업

          docker exec -t 컨테이너명 mongodump --out /data/backup/$(date +%F)
    2. 백업 데이터를 호스트로 복사

          docker cp mongodb:/data/backup ./backup
  • 새 컨테이너에 기존 데이터를 복원하려면??

       docker exec -i 컨테이너명 mongorestore /data/backup/<backup-folder>

서버 방화벽 설정

  • AWS 홈페이지에서 EC2 > 해당 인스턴스 > 보안 > 보안그룹 > 인바운드 규칙 편집에서 27017 포트를 사용자 지정 TCP / TCP 프로토콜로 열어줍니다.
  • EC2에 접속해 console에서 다음 명령어를 통해 해당 포트에 대한 방화벽을 열어줍니다.
     	sudo ufw allow 27017

mongoDB 접속 방법

1. 생성한 container로 접근

  • docker exec는 container에 특정 명령을 실행할 때 사용하는 명령어이며, 커맨드라인을 통해 입출력을 주고 받는 경우 -it 옵션을 붙여주어야하며, bash 옵션을 통해 셸을 실행할 수 있습니다.
  • EC2 환경에서는 커맨드라인을 통해 입출력을 주고받기 때문에 -it과 bash 옵션을 모두 사용해야 합니다.
         docker exec -it 컨테이너명 bash

2. 해당 container 내부에서 mongoDB 접속

  • mongosh -u root -p
  • 비밀번호 입력

계정 확인 및 설정

  test> show databases;
   admin   100.00 KiB
   config   12.00 KiB
   local    72.00 KiB
 
   # 계정 설정을 위해 admin 데이터베이스로 변경
   test> use admin;
   switched to db admin
 
   # 특정 데이터베이스에만 권한을 가지고 있는 계정 생성
   admin> db.createUser({ user: "계정명", pwd: "비밀번호", roles: [{role: "readWrite", db: "특정데이터베이스"}] })
   { ok: 1 }
 
   # 생성된 계정이 있나 확인
   admin> show users;
   [여기에 root와 방금 만든 계정이 나오면 성공!]

생성한 MongoDB 외부에서 접속하기 (Mac 💻)

우선 로컬에 mongoDB부터 설치해야합니다.

  1. MacOS 터미널에서 MongoDB Homebrew tap을 추가

    	brew tap mongodb/brew

2. brew를 최신버전으로 업데이트

 	brew update

3. brew를 이용해 몽고디비 설치

 	brew install mongodb-community@7.0

⚠️ 이때, mongo 명령어가 작동이 안되는 오류가 발생했었습니다..

이미지 설명

해결방안 🍀

CLI에서 몽고디비를 처리하고 싶으면 아래 명령어도 입력해야합니다.

 brew install mongodb-community-shell
  • mongoDB 실행
    brew services start mongodb-community@7.0
  • mongoDB 정지
    brew services stop mongodb-community@7.0

GUI 도구

몽고디비에서 공식적으로 배포하는 도구인 compass를 사용해 보도록 하겠습니다.
Download MongoDB Atlas CLI
Mac으로 선택한 후, .dmg로 다운로드를 합니다.

이미지 설명

Compass로 접속

  • New connection을 클릭하고, 아직 도메인 등록을 하지 않았기 때문에 일단 host에 EC2publicIP주소:27017을 입력해줍니다.
  • Username에는 이전에 특정 DB에만 읽고 쓰는 권한을 준 username이나 최고 권력인 root를 입력합니다.
  • Password를 입력해줍니다.
  • DB명을 입력해주고, connect 버튼을 클릭합니다.

만약, 잘 따라오셨다면, 정상적으로 연결이 된 것을 확인할 수 있으실 것입니다 ⭐️

profile
누군가에게 도움을 주기 위한 개발자로 성장하고 싶습니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN