SOOJLE 서버 구조

개요

  • application.py : SOOJLE 서버 메인

  • apps: 각각의 서비스 API 집합소

  • database: SOOJLE DB의 초기화 및 DB와 데이터 통신을 위한 함수 보관소

  • error.py: 프로토콜 에러 핸들러 집합소

  • global_func.py: 공통 함수 집합소

  • requirments.txt: 필수 모듈 집합소

  • static: 프론트엔드 코드 집합소

  • templates: 각 페이지 HTML 집합소

  • SJ_Auth: 해당 폴더는 세종대학교 포털로그인 크롤러 API이다. 프로젝트를 진행하면서 개발한 API는 앞으로 이렇게 따로 Import하여 사용/관리 한다.

자세한 소스코드는 깃허브 참고 (https://github.com/837477/SOOJLE)

Database(MongoDB + Pymongo)

SOOJLE의 데이터베이스는 저번 주 의사결정에 의하여 최종 MongoDB로 결정되었다. 따라서 앞으로의 개발을 위해 서버에 MongoDB를 연결하는 작 업이 필요하다.

MongoDB 와 Pymongo 연결

Python에서 MongoDB를 컨트롤하기 위하여 Pymongo를 이용.

서버 구조 파일(.py) 중 어디에서나 DB에 접근할 수 있도록, Flask 모듈의 'g' 전역 변수 MongoDB의 커서를 연결시켜 두었다. 이로써 Flask가 import된 곳이라면 언제든지 DB의 커서에 접근을 할 수 있다.

단, g 전역 변수는 Flask의 내부 변수이므로 Request 시에만 사용할 수 있다. 따라서 데코레이터를 이용하여 서버에 요청이 올 때마다 전역변수 g에 DB 커서를 연결을 해줌으로써 위 코드와 같이 바로 DB 커넥션에 연결할 수 있게 된다. 또한 요청이 끝나게 되면 DB 연결을 해지한다.

MongoDB 관리자 계정 잠금

MongoDB는 초기 관리자 계정 잠금 기능이 비활성화되어있다. 따라서 데이터 보안을 위해, 관리자 계정만 DB에 접근할 수 있도록 계정 설정을 해야 한다. MongoDB Server에 관리자 계정이 설정되었기 때문에 Pymongo 접속 또한 관리자 계정을 통해서 접속을 해야 DB에 접근이 가능하다.

Last updated