50% 할인 모든 플랜, 기간 한정. 시작 가격 $2.48/mo
12분 분량
데이터베이스 및 분석

Ubuntu 최신 버전 3가지에 MongoDB 설치하는 방법 (단계별 가이드)

짐 슈워츠 By 짐 슈워츠 읽는 데 12분
Ubuntu에 MongoDB를 설치하는 방법을 소개하는 아티클의 타이틀, 태그라인과 함께 미래형 서버 위에 표시된 MongoDB 오리지널 심볼 + Cloudzy 브랜드 로고

MongoDB를 사용하기로 결정하셨군요. 훌륭한 선택입니다. alternative to MariaDB MERN 스택 앱, 분석 플랫폼, 또는 도큐먼트 기반 시스템을 구축하는 데 적합하지만, 낯선 Linux 커맨드라인과 끊임없는 터미널 오류에 막혀 진행이 어려우셨을 겁니다. 

걱정하지 마세요. 이 가이드에서 Ubuntu에 MongoDB를 설치하는 방법을 A부터 Z까지 모두 다룹니다.

MongoDB는 사용합니다 X.Y.Z 버전 관리 8.0 이다 주요 릴리스 시리즈와 8.2 이다 미성년 8.0 사이클 내의 릴리스입니다. 마이너 릴리스는 동일한 메이저 사이클 안에서 기능을 추가하며, 8.0부터는 특정 사용 사례(예: Search 및 Vector Search)에 대해 온프레미스 설치도 지원합니다. Ubuntu의 MongoDB 8.0은 24.04 (Noble), 22.04 (Jammy), 20.04 (Focal) 64비트 시스템을 지원하며, 일부 플랫폼에서는 ARM64도 지원합니다.

GnuPG 및 Curl 사전 요구 사항

공식 mongodb-org 패키지를 설치하기 전에 Ubuntu에서 두 가지 사전 요구 사항이 필요합니다. GnuPGCurl. 이 도구들은 Ubuntu가 MongoDB를 다운로드할 수 있도록 권한을 부여합니다. Ubuntu 기본 mongodb 패키지는 MongoDB Inc.에서 관리하지 않으며 공식 mongodb-org 패키지와 충돌합니다. 이미 설치되어 있다면 mongodb 반드시 제거하세요.

다음으로 아래 명령어를 실행하세요. sudo apt-get install gnupg curl. Curl은 인터넷에서 파일을 다운로드하는 도구로, MongoDB의 보안 키를 가져오는 데 필요합니다. GnuPG는 Ubuntu가 소프트웨어의 무결성을 검증할 때 사용하는 도구입니다. GnuPG가 설치되어 있지 않으면 Ubuntu는 MongoDB 패키지를 검증하지 못합니다.

터미널에서 GnuPG와 Curl이 정상적으로 설치되었는지 확인하세요. 설치가 완료되면 다음과 같이 표시됩니다.GnuPG와 Curl 추가 후 Ubuntu 터미널 출력 화면

MongoDB GPG 키 가져오기

Ubuntu의 패키지 관리자인 APT는 패키지를 설치하기 전에 GPG 키로 검증합니다. 이 GPG 키가 없으면 Ubuntu는 MongoDB의 저장소 추가를 허용하지 않습니다. 터미널에 아래 명령어를 입력해 키를 추가하세요.

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
   --dearmor

정상적으로 실행되면 터미널 출력이 다음과 같이 표시됩니다.MongoDB의 GPG 키 추가 성공 후 Ubuntu 터미널 화면.

간단히 말해, 이 명령어는 MongoDB의 보안 서명을 다운로드하고, Ubuntu가 읽을 수 있는 형식으로 변환한 뒤, 시스템의 보안 폴더에 저장합니다. 명령어를 구간별로 살펴보면 다음과 같습니다.

  1. curl -fsSL URL MongoDB의 공식 키를 다운로드합니다.
  2. –dearmor Ubuntu가 인식할 수 있도록 키를 텍스트 형식에서 바이너리 형식으로 변환합니다.
  3. -o /usr/share/keyrings/mongodb-server-8.0.gpg 바이너리 파일을 Ubuntu가 신뢰하는 키를 저장하는 폴더에 저장합니다.

명령어를 정확히 입력하면 공개 GPG 키가 문제없이 추가됩니다. 하지만 일부 사용자는 GPG 키 불일치로 인해 MongoDB 다운로드 중 오류를 겪기도 합니다. 이런 오류는 다음과 같은 상황에서 발생합니다.

NO_PUBKEY
The following signatures couldn't be verified
public key not available

앞서 안내한 GPG 키 명령어를 따르지 않고 대신 sudo apt-key 를 사용할 경우 발생합니다. 최신 Ubuntu에서는 이 방식을 권장하지 않습니다.

MongoDB 저장소 추가

MongoDB의 저장소를 추가하면 Ubuntu에 MongoDB 패키지의 인터넷 주소를 알려주는 파일이 생성됩니다. /etc/apt/sources.list.d/mongodb-org-8.0.list 에 목록 파일을 생성하려면 echo … | sudo tee …

를 사용해 저장소 정보를 파일에 씁니다. 여기서 주의할 점이 있습니다. Ubuntu의 버전마다 명령어 형식이 다릅니다. 앞서 언급한 세 가지 Ubuntu 버전별로 목록 파일을 가져오는 방법을 살펴보겠습니다.

Ubuntu 24.04 (Noble)

Ubuntu 24.04에서 목록 파일을 생성하려면 다음 명령어를 입력하세요. echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list 터미널에서.

처음 보면 복잡해 보일 수 있지만 걱정하지 마세요. 명령어를 각 부분으로 나눠 보면 금방 이해할 수 있습니다.

  1. echo 텍스트 인쇄
  2. /etc/apt/sources.list.d 는 Ubuntu가 소프트웨어 소스 정의를 저장하는 폴더입니다. 이 폴더 안에서 .list 형식의 파일은 Ubuntu에게 소프트웨어를 다운로드할 특정 위치를 알려줍니다.
  3. 일반 사용자는 기본적으로 시스템 폴더에 파일을 쓸 수 없습니다. 티셔츠 는 사용자에게 시스템 파일에 텍스트를 쓸 수 있는 특별 권한을 부여하며, 함께 사용하는 sudo
  4. 고결한 는 Ubuntu 24.04의 코드명입니다. Ubuntu 각 버전에는 다음과 같은 코드명이 있습니다:
버전 코드명
20.04 초점
22.04 Jammy
24.04 고귀한

Ubuntu 버전에 맞는 명령어를 사용하지 않으면 Ubuntu가 MongoDB의 저장소를 인식하지 못합니다.

Ubuntu 22.04 (Jammy)

Ubuntu Jammy에 목록 파일을 추가하는 방법도 동일하지만, 명령어 입력 시 고결한 포함 jammy이런 식으로

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

반드시 사용 중인 Ubuntu 버전에 맞는 명령어를 사용하세요. 그렇지 않으면 동일한 오류가 발생합니다.

Ubuntu 20.04 (Focal)

동일한 단계를 따르되, 고결한 or jammy, 에 넣다 focal:

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

저장소 설정이 완료되었습니다. 이제 mongodb-org.

패키지 데이터베이스 갱신

Ubuntu가 저장소를 인식했으므로, 이제 패키지 데이터베이스를 새로 고침해야 합니다. 그래야 MongoDB도 목록에 포함됩니다. 아래 명령어를 실행하세요.

sudo apt-get update

이 명령어는 Ubuntu 모든 버전에서 동일합니다. 이 단계를 건너뛰면 Ubuntu가 MongoDB를 인식하지 못합니다. 명령어가 정상적으로 실행되면 터미널에 다음과 같은 출력이 나타납니다.sudo apt-get update 실행 후 Ubuntu 터미널 출력 결과

 패키지 데이터베이스 갱신이 완료되었습니다. 이제 MongoDB 패키지를 설치할 차례입니다.

MongoDB 커뮤니티 서버 설치

다양한 MongoDB 버전을 설치할 수 있지만, 대부분의 경우 안정성이 높은 최신 안정 버전을 사용하는 것이 좋습니다. 최신 안정 버전을 설치하려면 다음 명령어를 실행하세요. sudo apt-get install -y mongodb-org

Ubuntu가 MongoDB 패키지를 다운로드하고 설치하며, MongoDB 사용자 계정과 데이터 디렉토리를 생성하고 MongoDB를 시스템 서비스로 등록했습니다. Ubuntu에 MongoDB를 설치하는 방법은 여기까지입니다. 이제 서비스를 시작해 보겠습니다.

MongoDB 시작하기

MongoDB를 실행하려면, Ubuntu의 서비스 관리자인 systemd가 MongoDB를 백그라운드 서비스로 인식하도록 설정해야 합니다. 터미널에 다음 명령어를 입력하세요:

sudo systemctl start mongod

명령어가 정상적으로 실행되면 Ubuntu가 MongoDB를 백그라운드 애플리케이션으로 시작합니다. 그렇지 않은 경우, 다음과 유사한 오류가 발생할 수 있습니다. mongod.service 시작에 실패했습니다..

이 오류는 여러 가지 일반적인 원인으로 발생할 수 있습니다:

  • 설정 파일 오류 in /etc/mongod.conf (YAML 들여쓰기 오류가 자주 발생합니다)
  • 포트 충돌 (포트 27017이 이미 사용 중인 경우)
  • 권한 문제 데이터 또는 로그 디렉터리(var/lib/mongodb 또는 var/log/mongodb)에 대한
  • 디스크 가득 찬 상태 or 파일 시스템 손상 상태

문제 진단을 위한 세 가지 명령어미래형 서버 설정 + Ubuntu 터미널 명령어 세 개 + 업그레이드 경로가 적힌 클라우드.

MongoDB가 실행되지 않는 원인을 대략 파악하는 것은 어렵지 않지만, 정확한 원인을 짚어내기는 쉽지 않습니다. 오류의 원인을 진단하는 세 가지 방법은 다음과 같습니다:

  1. 서비스 상태 확인: sudo systemctl status mongod –no-pager
  2. 상세 로그 확인 (가장 중요): sudo journalctl -u mongod –no-pager -n 100
  3. MongoDB의 자체 로그 파일 확인

단, 디스크가 가득 찼거나 시스템 파일이 손상된 경우에는 소프트웨어가 아닌 하드웨어 차원의 조치가 필요합니다. 현재 서버 환경이 노후화된 경우, MongoDB를 원활하게 실행하려면 더 나은 장비를 갖춰야 할 수도 있습니다. 

전용 서버 구입이 예산상 부담된다면, Cloudzy의 Ubuntu VPS 를 살펴보세요. 원하는 Ubuntu 배포판이 설치된 개인 전용 서버에서 깔끔하게 시작할 수 있습니다. 24/7 지원 및 최대 40Gbps 네트워크 속도를 제공하며, NVMe SSDDDR5 RAM 스토리지 위에 구축되어 있습니다.

또한 지연 시간이 매우 낮고, 99.95% 가동시간, 그리고 14일 환불 보장 정책도 제공합니다. 뿐만 아니라, 전 세계 12 곳에서 합리적인 가격으로 이용할 수 있습니다.

MongoDB 실행 오류, 가장 흔한 해결 방법 3가지

MongoDB 문제의 정확한 원인을 파악하고 한 번에 해결하는 방법은 없습니다. 하지만 아래의 일반적인 해결 방법들을 시도해보면 MongoDB를 정상적으로 실행하는 데 도움이 될 수 있습니다.

  1. YAML 설정 들여쓰기 오류. 편집했다고 가정해 보겠습니다 /etc/mongod.conf 프롬프트를 통해 들여쓰기를 다시 확인하세요 sudo nano /etc/mongod.conf. YAML 파일은 공백에 매우 민감하므로, 각 들여쓰기 수준마다 공백 두 칸만 사용해야 합니다. /etc/mongod.conf.
  2. 점유된 포트 27017. 포트 27017을 이미 다른 프로세스가 사용 중이라면, 해당 프로세스를 종료하거나 MongoDB의 포트를 변경하세요. mongod.conf. 포트 27017에서 실행 중인 프로세스가 확실하지 않다면, 다음 명령어를 실행해 보세요 sudo ss -lntp | grep 27017 확인해보기
  3. 데이터 디렉토리에 권한 문제가 있습니다. 때로는 MongoDB가 시스템에서 실행 권한이 없어 아예 실행되지 않을 수 있습니다. 먼저 다음을 실행하세요 sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, 그런 다음 MongoDB를 다음으로 재시작하세요. sudo systemctl restart mongod

에 따르면 MongoDB 공식 웹사이트, 이 문제를 해결하는 또 다른 방법은 다음 명령으로 데몬을 다시 로드하는 것입니다 sudo systemctl daemon-reload, 그리고 첫 번째 명령어를 실행하세요, sudo systemctl start mongod, 다시.

만약 없다면 mongod.service, 설치 과정에서 systemd 유닛이 생성되지 않았습니다. 다시 설치하세요. mongodb-org 패키지 세트

이 모든 설정을 마쳤다면, 다음 명령으로 MongoDB가 정상적으로 시작되었는지 확인할 수 있습니다. sudo systemctl status mongod. 터미널에 다음과 같이 표시된다면 활성 (실행 중), 준비가 됐습니다. 다만 몇 가지 추가 설정을 해두면 훨씬 편하게 사용할 수 있습니다.

MongoDB 자동 실행 설정미래형 서버 환경에 MongoDB 자동화 심볼 + MongoDB 명령어가 입력된 터미널 + 로그 파일

MongoDB는 서버를 켤 때마다 자동으로 실행되지 않습니다. 매번 앞서 설명한 단계를 반복해야 합니다. 원한다면 Ubuntu가 데스크톱 부팅 후 MongoDB를 자동으로 시작하도록 설정할 수 있습니다.

간단히 실행하면 됩니다 sudo systemctl enable mongod 터미널에 이 명령어를 입력하면, 이후 재부팅할 때마다 시스템이 MongoDB를 자동으로 실행합니다. 또한 다음 명령어로 mongod 프로세스를 재시작할 수 있습니다. sudo systemctl restart mongod아울러 오류나 중요한 메시지를 확인하려면 다음 파일의 출력 내용을 검토하세요:

/var/log/mongodb/mongod.log

이제 설정이 모두 완료되었습니다. mongod를 사용해 봅시다.

MongoDB 셸 열기

데이터베이스와 상호작용하려면 다음 명령어를 입력해 MongoDB 셸을 열어야 합니다. mongoshMongoDB 전용 명령 프롬프트 터미널 또는 MySQL 콘솔과 같은 역할을 합니다. GUI 도구나 MongoDB 드라이버로 MongoDB와 상호작용할 수도 있습니다. 터미널에서 직접 작업하고 싶다면 mongosh 이 명령어가 그 역할을 합니다.

이제 MongoDB가 완전히 동작하는 상태입니다. 다만 보안을 위해 몇 가지 추가 설정을 반드시 진행하세요.

MongoDB 인증 설정MongoDB 인증 과정 + 잠금 심볼 + 인증 완료 확인.

MongoDB는 기본적으로 비밀번호 보호가 없습니다. 사용자를 생성하려면 이미 접근 권한이 있어야 하기 때문입니다. 다음은 인증을 설정하는 간단한 방법입니다.

관리자 계정 생성

먼저 다음 명령어로 admin 데이터베이스로 전환합니다:

use admin

그런 다음 다음 명령어로 사용자를 생성합니다. db.createUser({…})항목에 본인의 정보를 입력하세요.

  • 사용자 이름
  • 비밀번호
  • 역할

role에는 가급적 root 를 입력하세요. 이는 전체 제어 권한, 즉 관리자 권한을 의미합니다.

인증 활성화

사용자 설정이 완료되었으니 이제 /etc/mongod.conf 파일을 수정해야 합니다. 이 파일은 MongoDB의 동작 방식을 제어합니다. 단, 파일을 수정한 후에는 반드시 mongod 이후 서비스와 함께 sudo systemctl restart mongod. 여기서 변경해야 할 파라미터는 authorization이며, 형태는 다음과 같습니다:

security:

  authorization:

인증 절차를 완료하려면 authorization 값을 아래와 같이 변경하세요:

security:

  authorization: enabled

이제 MongoDB에 로그인이 필요하므로 인증이 완료되었습니다. 다음으로 MongoDB를 충분히 활용하기 위한 추가 설정을 진행하겠습니다.

방화벽 포트 열기

앞서 언급했듯이 MongoDB는 포트 27017에서 실행됩니다. 방화벽은 기본적으로 모든 포트를 차단하므로, 27017 포트에서 애플리케이션이 실행될 수 있도록 방화벽에 허용 규칙을 추가해야 합니다. 다음 명령어를 실행하세요:

ufw allow from YOUR_IP to any port 27017

또는 다음 명령어를 사용할 수도 있습니다 ufw allow 27017, 단 이 명령어를 실행하면 인터넷 전체에서 해당 포트에 접근할 수 있게 되므로 주의하세요. 첫 번째 옵션을 사용하는 것이 더 안전합니다. 자신의 IP 주소에서만 포트 접근을 허용하기 때문입니다.

MongoDB를 운영하다 보면 원격 접근 문제 같은 어려움이 생길 수 있습니다. 해결 방법을 계속 읽어보세요.

원격 접근 문제모니터 3개가 연결된 서버에서 MongoDB의 원격 접근 설정과 터미널 명령어를 구성하는 모습.

MongoDB는 bindIp. bindIp MongoDB를 다음으로 제한합니다 127.0.0.1로 시작하며, 로컬 연결만 허용합니다. 따라서 외부에서 MongoDB 서버에 접속하려 해도 접근이 거부됩니다. MongoDB는 기본적으로 로컬 연결만 허용하도록 설정되어 있기 때문입니다.

다시 /etc/mongod.conf로 이동하면 다음과 같은 세 줄을 확인할 수 있습니다:

net:

  port: 27017

  bindIp: 127.0.0.1

다음 사용자의 원격 접속을 허용하려면 mongod 사용자의 위 설정 값을 아래와 같이 변경하세요:

net:

  port: 27017

  bindIp: 0.0.0.0

이후 mongod 서비스와 sudo systemctl restart mongod 파일을 수정할 때마다 그렇듯이 서비스를 재시작하세요.

이제 mongod 서비스에 원격 연결 수락 권한이 부여되었습니다. 단, 이 작업을 수행하면 데이터베이스가 인터넷 전체에 노출됩니다. 아직 mongod 사용자 인증을 설정하지 않았다면 반드시 지금 설정하세요. 열린 MongoDB 포트를 지속적으로 스캔하는 봇이 많으므로, mongod 사용자에게는 반드시 비밀번호를 설정해 두세요.

전체 요약

축하합니다. 이제 Ubuntu 시스템에 최적화된 MongoDB 서비스를 구성하는 모든 단계를 마쳤습니다. 이 글에서 다룬 각 단계를 정리한 흐름도도 함께 참고하세요.

명령 기능
apt 업데이트 소프트웨어 목록 새로 고침
apt 설치 소프트웨어 설치
curl 파일 다운로드
gpg 암호화 키 관리
echo 텍스트 인쇄
티셔츠 보호된 파일에 쓰기
systemctl start 서비스 시작
systemctl 활성화 부팅 시 시작
systemctl 상태 서비스 확인
mongosh MongoDB 셸 진입
편집 /etc/mongod.conf 인증 활성화
ufw 방화벽 관리
bindIp 원격 접속 허용

이 내용이 전체 과정을 이해하는 데 도움이 되었으면 합니다. 하지만 직접 MongoDB를 설정하는 것이 부담스럽다면, Cloudzy의 MongoDB VPS 를 사용해 MongoDB가 사전 설치된 개인 Ubuntu 24.04 LTS 서버를 바로 시작해 보세요.

함께 제공됩니다 99.95% uptime, 24/7 지원 및 14일 환불 보장. 그 외에도 최대 40 Gbps 의 대역폭을 지원하며, DDR5 RAMNVMe SSD 의 스토리지를 제공합니다. 거주 지역도 걱정할 필요 없습니다. 다양한 지역에서 이용 가능합니다. 12 전 세계 여러 지역에서 합리적인 가격으로 이용할 수 있습니다.

이제 프로덕션 수준의 워크로드와 비즈니스를 지원할 수 있는 모든 설정을 갖춘 MongoDB 서비스를 직접 구축했습니다.

공유

블로그 더 보기

계속 읽기.

비즈니스를 위한 스마트 데이터 관리: VPS로 구현하는 클라우드형 스토리지 및 백업 전략
데이터베이스 및 분석

비즈니스를 위한 스마트 데이터 관리: VPS로 구현하는 클라우드형 스토리지 및 백업 전략

VPS를 활용한 안전한 비즈니스 데이터 관리는 회사가 노트북 여러 대, 이메일 첨부 파일, 반쯤 잊혀진 저장소에 파일을 분산해 두는 상황을 끝내기로 결정했을 때 제가 권장하는 전략입니다.

렉사 사이러스렉사 사이러스 7분 읽기
구체화된 뷰 vs. 뷰
데이터베이스 및 분석

Materialized View vs. View: 데이터베이스에서의 역할 이해하기

데이터베이스 시스템에서 Materialized View는 쿼리의 사전 계산된 결과를 물리적 테이블 형태로 저장하는 데이터베이스 객체입니다. 데이터가 디스크에 실제로 저장되기 때문에, 복잡한

아이비 존슨아이비 존슨 7분 읽기
Snowflake vs Databricks
데이터베이스 및 분석

Databricks vs Snowflake: 데이터 전문가를 위한 공정한 비교 🧱❄️

데이터를 기반으로 의사결정을 내리는 기업이라면 — 고객 행동을 추적하는 이커머스 플랫폼이든, 트렌드를 예측하는 금융 기관이든, 테크 기업이든

Allan Van KirkAllan Van Kirk 13분 읽기

배포할 준비가 됐나요? 월 $2.48부터.

2008년부터 운영해온 독립 클라우드. AMD EPYC, NVMe, 40 Gbps. 14일 환불 보장.