[mongoDB] 몽고DB 설치하기(4.4)
포스트
취소

[mongoDB] 몽고DB 설치하기(4.4)

Mongo DB(4.4) 설치(Red Hat or CentOS)

Overview

몽고DB 4.4 커뮤니티 에디션을 CentOS에서 yum을 이용하여 설치하는 방법

주의

WSL 에서는 아직 지원되지 않는다고 한다.

설치 방법

1. 패키지 매니저 yum 설정하기

/etc/yum.repos.d/ 경로에 mongodb-org-4.4.repo 파일을 생성한다음 아래 내용을 입력하여 저장해준다.

1
2
3
4
5
6
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

yum repolist 명령어를 수행하여 MongoDB Repository가 정상적으로 추가되었는지 확인해보자.

2. MongoDB 패키지 설치하기

  • 최신 stable 버전을 설치하려면
    1
    
      sudo yum install -y mongodb-org
    
  • 원하는 버전(여기서는 4.4.11)을 설치하려면

    1
    
      sudo yum install -y mongodb-org-4.4.11 mongodb-org-server-4.4.11 mongodb-org-shell-4.4.11 mongodb-org-mongos-4.4.11 mongodb-org-tools-4.4.11
    

패키지를 업그레이드할 때,(yum upgrade 등) 자동으로 최신 버전이 업그레이드 될 수 있다.

그런 현상을 방지하고자 할 때는, /etc/yum.conf 파일에 아래 exclude 구문을 추가해주면 된다.

1
2
3
# /etc/yum.conf

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

설치 끝!

MongoDB 실행하기

전제 조건

대부분의 유닉스 시스템들은 시스템 리소스에 제한을 둔다. 이 제한은 MongoDB 작업에 부정적인 영향을 끼칠 수 있으므로 조정해주어야 한다. 조정이 안되어있다면 MongoDB를 실행했을 때 에러를 볼 수 있다.

ulimit 설정 관련 참고 자료

디렉토리 경로

Default 설정으로, MongoDB는 mongod 계정에서 아래 경로에 있는 디렉토리를 이용한다.

  • /var/lib/mongo (the data directory)
  • /var/log/mongodb (the log directory)

위 설치 방법대로 yum 패키지 매니저를 이용하여 설치하였다면 해당 경로에 디렉토리가 자동으로 생성되어있을 것이다.

만약, 원하는 경로로 변경하고 싶다면 여기를 참고하자.

SELinux 설정

만약, SELinux가 동작 중이라면, 아래 두 가지(cgroup, nestat)에 대한 접근을 허용해줘야한다.

  • cgroup에 대한 접근 허용하기

    SELinux는 MongoDB 프로세스가 /sys/fs/cgroup 에 대한 접근을 허용하지 않는다. (사용 가능한 메모리를 결정하는데 필요하다.)

    아래 방법대로 정책을 변경해주자.

    1. checkpolicy 패키지 설치

      아래 명령어로 checkpolicy 패키지를 설치하자.

      1
      
       sudo yum install checkpolicy
      
    2. mongodb_cgroup_memory.te 파일 생성

      터미널에 아래 코드를 그대로 복사하여 mongodb_cgroup_memory.te 파일을 생성하자.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
       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. 파일이 생성되었다면, 아래 3가지 명령어를 이용해서 정책을 컴파일하고 적용해주자.

      1
      2
      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
      
  • netstat에 대한 접근 허용하기

    SELinux는 MongoDB 프로세스가 /proc/net/netstat 에 대한 접근을 허용하지 않는다. (FTDC(Full Time Diagnostic Data Capture)에 필요하다.)

    아래 방법대로 정책을 변경해주자.

    1. checkpolicy 패키지 설치

      아래 명령어로 checkpolicy 패키지를 설치하자.

      1
      
       sudo yum install checkpolicy
      
    2. mongodb_cgroup_memory.te 파일 생성

      터미널에 아래 코드를 그대로 복사하여 mongodb_cgroup_memory.te 파일을 생성하자.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
       cat > mongodb_proc_net.te <<EOF
       module mongodb_proc_net 1.0;
      
       require {
           type proc_net_t;
           type mongod_t;
           class file { open read };
       }
      
       #============= mongod_t ==============
       allow mongod_t proc_net_t:file { open read };
       EOF
      
    3. 파일이 생성되었다면, 아래 3가지 명령어를 이용해서 정책을 컴파일하고 적용해주자.

      1
      2
      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
      

드디어 실행

  • mongod 프로세스 시작하기

    1
    
      sudo systemctl start mongod
    

    만약, Failed to start mongod.service: Unit mongod.service not found. 에러가 발생한다면 아래와 같은 커맨드를 먼저 수행하자.

    1
    
      sudo systemctl daemon-reload
    

    그 다음, 다시 start 해보자

  • MongoDB 접속하기

    mongod가 실행중인 호스트에서 아래 명령어로 접속할 수 있다.

    1
    
      mongo
    
  • 실행 중인지 확인하기

    1
    
      sudo systemctl status mongod
    

Configuration 파일

yum 과 같은 패키지 매니저로 MongoDB를 설치한 경우, 아래 경로에 Configuration 파일이 존재한다.

1
/etc/mongod.conf

설정 파일은 yaml 형식으로 되어있으며, 여러 옵션들은 여기를 참고하자.

참고 자료

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

[Markdown] 마크다운 깃허브 스타일로 HTML 변환하기

[Node.js] Node.js의 특징