학과정보알리미 토이프로젝트를 Flask + MongoDB + Studio 3T(구 Robo 3T)로 진행하던 중, 몽고DB 초기 설정 중 생긴 여러 오류를 간신히 해결하고 이를 기록하기 위해 작성하는 글이다.
구름IDE가 클라우드 서비스 플랫폼이고, 무료로 웹호스팅을 할 수 있어 AWS EC2 대신 선택했는데 사용자가 많지않은지 에러를 해결하는데 상당히 오래 걸렸다..
how-to-install-mongodb
우선, MongoDB 설치는 구름 문서에서 잘 알려주니 이를 따르면 된다. 아래 명령어를 터미널에 입력하면 MongoDB 설치가 완료된다.
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 && (echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list) && apt-get update && apt-get install -y mongodb-org && mkdir -p /data/db
sudo apt update
mongod // mongodb를 start한다.
mongo // 2번째 터미널을 열고 입력한다. 활성화된 mongodb에 접근해서 쉘 명령어로 조작한다.
sudo vi /etc/mongod.conf
mongod.conf에 접근해서 bindIp와 authorizaion을 수정한다. 아래 사항만 똑같이 바꿔주면 된다.
# /etc/mongod.conf
net :
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
구름IDE 컨테이너에서 설치된 mongodb에 원격으로 접속하는 방법
위 링크 방법을 그대로 따라하면 된다. 필자는 AWS EC2에서 했던대로 포트포워딩 방식으로 MongoDB와 Studio 3T(구 Robo 3T)를 연결하려 했는데 죽어도 안되더라. 그냥 ssh 쓰자. 잘된다.
또는 systemctl start mongod 둘 다 안된다.
systemctl 안 먹는 이유
구름IDE는 Docker 기반으로 컨테이너를 제공하므로 내부 보안 정책상 컨테이너 실행 시 모든 권한을 열어줄 수 없다고 한다. 그래서 systemctl로 service 등록을 하는 것은 불가능하다.
터미널에 mongod 입력하면 start인거고, ctrl+c로 종료하면 stop인거다. 굳이 service나 systemctl 쓸 필요없다. 필자는 이걸 깨닫는데 이틀을 소모했다.
mongod // == service mongod start
ctrl+c // == service mongod stop
구름 포럼
Python2의 경우 코드나 주석에 한글이 있을 경우, 해당 에러가 발생한다. 해결하기 위해선 아래 주석 코드를 꼭 넣어야 한다.
# -*- coding: utf-8 -*-