[에러] 구름IDE에서 MongoDB 원격 접속 방법 및 에러
학과정보알리미 토이프로젝트를 Flask + MongoDB + Studio 3T(구 Robo 3T)로 진행하던 중, 몽고DB 초기 설정 중 생긴 여러 오류를 간신히 해결하고 이를 기록하기 위해 작성하는 글이다.
구름IDE가 클라우드 서비스 플랫폼이고, 무료로 웹호스팅을 할 수 있어 AWS EC2 대신 선택했는데 사용자가 많지않은지 에러를 해결하는데 상당히 오래 걸렸다..
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
Studio 3T 연결
구름IDE 컨테이너에서 설치된 mongodb에 원격으로 접속하는 방법
위 링크 방법을 그대로 따라하면 된다. 필자는 AWS EC2에서 했던대로 포트포워딩 방식으로 MongoDB와 Studio 3T(구 Robo 3T)를 연결하려 했는데 죽어도 안되더라. 그냥 ssh 쓰자. 잘된다.
에러
service mongod start 에러
또는 systemctl start mongod 둘 다 안된다.
systemctl 안 먹는 이유
구름IDE는 Docker 기반으로 컨테이너를 제공하므로 내부 보안 정책상 컨테이너 실행 시 모든 권한을 열어줄 수 없다고 한다. 그래서 systemctl로 service 등록을 하는 것은 불가능하다.
터미널에 mongod 입력하면 start인거고, ctrl+c로 종료하면 stop인거다. 굳이 service나 systemctl 쓸 필요없다. 필자는 이걸 깨닫는데 이틀을 소모했다.
mongod // == service mongod start
ctrl+c // == service mongod stop
SyntaxError: Non-ASCII character '\xec'
구름 포럼
Python2의 경우 코드나 주석에 한글이 있을 경우, 해당 에러가 발생한다. 해결하기 위해선 아래 주석 코드를 꼭 넣어야 한다.
# -*- coding: utf-8 -*-