시놀로지 나스는 도커를 사용할 수 있어서 이런저런 인프라를 올려보기에 적당합니다. 간단한 웹 서비스를 만들 때 데이터베이스로 NoSQL을 사용해보고 싶어서 이번에는 mongoDB를 올려봤습니다. 필요하신 분들을 위해 어떤 순서로 작업해야 하는지만 살짝 알아보죠.
먼저 시놀로지 DSM에서 도커 서비스를 열어 레지스트리 메뉴에서 mongoDB의 이미지를 선택해 줍니다. 이때 자신의 NAS CPU를 확인하셔서 AVX(Advanced Vector eXtensions) 지원이 불가능하다면 4. 대의 버전을 다운로드하셔야 합니다. 5. 이상 버전은 AVX 미지원 CPU에서는 돌아가지 않거든요.(참고로 셀러론은 AVX를 지원하지 않습니다)
이미지를 다 받으셨으면 컨테이너를 생성해주세요. 볼륨은 ‘/data/db’ 경로로 마운트 시켜주시고, 컨테이너 포트는 27017로 지정해주세요. 이때 로컬 포트도 동일하게 27017로 해주시는 게 편합니다. 환경변수에는 데이터베이스 root 계정과 패스워드를 추가해주셔야 합니다. 패스워드는 ‘MONGO_INITDB_ROOT_PASSWORD’, 아이디는 ‘MONGO_INITDB_ROOT_USERNAME’라는 이름의 파라미터에 각각 정의해주세요. 이렇게 작업해주시면 바로 컨테이너가 실행되며, mongoDB가 구동 됩니다.
mongoDB 컨테이너에 접속해서 터미널로 작업을 하시려면, 우선 컨테이너 메뉴를 띄우시고 터미널 메뉴를 선택해주세요. ubuntu 처럼 바로 접속이 되지는 않습니다. 이때 왼편 위쪽의 생성 버튼을 누르고, 다시 [명령으로 실행]을 클릭하여 ‘mongo’라는 명령어를 등록하세요. 그러면, 그 아래쪽에 ‘mongo’라는 버튼이 등록됩니다. 이것을 클릭하시면 왼편의 검은 화면에 mongoDB shell 화면이 열리게 돼요. 이곳에서 명령어를 사용해서 정보를 조회하거나 여러 작업을 하실 수 있습니다. 그런데, 도커의 터미널로 DB Shall에 접근할 때 인증을 하지 않으면 에러1)가 나기 때문에, 접속할 때 계정정보를 함께 입력(‘mongo -u 유저이름 -p 패스워드’)해 주세요.
마지막으로 GUI 환경으로 클라이언트에서 mongoDB에 접속할 수 있는 툴을 소개해드리고 끝마치겠습니다. 이전에는 Robo 3T라는 무료 소프트웨어와 Studio 3T라는 유료 소프트웨어가 있었는데, 최근 Studio 3T로 통합이 되었어요. 이 프로그램을 설치하시면 처음 한 달은 모든 기능을 사용하실 수 있고, 그 이후에는 기능이 제한된 무료 버전을 사용하실 수 있습니다. 물론 유료 사용자로 등록하셔서 Studio 3T의 모든 기능을 사용하셔도 됩니다만, 그렇게 하실 분은 거의 없겠죠?
해당 프로그램을 설치하신 후 DB Connect를 실행하시면, 데이터베이스 정보를 입력하는 창이 뜹니다. 우선 연결을 수동으로 관리하는 메뉴를 선택하시고, [다음]. 연결 창이 뜨면 커넥션 이름을 편한 대로 지정해주세요. 서버에는 mongoDB의 IP와 Port를 적어줍니다. 이후 다음 탭인 인증(Authentication)으로 넘어가서 인증모드를 Legacy(SCRAM-SHA-1)로 선택합니다. 그리고, 사용자 이름과 패스워드 란에 mongoDB를 설치할 때 지정한 root 계정과 패스워드를 입력하세요. 마지막으로 인증 데이터베이스 란에 해당 사용자가 등록된 데이터베이스 이름을 써주시면 되는데, 그게 뭐냐고요? 네. ‘admin’입니다.(이것을 알아내는데 터미널 접속이 필요했음)
모두 입력하셨으면 왼편 아래쪽의 [연결 테스트] 버튼을 눌러보세요. 제대로 잘 연결되시죠? 그러시길 바랄게요. 😉
추가: mongoDB가 설치되어있는 root에 바로 접속하려면, [터미널]-[생성]-[명령으로 실행] 을 선택하고, ‘bash’라고 입력한 후 확인을 누르면 됩니다.
1) CRUD 작업 등에 ‘command insert requires authentication
‘에러가 발생할 수 있음
정보 생성일: 2022-10