본문 바로가기

Database/MongoDB

[MongoDB] MongoDB 빌드하기

 

MongoDB는 오픈소스이므로 코드를 Github에서 확인할 수 있다.

MongoDB에 더 깊은 이해를 가지고자 소스를 분석해보고 싶다는 생각을 했다. 

그리고 능력이 된다면 Commit까지,,,, Opensource Committor는 내 눈에는 멋있어보인다. 

 

이번에는 소스코드를 다운로드 받고, 소스를 통해 빌드한 뒤 빌드된 바이너리로 MongoDB를 실행시켜보고자 한다. 

1. 소스 다운로드 

https://github.com/mongodb/mongo

 

GitHub - mongodb/mongo: The MongoDB Database

The MongoDB Database. Contribute to mongodb/mongo development by creating an account on GitHub.

github.com

가장 첫번째 단계는 소스에서 MongoDB를 빌드하는 것이다. 

Github에서 코드를 다운로드 받고, 해당 디렉토리로 이동한다. 

 

git clone https://github.com/mongodb/mongo.git

 

git clone 하는데 거의 1GB가 다운로드 받아지는건 처음 봤다. 

.... 

2. dependencies 확인 

MongoDB를 빌드하기 위한 조건과, 방법은 친절하게도 문서에 전부 나와있다. 

https://github.com/mongodb/mongo/blob/master/docs/building.md

 

GitHub - mongodb/mongo: The MongoDB Database

The MongoDB Database. Contribute to mongodb/mongo development by creating an account on GitHub.

github.com

 

MongoDB를 빌드하기 위해선 필요한 모든 의존성을 확인해야한다.

1. OS 버전 -> 나는 macos를 사용중이다. 

2. C++ compiler 버전 -> macos 는 clang이 있다. 

gcc --version 

Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bi

 

clang 기준 12.0 이상이면 된다고 한다. 

3. python3.7+ 

python3 --version

Python 3.10.8

파이썬 버전을 확인해준다. 

 

그리고 13GB의 디스크공간이 필요하고, install-all을 하게 되면 600GB가 필요하다고 한다.

내 맥북은 공간이 작아서 install-all은 못할 것 같다. 

3. python prerequisites 설치 

빌드에 필요한 파이썬 모듈들을 설치해주어야한다. 근데, 그냥 설치할 경우에는 공통 모듈로 설치가 되기 때문에, 가상환경을 만들고 가상환경 위에 설치해주겠다. 

python3 -m venv venv # 가상환경 생성 
source venv/bin/activate # 가상환경 활성화

가상환경이 활성화되면 콘솔에 (venv) 가 노출될 것이다. 

 

다음에 prerequisites를 설치한다. 

python3 -m pip install -r ./etc/pip/compile-requirements.txt

설치

4. 빌드하기 

python3 buildscripts/scons.py install-mongod

해당 스크립트로 빌드를 해준다. 

 

빌드를 시작하면, 명령어를 입력한 디렉토리에 build 디렉토리가 생긴다.

그리고 빌드를 진행하기 시작한다.

무자비하게 스크롤이 올라간다. 

 

맥북 프로 m1칩 16GB 메모리 기준 약 20분~30분 정도 걸린 것 같다.

그 기간 동안 Running Cat이 정말 열심히 달렸다.

5. 실행 시켜보기 

빌드가 끝난뒤 바이너리 파일은 ./build/install/bin에 mongod가 위치하고 있다.

실행시켜보자.

./build/install/bin/mongod

이상하게 죽는다. 

에러를 확인해보니 dbpath가 없다는 듯. 

그냥 대충 만들어준다. 

mkdir data
./build/install/bin/mongod --dbpath ./data

잘 실행이 된다. 

굳. 

 

다음은 좀 더 깊이있게 뜯어봐야겠다.