인스턴스 만들기
✅ AMI : Ubuntu Server 24.04 LTS(HVM), SSD Volume Type 선택
✅ 아키텍처 : 64비트(x86)
✅ 인스턴스 유형 : t2.micro (다른 유형을 선택하면 과금발생가능)
✅ 키 페어 : RSA 유형, .pem파일로 생성
EC2인스턴스에 접근하기 위한 보안키
키페어를 생성하지 않으면 인스턴스에 암호가 없으므로 안전하게 접속하기 위해 키페어를 생성
그리고 이후에 ssh를 사용하여 EC2인스턴스에 접근할 때 설정한 키페어를 사용하여 접속
✅ 보안그룹(인바운드) : SSH유형, 22포트, 0.0.0.0
이후에 로컬에서 SSH로 접속할 것이므로 SSH의 22번 포트를 열기
EC2 접속하고 MongoDB 설치하기
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
List 파일 만들기
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
명령어가 `|` 연산자를 기준으로 2개로 나뉘는데 각각 살펴보도록 합시다.
- `echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse"`
이 부분은 MongoDB 패키지 저장소를 정의하는 문자열을 출력합니다.
- `deb`: Debian 계열의 패키지 저장소를 추가한다는 의미입니다.
- `[ arch=amd64,arm64 ]`: 이 저장소가 64비트 아키텍처(amd64)와 ARM 아키텍처(arm64)를 지원한다는 것을 나타냅니다.
- `https://repo.mongodb.org/apt/ubuntu`: MongoDB 패키지가 호스팅된 공식 저장소의 URL입니다.
- `jammy`: 이 명령어가 Ubuntu 22.04 (Jammy Jellyfish)를 대상으로 함을 나타냅니다.
- `mongodb-org/6.0`: MongoDB의 6.0 버전 패키지에 접근하기 위한 경로입니다.
- `multiverse`: 이 저장소가 비자유 소프트웨어 또는 상업적 소프트웨어를 포함할 수 있음을 나타내는 옵션입니다.
- `sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list`
- `sudo`: 관리자 권한으로 명령어를 실행합니다.
- `tee`: 입력된 내용을 지정된 파일에 저장하고 동시에 출력하는 명령어입니다.
- `/etc/apt/sources.list.d/mongodb-org-6.0.list`: 이 파일은 새로 추가된 MongoDB 패키지 저장소에 대한 정보를 저장할 파일 경로입니다.
패키지 관리자 업데이트
sudo apt update
sudo apt upgrade
- `sudo apt update`
패키지 목록을 업데이트합니다.
- `sudo apt upgrade`
시스템에 설치된 패키지를 최신 버전으로 업그레이드합니다.
데몬 설치
sudo apt install -y mongodb-org
MongoDB 설치
sudo systemctl start mongod
sudo systemctl status mongod
- `sudo systemctl start mongod`
MongoDB 서버를 시작합니다.
- `sudo systemctl status mongod`
MongoDB 서버의 현재 상태를 확인합니다.
접속 후 외부 접속 허용하도록 mongodb 설정 파일 수정하기
mongosh
`mongosh`는 MongoDB Shell의 새로운 버전으로, MongoDB에 연결하고 데이터베이스 명령을 실행하기 위한 인터랙티브 쉘 환경을 제공합니다. 접속이 잘 되었는지 확인을 하면 `exit`로 빠져나옵시다.
이제 mongodb의 설정을 수정해서 외부에서 접속이 가능하도록 합시다
sudo vi /etc/mongod.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
# engine:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
bindIp를 0.0.0.0으로 수정해보면 어떤 ip에서도 접근이 가능해지는 것이죠.
그리고, DB에 접속해서 DB를 관리할 수 있는 유저를 만들어봅시다.
mongosh
use admin
db.createUser({
user:'사용할 유저이름',
pwd: '사용할 패스워드',
roles: [{role: 'root', db:'admin'}]
})
보안 규칙 수정 - 인바운드 설정 추가
EC2의 인바운드도 다음과 같이 수정해줘야 합니다.
외부에서 접속되는지 확인하기
위와 같이 수정했으면 EC2의 mongodb에 원격으로 접속이 됩니다. 다음 명령어를 입력해서 확인해보도록 하죠
mongosh --host <EC2 Public IP(http생략)> --port 27017 -u <여러분이름> -p <여러분비밀번호> --authenticationDatabase admin