잘못된 부분 지적 및 피드백은 큰 힘이 됩니다 😃
이번 포스팅에서는 EC2를 만들고, 이전 포스팅인 탄력적 IP 셋팅을 끝낸 상황을 가정하고 EC2에 접근해 간단한 셋팅, NginX 설치, Docker 설치, Docker 이미지를 pull 받아 MongoDB 컨테이너를 띄우고, 외부에서 해당 MongoDB에 접속하는 것까지 해보도록 하겠습니다 🧐
SSH 클라이언트
탭에 나와 있는 것을 참고하여, 발급 받은 .pem
key가 있는 경로로 이동 후,예
에 나와 있는 코드를 이용하면 접속이 가능합니다.sudo timedatectl set-timezone Asia/Seoul
date
작성하신 내용은 대부분 정확하지만, 조금 더 명확하고 쉽게 이해할 수 있도록 약간의 수정을 제안드립니다.
sources.list
파일 수정sources.list
파일을 엽니다sudo vi /etc/apt/sources.list
kr.archive.ubuntu.com
을 mirror.kakao.com
으로 변경합니다. 다음 명령어를 입력하여 전체적으로 치환합니다:%s/kr.archive.ubuntu.com/mirror.kakao.com
:wq
를 입력하여 파일을 저장하고 종료합니다.apt-get update
로 리스트 업데이트sudo apt-get update
sudo ufw allow {포트번호} // ex) sudo ufw allow 22
sudo ufw enable
sudo ufw status
NginX 설치
sudo apt install nginx -y
NginX 상태 확인
sudo systemctl status nginx
sudo vi /etc/nginx/site-available/{파일명}.conf
sudo apt update
sudo apt install docker.io
docker --version
# Docker version 24.0.7, build 24.0.7-0ubuntu4
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를 생성해야 합니다.
e
옵션을 통해 root(슈퍼 어드민) 계정의 비밀번호를 설정할 수 있습니다.
- MONGO_INITDB_ROOT_USERNAME
에는 root를 MONGO_INITDB_ROOT_PASSWORD
에는 사용하고자하는 비밀번호를 설정할 수 있습니다.
Docker 볼륨 생성
docker volume create mongodb_data
볼륨 마운트 포함하여 새로운 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에 저장된 데이터가 중요하다면 데이터를 백업한 후, 새 컨테이너에 복원하는 것이 좋습니다.
컨테이너 내부에 있는 데이터 백업
docker exec -t 컨테이너명 mongodump --out /data/backup/$(date +%F)
백업 데이터를 호스트로 복사
docker cp mongodb:/data/backup ./backup
새 컨테이너에 기존 데이터를 복원하려면??
docker exec -i 컨테이너명 mongorestore /data/backup/<backup-folder>
EC2 > 해당 인스턴스 > 보안 > 보안그룹 > 인바운드 규칙 편집
에서 27017
포트를 사용자 지정 TCP / TCP 프로토콜
로 열어줍니다. sudo ufw allow 27017
1. 생성한 container로 접근
docker exec
는 container에 특정 명령을 실행할 때 사용하는 명령어이며, 커맨드라인을 통해 입출력을 주고 받는 경우 -it
옵션을 붙여주어야하며, bash
옵션을 통해 셸을 실행할 수 있습니다.-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부터 설치해야합니다.
MacOS 터미널에서 MongoDB Homebrew tap을 추가
brew tap mongodb/brew
2. brew를 최신버전으로 업데이트
brew update
3. brew를 이용해 몽고디비 설치
brew install mongodb-community@7.0
CLI에서 몽고디비를 처리하고 싶으면 아래 명령어도 입력해야합니다.
brew install mongodb-community-shell
brew services start mongodb-community@7.0
brew services stop mongodb-community@7.0
몽고디비에서 공식적으로 배포하는 도구인 compass를 사용해 보도록 하겠습니다.
Download MongoDB Atlas CLI
Mac으로 선택한 후, .dmg
로 다운로드를 합니다.
New connection
을 클릭하고, 아직 도메인 등록을 하지 않았기 때문에 일단 host에 EC2publicIP주소:27017
을 입력해줍니다.만약, 잘 따라오셨다면, 정상적으로 연결이 된 것을 확인할 수 있으실 것입니다 ⭐️