문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

.tgz tarball을 사용하여 Red Hat 또는 CentOS에 MongoDB Community를 설치합니다.

이 페이지의 내용

  • 개요
  • 고려 사항
  • MongoDB 커뮤니티 에디션 설치
  • MongoDB Community 에디션 실행
  • 추가 정보

참고

MongoDB Atlas

MongoDB Atlas 는 클라우드에서 호스팅되는 MongoDB 서비스 옵션으로, 설치 오버헤드가 필요하지 않으며 무료 계층을 제공하여 시작할 수 있습니다.

이 튜토리얼을 사용하여 MongoDB 5.0 을 수동으로 설치합니다. Red Hat Enterprise Linux, CentOS Linux 또는 Oracle Linux [1] 에서 다운로드한 .tgz tarball을 사용하여 MongoDB Community Edition을 실행합니다.

이 튜토리얼에서는 MongoDB 5.0 MongoDB Community Edition을 설치합니다. 다른 버전의 MongoDB Community를 설치하려면 페이지 왼쪽 상단의 버전 드롭다운 메뉴에서 해당 버전에 대한 문서를 선택하세요.

이 문서의 설명대로 다운로드한 .tgz tarball을 통해 MongoDB를 수동으로 설치할 수 있지만 가능하면 시스템의 yum 패키지 관리자를 사용하여 MongoDB를 설치하는 것이 좋습니다. 패키지 관리자를 사용하면 필요한 모든 종속 프로그램이 자동으로 설치되고, 시작에 도움이 되는 예시 mongod.conf 파일이 제공되며, 향후 업그레이드 및 유지 관리 작업이 간소화됩니다.

지침은 yum 패키지 관리자를 사용하여 MongoDB 설치를 참조하세요.

.tgz 패키지를 사용하여 서버를 설치하는 경우 mongosh 설치 안내 에 따라 mongosh 를 별도로 다운로드하여 설치해야 합니다.

참고

EOL 알림

  • MongoDB 5.0 MongoDB Community Edition은 x86_64에서RHEL /CentOS/Oracle 6에 대한 지원을 제거합니다.

  • MongoDB 5.0 Community Edition은 s390x 에서 RHEL /CentOS/Oracle 7에 대한 지원을 제거합니다.

MongoDB 5.0 Community Edition은 x866464{에서 Red Hat Enterprise Linux(RHEL), CentOS Linux, Oracle Linux [1] , Rocky Linux 및 [2] 의 비트 버전을 지원합니다. _ 아키텍처:

  • RHEL / CentOS / Oracle / Rocky / AlmaLinux 8

  • RHEL / CentOS / Oracle 7

MongoDB 5. MongoDB0 Community Edition은 RHEL /CentOS/Oracle/Rocky/AlmaLinux 에서 ARM 아키텍처도64 8 지원합니다.

자세한 정보는 플랫폼 지원에서 확인할 수 있습니다.

[1](1, 2) MongoDB는 Red Hat 호환 커널(RHCK)을 실행하는 Oracle Linux만 지원합니다. MongoDB는 UEK(Unbreakable Enterprise Kernel)를 지원하지 않습니다 .
[2] RHEL 버전 8.0 이상을 지원하도록 출시된 MongoDB 온프레미스 제품은 해당 배포판이 완전한 RHEL 호환성을 제공할 의무를 충족하는 경우 Rocky Linux 버전 8.0 이상과 AlmaLinux 버전 8.0 이상을 호환 및 지원합니다.

프로덕션 MongoDB 배포에 대한 성능 고려 사항과 구성 권장 사항을 제공하는 프로덕션 노트 문서를 검토한 이후에 프로덕션 환경에 MongoDB를 배포합니다.

아래 명령을 사용하여 MongoDB 커뮤니티 .tgz tarball에 필요한 종속성을 설치합니다.

sudo yum install libcurl openssl xz-libs

다음 단계에 따라 .tgz에서 MongoDB 커뮤니티 에디션을 수동으로 설치합니다.

1

필수 사전 패키지를 설치한 후 다음 링크에서 MongoDB 커뮤니티 tgz tarball을 다운로드합니다.

MongoDB 다운로드 센터

  1. Version 드롭다운 메뉴에서 다운로드하려는 MongoDB 버전을 선택합니다.

  2. Platform 드롭다운 메뉴에서 운영 체제 버전 및 아키텍처를 선택합니다.

  3. Package 드롭다운 메뉴에서 tgz를 선택합니다.

  4. Download를 클릭합니다.

2

예를 들어 시스템 셸에서 tar 명령어을 사용하여 추출할 수 있습니다.

tar -zxvf mongodb-linux-*-5.0.26.tgz
3

MongoDB 바이너리는 tarball의 bin/ 디렉터리에 있습니다. 다음 방법 중 하나를 선택할 수 있습니다.

  • 바이너리를 PATH 변수에 나열된 디렉토리(예: /usr/local/bin 에 복사합니다 (적절한 설치 디렉토리로 /path/to/the/mongodb-directory/를 업데이트하세요).

    sudo cp /path/to/the/mongodb-directory/bin/* /usr/local/bin/
  • PATH 변수에 나열된 디렉토리 (예: /usr/local/bin)에서 바이너리에 대한 심볼릭 링크를 만듭니다 (적절한 설치 디렉터리로 /path/to/the/mongodb-directory/를 업데이트하세요).

    sudo ln -s /path/to/the/mongodb-directory/bin/* /usr/local/bin/
4

설치 mongosh 그 다음 MongoDB 셸을 사용하여 배포서버에 연결합니다.

Unix 계열 운영 체제는 대부분 프로세스가 사용할 수 있는 시스템 리소스를 제한합니다. 이러한 제한은 MongoDB 작동에 부정적인 영향을 미칠 수 있으므로 조정해야 합니다. 플랫폼에 권장되는 설정에 관한 내용은 UNIX ulimit 설정에서 확인할 수 있습니다.

참고

열린 파일 수에 대한 ulimit 값이 64000 미만인 경우 MongoDB는 시작 경고를 생성합니다.

기본적으로 MongoDB는 mongod 사용자 계정을 사용하여 실행되며 다음 기본 디렉토리를 사용합니다.

  • /var/lib/mongo (데이터 디렉토리)

  • /var/log/mongodb (로그 디렉토리)

MongoDB 데이터 및 로그 디렉토리를 만듭니다:

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb

기본적으로 MongoDB는 mongod 사용자 계정을 사용하여 실행됩니다. mongodmongodb 그룹을 생성하세요.mongod이 그룹에 속하는지 확인한 다음 이러한 디렉토리의 소유자 및 그룹을 mongod로 설정합니다.

sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb

기본 디렉토리 이외의 데이터 디렉토리 및 로그 디렉토리를 사용하려면 다음을 실행합니다.

  1. 새 디렉토리를 하나 이상 생성합니다.

  2. 구성 파일 /etc/mongod.conf를 편집하고 그에 따라 다음 필드를 수정합니다.

    • storage.dbPath로 새로운 데이터 디렉토리 경로 지정(예: /some/data/directory)

    • systemLog.path로 새로운 로그 파일 경로 지정(예: /some/log/directory/mongod.log)

  3. MongoDB를 실행하는 사용자가 디렉토리에 액세스할 수 있는지 확인합니다.

    sudo chown -R mongod:mongod <directory>

    MongoDB 프로세스를 실행하는 사용자를 변경하려면 새로운 사용자에게 디렉토리 액세스 권한을 부여해야 합니다.

  4. SELinux가 적용되어 있다면, SELinux를 구성하세요. 자세한 내용은 SELinux 구성을 참조하세요.

중요

SELinux가 enforcing 모드인 경우 다음 두 가지 정책 조정을 통해 MongoDB에 대한 SELinux 정책을 사용자 지정해야 합니다.

현재 SELinux 정책은 MongoDB 프로세스가 시스템에서 사용 가능한 메모리를 결정하는 데 필요한 /sys/fs/cgroup에 접근하는 것을 허용하지 않습니다.enforcing 모드에서 SELinux를 실행하려면 SELinux 정책을 다음과 같이 조정해야 합니다.

  1. 시스템에 checkpolicy 패키지가 설치되어 있는지 확인합니다:

    sudo yum install checkpolicy
  2. 사용자 지정 정책 파일 mongodb_cgroup_memory.te을 만듭니다.

    cat > mongodb_cgroup_memory.te <<EOF
    module mongodb_cgroup_memory 1.0;
    require {
    type cgroup_t;
    type mongod_t;
    class dir search;
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir search;
    allow mongod_t cgroup_t:file { getattr open read };
    EOF
  3. 생성되면 다음 세 가지 명령을 실행하여 사용자 지정 정책 모듈을 컴파일하고 로드합니다.

    checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
    semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
    sudo semodule -i mongodb_cgroup_memory.pp

이제 SELinux를 enforcing 로 설정하여 MongoDB 프로세스가 올바른 파일에 액세스할 수 있습니다.

현재 SELinux 정책은 MongoDB 프로세스가 FTDC (풀타임 진단 데이터 캡처)에 필요한 /proc/net/netstat을 열고 읽는 것을 허용하지 않습니다.enforcing 모드에서 SELinux를 실행하려면 SELinux 정책을 다음과 같이 조정해야 합니다.

  1. 시스템에 checkpolicy 패키지가 설치되어 있는지 확인합니다:

    sudo yum install checkpolicy
  2. 사용자 지정 정책 파일 mongodb_proc_net.te을 만듭니다.

    cat > mongodb_proc_net.te <<EOF
    module mongodb_proc_net 1.0;
    require {
    type cgroup_t;
    type configfs_t;
    type file_type;
    type mongod_t;
    type proc_net_t;
    type sysctl_fs_t;
    type var_lib_nfs_t;
    class dir { search getattr };
    class file { getattr open read };
    }
    #============= mongod_t ==============
    allow mongod_t cgroup_t:dir { search getattr } ;
    allow mongod_t cgroup_t:file { getattr open read };
    allow mongod_t configfs_t:dir getattr;
    allow mongod_t file_type:dir { getattr search };
    allow mongod_t file_type:file getattr;
    allow mongod_t proc_net_t:file { open read };
    allow mongod_t sysctl_fs_t:dir search;
    allow mongod_t var_lib_nfs_t:dir search;
    EOF
  3. 생성되면 다음 세 가지 명령을 실행하여 사용자 지정 정책 모듈을 컴파일하고 로드합니다.

    checkmodule -M -m -o mongodb_proc_net.mod mongodb_proc_net.te
    semodule_package -o mongodb_proc_net.pp -m mongodb_proc_net.mod
    sudo semodule -i mongodb_proc_net.pp

중요

위의 내용 외에도 SELinux가 enforcing 모드인 경우 다음 두 가지 경우에 SELinux 정책을 추가로 사용자 지정해야 합니다.

  • RHEL 에서 기본값 pidFilePath, systemLog.path또는 dbPath 를 사용하는 대신 사용자 지정 디렉토리 경로 를 사용하고 7 있습니다. 이상0 및/또는

  • 기본 MongoDB 포트를 사용하는 대신 사용자 지정 포트 를 사용하고 있습니다.

  1. mongod 서비스가 새 디렉터리를 사용할 수 있도록 SELinux 정책을 업데이트하세요.

    sudo semanage fcontext -a -t <type> </some/MongoDB/directory.*>

    여기서 다음 유형 중 하나를 적절히 지정합니다.

    • mongod_var_lib_t 데이터 디렉토리의 경우

    • mongod_log_t 로그 파일 디렉토리의 경우

    • mongod_var_run_t pid 파일 디렉토리의 경우

    참고

    디렉토리 끝에 .* 을 포함하는 것을 잊지 마세요.

  2. 새 디렉터리에 대한 SELinux 사용자 정책을 업데이트하세요.

    sudo chcon -Rv -u system_u -t <type> </some/MongoDB/directory>

    여기서 다음 유형 중 하나를 적절히 지정합니다.

    • mongod_var_lib_t 데이터 디렉토리의 경우

    • mongod_log_t 로그 디렉토리의 경우

    • mongod_var_run_t pid 파일 디렉토리의 경우

  3. 업데이트된 SELinux 정책을 디렉터리에 적용합니다.

    sudo restorecon -R -v </some/MongoDB/directory>

예를 들면 다음과 같습니다.

semanage fcontext 작업의 경우 디렉터리 끝에 .*를 반드시 포함시키세요.

  • /mongodb/data의 기본이 아닌 MongoDB 데이터 경로를 사용하는 경우:

    sudo semanage fcontext -a -t mongod_var_lib_t '/mongodb/data.*'
    sudo chcon -Rv -u system_u -t mongod_var_lib_t '/mongodb/data'
    sudo restorecon -R -v '/mongodb/data'
  • 기본값이 아닌 /mongodb/log의 MongoDB 로그 디렉터리를 사용하는 경우 (예: 로그 파일 경로가 /mongodb/log/mongod.log인 경우):

    sudo semanage fcontext -a -t mongod_log_t '/mongodb/log.*'
    sudo chcon -Rv -u system_u -t mongod_log_t '/mongodb/log'
    sudo restorecon -R -v '/mongodb/log'
sudo semanage port -a -t mongod_port_t -p tcp <portnumber>

참고

사용자 지정 포트가 인식되도록 하려면 mongod 를 다시 시작해야 할 수 있습니다.

다음 단계에 따라 시스템에서 MongoDB 커뮤니티 에디션을 실행합니다. 이 지침은 기본 설정을 사용한다고 가정합니다.

1

MongoDB 인스턴스가 데이터를 저장하는 디렉토리를 생성합니다. 예를 들면 다음과 같습니다.

sudo mkdir -p /var/lib/mongo

MongoDB 인스턴스가 로그를 저장하는 디렉터리를 만듭니다. 예를 들면 다음과 같습니다.

sudo mkdir -p /var/log/mongodb

MongoDB 프로세스를 시작하는 사용자는 이러한 디렉토리에 대한 읽기 및 쓰기 권한을 반드시 보유해야 합니다. 예를 들어 MongoDB를 직접 실행하려면 다음이 필요합니다.

sudo chown `whoami` /var/lib/mongo # Or substitute another user
sudo chown `whoami` /var/log/mongodb # Or substitute another user
2

MongoDB를 실행하려면 시스템 프롬프트에서 mongod 프로세스를 실행합니다.

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

명령줄 옵션 --dbpath--logpath에 대한 자세한 내용은 옵션에서 확인 가능합니다.

3

로그 파일 /var/log/mongodb/mongod.log에서 다음 줄에 대한 프로세스 출력을 확인하여 MongoDB가 성공적으로 시작되었는지 확인합니다.

[initandlisten] waiting for connections on port 27017

프로세스 출력에 중요하지 않은 경고가 표시될 수 있습니다. 위의 로그 줄이 표시되어 있다면 MongoDB를 처음 평가하는 동안에는 이러한 경고를 무시해도 됩니다.

4

mongoshmongod 동일한 호스트 머신에서 mongosh 세션을 시작합니다. 명령줄 mongod 옵션 없이 를 27017 실행하여 로컬 호스트에서 기본 포트 로 실행 중인 에 연결할 수 있습니다.

mongosh

다른 호스트 및/또는 포트에서 실행 mongod 중인 인스턴스에 연결하는 등 mongosh 을(를) 사용하여 연결하는 방법에 대한 자세한 내용은 mongosh 설명서를 참조하세요.

MongoDB 사용을 시작하는 데 도움이 되도록 다양한 드라이버 에디션에서 시작 가이드 를 제공합니다. 드라이버 설명서 는 MongoDB로 개발 시작을 참조하세요.

기본적으로 MongoDB는 bindIp를 로컬 호스트 네트워크 인터페이스에 바인딩된 127.0.0.1로 설정한 상태로 시작합니다. 즉 mongod가 동일한 머신에서 실행 중인 클라이언트의 연결만 허용할 수 있다는 의미입니다. 원격 클라이언트는 mongod애 연결할 수 없으며, 이 값이 원격 클라이언트가 액세스할 수 있는 유효한 네트워크 인터페이스로 설정되어 있지 않은 한 mongod복제본 세트를 초기화할 수 없습니다.

이 값은 다음 중 한 가지 방법으로 구성할 수 있습니다.

  • MongoDB 구성 파일에서 bindIp를 통해

  • 명령줄 인수를 통해 --bind_ip

경고

로컬 호스트가 아닌(예: 공개적으로 액세스할 수 있는) IP 주소에 바인딩하기 전에 클러스터를 무단 액세스로부터 보호해야 합니다. 보안 권장 사항의 전체 목록은 보안 체크리스트 를 참조하세요. 최소한 인증을 활성화 하고 네트워크 인프라를 강화하는 것을 고려하세요.

bindIp 구성에 관한 자세한 정보는 IP 바인딩에서 확인할 수 있습니다.

← Red Hat 또는 CentOS에 MongoDB 커뮤니티 에디션 설치