CentOS 7에 MongoDB 설치하는 방법 : 실전 예제로 배우는 쉽고 빠른 튜토리얼
MongoDB는 오픈소스 NoSQL 데이터베이스로, 고성능, 고가용성, 자동 확장성을 제공합니다. 이 글에서는 CentOS 7에 MongoDB를 설치하는 방법을 알려드립니다.
설치 전 요구사항
- CentOS 7 운영체제가 설치된 서버
- root 권한이나 sudo 권한이 있는 사용자 계정
- 인터넷 연결
MongoDB 저장소 추가하기
MongoDB는 CentOS의 기본 저장소에 포함되어 있지 않으므로, 별도의 저장소를 추가해야 합니다. 다음 명령어를 터미널에서 실행하여 MongoDB 저장소를 추가합니다.
sudo vi /etc/yum.repos.d/mongodb-org-5.0.repo
파일에 다음 내용을 입력하고 저장합니다.
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
MongoDB 이전 버전을 설치하려면 baseurl 라인의 버전 정보인 5.0을 4.x로 변경하고, gpgkey 라인의 5.0을 4.0으로 변경하고 설치하시면 됩니다.
/etc/yum.repos.d/mongodb-org-5.0.repo : [mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
yum repolist
명령을 실행하여 MongoDB 리포지토리가 추가되었는지 확인합니다.
yum repolist
[root@infracody.com ~]# yum repolist repo id repo name status base/7/x86_64 CentOS-7 - Base 10,072 *epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,756 extras/7/x86_64 CentOS-7 - Extras 513 mongodb-org-5.0 MongoDB Repository 116 updates/7/x86_64 CentOS-7 - Updates 3,773 zabbix/x86_64 Zabbix Official Repository - x86_64 266 zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - x86_64 5 repolist: 28,501
MongoDB 설치하기
저장소를 추가한 후, 다음 명령어를 터미널에서 실행하여 MongoDB를 설치합니다.
sudo yum install -y mongodb-org
[root@infracody.com ~]# yum install -y mongodb-org base | 3.6 kB 00:00:00 epel/x86_64/metalink | 6.6 kB 00:00:00 extras | 2.9 kB 00:00:00 mongodb-org-5.0 | 2.5 kB 00:00:00 updates | 2.9 kB 00:00:00 zabbix | 2.9 kB 00:00:00 zabbix-non-supported | 2.9 kB 00:00:00 (1/10): base/7/x86_64/group_gz | 153 kB 00:00:00 (2/10): base/7/x86_64/primary_db | 6.1 MB 00:00:00 (3/10): epel/x86_64/group_gz | 96 kB 00:00:00 (4/10): epel/x86_64/updateinfo | 1.0 MB 00:00:00 (5/10): extras/7/x86_64/primary_db | 247 kB 00:00:00 (6/10): epel/x86_64/primary_db | 7.0 MB 00:00:00 (7/10): updates/7/x86_64/primary_db | 15 MB 00:00:00 (8/10): zabbix-non-supported/x86_64/primary_db | 3.7 kB 00:00:00 (9/10): mongodb-org-5.0/7/primary_db | 77 kB 00:00:00 (10/10): zabbix/x86_64/primary_db | 158 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package mongodb-org.x86_64 0:5.0.8-1.el7 will be installed --> Processing Dependency: mongodb-org-database for package: mongodb-org-5.0.8-1.el7.x86_64 --> Processing Dependency: mongodb-org-tools for package: mongodb-org-5.0.8-1.el7.x86_64 --> Processing Dependency: mongodb-mongosh for package: mongodb-org-5.0.8-1.el7.x86_64 --> Running transaction check ---> Package mongodb-mongosh.x86_64 0:1.4.2-1.el8 will be installed ---> Package mongodb-org-database.x86_64 0:5.0.8-1.el7 will be installed --> Processing Dependency: mongodb-org-server for package: mongodb-org-database-5.0.8-1.el7.x86_64 --> Processing Dependency: mongodb-org-mongos for package: mongodb-org-database-5.0.8-1.el7.x86_64 --> Processing Dependency: mongodb-org-shell for package: mongodb-org-database-5.0.8-1.el7.x86_64 --> Processing Dependency: mongodb-org-database-tools-extra for package: mongodb-org-database-5.0.8-1.el7.x86_64 ---> Package mongodb-org-tools.x86_64 0:5.0.8-1.el7 will be installed --> Processing Dependency: mongodb-database-tools for package: mongodb-org-tools-5.0.8-1.el7.x86_64 --> Running transaction check ---> Package mongodb-database-tools.x86_64 0:100.5.2-1 will be installed --> Processing Dependency: cyrus-sasl-gssapi for package: mongodb-database-tools-100.5.2-1.x86_64 --> Processing Dependency: cyrus-sasl-plain for package: mongodb-database-tools-100.5.2-1.x86_64 --> Processing Dependency: cyrus-sasl for package: mongodb-database-tools-100.5.2-1.x86_64 ---> Package mongodb-org-database-tools-extra.x86_64 0:5.0.8-1.el7 will be installed ---> Package mongodb-org-mongos.x86_64 0:5.0.8-1.el7 will be installed ---> Package mongodb-org-server.x86_64 0:5.0.8-1.el7 will be installed ---> Package mongodb-org-shell.x86_64 0:5.0.8-1.el7 will be installed --> Running transaction check ---> Package cyrus-sasl.x86_64 0:2.1.26-24.el7_9 will be installed ---> Package cyrus-sasl-gssapi.x86_64 0:2.1.26-24.el7_9 will be installed ---> Package cyrus-sasl-plain.x86_64 0:2.1.26-24.el7_9 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================= Package Arch Version Repository Size ================================================================================================================================================= Installing: mongodb-org x86_64 5.0.8-1.el7 mongodb-org-5.0 6.1 k Installing for dependencies: cyrus-sasl x86_64 2.1.26-24.el7_9 updates 88 k cyrus-sasl-gssapi x86_64 2.1.26-24.el7_9 updates 41 k cyrus-sasl-plain x86_64 2.1.26-24.el7_9 updates 39 k mongodb-database-tools x86_64 100.5.2-1 mongodb-org-5.0 47 M mongodb-mongosh x86_64 1.4.2-1.el8 mongodb-org-5.0 39 M mongodb-org-database x86_64 5.0.8-1.el7 mongodb-org-5.0 6.2 k mongodb-org-database-tools-extra x86_64 5.0.8-1.el7 mongodb-org-5.0 11 k mongodb-org-mongos x86_64 5.0.8-1.el7 mongodb-org-5.0 20 M mongodb-org-server x86_64 5.0.8-1.el7 mongodb-org-5.0 28 M mongodb-org-shell x86_64 5.0.8-1.el7 mongodb-org-5.0 15 M mongodb-org-tools x86_64 5.0.8-1.el7 mongodb-org-5.0 6.1 k Transaction Summary ================================================================================================================================================= Install 1 Package (+11 Dependent packages) Total download size: 149 M Installed size: 557 M Downloading packages: (1/12): cyrus-sasl-gssapi-2.1.26-24.el7_9.x86_64.rpm | 41 kB 00:00:00 (2/12): cyrus-sasl-2.1.26-24.el7_9.x86_64.rpm | 88 kB 00:00:00 (3/12): cyrus-sasl-plain-2.1.26-24.el7_9.x86_64.rpm | 39 kB 00:00:00 warning: /var/cache/yum/x86_64/7/mongodb-org-5.0/packages/mongodb-mongosh-1.4.2.el7.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID e2c63c11: NOKEY Public key for mongodb-mongosh-1.4.2.el7.x86_64.rpm is not installed (4/12): mongodb-mongosh-1.4.2.el7.x86_64.rpm | 39 MB 00:00:00 (5/12): mongodb-org-5.0.8-1.el7.x86_64.rpm | 6.1 kB 00:00:00 (6/12): mongodb-org-database-5.0.8-1.el7.x86_64.rpm | 6.2 kB 00:00:00 (7/12): mongodb-database-tools-100.5.2.x86_64.rpm | 47 MB 00:00:01 (8/12): mongodb-org-database-tools-extra-5.0.8-1.el7.x86_64.rpm | 11 kB 00:00:00 (9/12): mongodb-org-server-5.0.8-1.el7.x86_64.rpm | 28 MB 00:00:00 (10/12): mongodb-org-mongos-5.0.8-1.el7.x86_64.rpm | 20 MB 00:00:00 (11/12): mongodb-org-tools-5.0.8-1.el7.x86_64.rpm | 6.1 kB 00:00:00 (12/12): mongodb-org-shell-5.0.8-1.el7.x86_64.rpm | 15 MB 00:00:00 ------------------------------------------------------------------------------------------------------------------------------------------------- Total 44 MB/s | 149 MB 00:00:03 Retrieving key from https://www.mongodb.org/static/pgp/server-5.0.asc Importing GPG key 0xE2C63C11: Userid : "MongoDB 5.0 Release Signing Key <packaging@mongodb.com>" Fingerprint: f567 9a22 2c64 7c87 527c 2f8c b00a 0bd1 e2c6 3c11 From : https://www.mongodb.org/static/pgp/server-5.0.asc Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mongodb-org-database-tools-extra-5.0.8-1.el7.x86_64 1/12 Installing : mongodb-org-server-5.0.8-1.el7.x86_64 2/12 Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service. Installing : cyrus-sasl-plain-2.1.26-24.el7_9.x86_64 3/12 Installing : cyrus-sasl-2.1.26-24.el7_9.x86_64 4/12 Installing : mongodb-mongosh-1.4.2-1.el8.x86_64 5/12 Installing : mongodb-org-mongos-5.0.8-1.el7.x86_64 6/12 Installing : cyrus-sasl-gssapi-2.1.26-24.el7_9.x86_64 7/12 Installing : mongodb-database-tools-100.5.2-1.x86_64 8/12 Installing : mongodb-org-tools-5.0.8-1.el7.x86_64 9/12 Installing : mongodb-org-shell-5.0.8-1.el7.x86_64 10/12 Verifying : cyrus-sasl-gssapi-2.1.26-24.el7_9.x86_64 2/12 Verifying : mongodb-org-mongos-5.0.8-1.el7.x86_64 3/12 Verifying : mongodb-org-tools-5.0.8-1.el7.x86_64 4/12 Verifying : mongodb-mongosh-1.4.2-1.el8.x86_64 5/12 Verifying : mongodb-org-database-tools-extra-5.0.8-1.el7.x86_64 6/12 Verifying : mongodb-org-database-5.0.8-1.el7.x86_64 7/12 Verifying : cyrus-sasl-2.1.26-24.el7_9.x86_64 8/12 Verifying : cyrus-sasl-plain-2.1.26-24.el7_9.x86_64 9/12 Verifying : mongodb-database-tools-100.5.2-1.x86_64 10/12 Verifying : mongodb-org-5.0.8-1.el7.x86_64 11/12 Verifying : mongodb-org-server-5.0.8-1.el7.x86_64 12/12 Installed: mongodb-org.x86_64 0:5.0.8-1.el7 Dependency Installed: cyrus-sasl.x86_64 0:2.1.26-24.el7_9 cyrus-sasl-gssapi.x86_64 0:2.1.26-24.el7_9 cyrus-sasl-plain.x86_64 0:2.1.26-24.el7_9 mongodb-database-tools.x86_64 0:100.5.2-1 mongodb-mongosh.x86_64 0:1.4.2-1.el8 mongodb-org-database.x86_64 0:5.0.8-1.el7 mongodb-org-database-tools-extra.x86_64 0:5.0.8-1.el7 mongodb-org-mongos.x86_64 0:5.0.8-1.el7 mongodb-org-server.x86_64 0:5.0.8-1.el7 mongodb-org-shell.x86_64 0:5.0.8-1.el7 mongodb-org-tools.x86_64 0:5.0.8-1.el7 Complete!
MongoDB 설치하면 mongod.service
서비스 파일이 생성되고, 리부팅 혹은 서버 시작 시 자동으로 MongoDB 서비스를 시작하도록 등록되어 있습니다.
설치가 완료되면, 다음 명령어로 MongoDB 서비스를 시작합니다.
sudo systemctl start mongod
MongoDB 서비스가 정상적으로 작동하는지 확인하려면, 다음 명령어를 터미널에서 실행합니다.
sudo systemctl status mongod
다음과 같은 출력이 나오면 성공적으로 설치된 것입니다.
[root@infracody.com ~]# sudo systemctl status mongod ● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2022-05-18 17:03:05 KST; 1min 10s ago Docs: https://docs.mongodb.org/manual Process: 6385 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Process: 6383 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 6378 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 6376 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Main PID: 6388 (mongod) CGroup: /system.slice/mongod.service └─6388 /usr/bin/mongod -f /etc/mongod.conf May 18 17:03:04 infracody.com systemd[1]: Starting MongoDB Database Server... May 18 17:03:04 infracody.com mongod[6385]: about to fork child process, waiting until server is ready for connections. May 18 17:03:04 infracody.com mongod[6385]: forked process: 6388 May 18 17:03:05 infracody.com mongod[6385]: child process started successfully, parent exiting May 18 17:03:05 infracody.com systemd[1]: Started MongoDB Database Server.
MongoDB 접속하기
MongoDB 서비스가 실행되고 있다면, 다음 명령어로 MongoDB 쉘에 접속할 수 있습니다.
mongo
[root@infracody.com ~]# mongo MongoDB shell version v5.0.8 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("f244a546-179e-4fab-ab2a-4da5838b6510") } MongoDB server version: 5.0.8 ================ Warning: the "mongo" shell has been superseded by "mongosh", which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in an upcoming release. For installation instructions, see https://docs.mongodb.com/mongodb-shell/install/ ================ Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see https://docs.mongodb.com/ Questions? Try the MongoDB Developer Community Forums https://community.mongodb.com --- The server generated these startup warnings when booting: 2022-05-18T17:03:05.200+09:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem 2022-05-18T17:03:05.931+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted 2022-05-18T17:03:05.931+09:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' 2022-05-18T17:03:05.931+09:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never' --- --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >
MongoDB 쉘에서 다양한 명령어를 사용하여 데이터베이스를 생성하고, 조회하고, 수정하고, 삭제할 수 있습니다. 자세한 내용은 MongoDB 공식 문서를 참고하세요.
MongoDB 설정하기
MongoDB의 설정 파일은 /etc/mongod.conf에 있습니다. 이 파일을 편집하여 MongoDB의 동작을 변경할 수 있습니다. 예를 들어, MongoDB의 포트 번호를 변경하려면, 다음과 같이 파일을 수정합니다.
# network interfaces
net:
port: 27017 # 원하는 포트 번호로 변경
bindIp: 127.0.0.1 # localhost only
설정 파일을 수정한 후, MongoDB 서비스를 재시작해야 적용됩니다.
sudo systemctl restart mongod
MongoDB 보안하기
MongoDB는 기본적으로 인증이 비활성화되어 있으므로, 누구나 접속할 수 있습니다. 이는 보안상 위험하므로, 인증을 활성화하고 관리자 계정을 생성하는 것이 좋습니다. 다음 단계를 따라서 MongoDB를 보안하세요.
- MongoDB 쉘에 접속합니다.
- admin 데이터베이스로 이동합니다.
- 관리자 계정을 생성합니다.
- MongoDB 쉘을 종료합니다.
- /etc/mongod.conf 파일을 편집하여 인증 옵션을 활성화합니다.
- MongoDB 서비스를 재시작합니다.
- 관리자 계정으로 MongoDB 쉘에 접속합니다.
다음은 각 단계별로 실행할 명령어입니다.
# 1. MongoDB 쉘에 접속
mongo
# 2. admin 데이터베이스로 이동
use admin
# 3. 관리자 계정 생성
db.createUser(
{
user: "admin", # 원하는 사용자 이름으로 변경
pwd: "password", # 원하는 비밀번호로 변경
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
# 4. MongoDB 쉘 종료
exit
# 5. /etc/mongod.conf 파일 편집
sudo vi /etc/mongod.conf
# security 섹션에 다음 내용 추가
security:
authorization: enabled
# 6. MongoDB 서비스 재시작
sudo systemctl restart mongod
# 7. 관리자 계정으로 MongoDB 쉘 접속
mongo -u admin -p password --authenticationDatabase admin
마치며
지금까지 CentOS 7에 MongoDB를 설치하고, 설정하고, 보안하는 방법을 알아보았습니다. MongoDB는 강력하고 유연한 NoSQL 데이터베이스로, 다양한 애플리케이션에 사용할 수 있습니다. MongoDB를 사용하여 멋진 프로젝트를 만들어보세요!
- 블로그 : www.infracody.com
이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.