Django + gunicorn + mongoDB(Djongo) 개발 환경 구성

test·2022년 2월 3일
0

Django

목록 보기
1/1

Django와 MongoDB 연동하기

python3 가상환경 구성

[가상환경 구성]

python3 -m venv django_venv 로 가상환경 구성

source django_venv/bin/activate (가상환경 실행)
deactivate 


[구성 라이브러리 *라이브러리 충돌 주의*] 

Django==3.0.5
djongo==1.3.3
gunicorn==20.1.0
mongoengine==0.23.1
pymongo==3.12.3
sqlparse==0.2.4

Docker MongoDB 설치

[cmd]
docker pull mongo
docker run --name mongodb-container -v ~/data:/data/db -d -p 27017:27017 mongo

[cmd - mongo 접속]
docker exec -it mongodb-container bash

[컨테이너 내부]
root@073c229db4e5:/# mongo

Django settings.py 설정

[settings.py]
#<> 부분 수정

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'ENFORCE_SCHEMA': True,
        'LOGGING': {
            'version': 1,
            'loggers': {
                'djongo': {
                    'level': 'DEBUG',
                    'propogate': False,                        
                }
            },
         },
        'NAME': <'db이름'>,
        'CLIENT': {
            'host': '127.0.0.1',
            'port': 27017,
            'username': <'Mongo_id'>,
            'password': <'Mongo_pass'>,
            'authSource': 'admin',
            'authMechanism': 'SCRAM-SHA-1',
        }
    }
}

models.py

[Models.py]

from djongo import models

class User(models.Model):
    _id = models.ObjectIdField()
    username = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)
    password = models.CharField(max_length=50)

    class Meta:
        db_table = 'user'
        
        

makemigrations / migration / showmigration /sqlmigrate
따로정리

gunicorn config 파일

[gunicorn-cfg.py]

-*- encoding: utf-8 -*-

bind = '0.0.0.0:5005'
workers = 1
accesslog = '-'
loglevel = 'debug'
capture_output = True
enable_stdio_inheritance = True

wsgi.py 파일

[wsgi.py]

-*- encoding: utf-8 -*-

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')

application = get_wsgi_application()

gunicorn 실행 방법 (개발 환경)

gunicorn --config gunicorn-cfg.py core.wsgi --reload

[배포] Django(uwsgi) + Nginx 추가 build

[cmd]
docker-compose up --build

[yaml]

version: '3.8'
services:
  <app_name>:
    container_name: <container_app_name>
    restart: always
    env_file: .env
    build: .
    networks:
      - db_network
      - web_network
  nginx:
    container_name: nginx
    restart: always
    image: "nginx:latest"
    ports:
      - "85:85"
    volumes:
      - ./nginx:/etc/nginx/conf.d
    networks:
      - web_network
    depends_on:
      - <app_name>
networks:
  db_network:
    driver: bridge
  web_network:
    driver: bridge

nginx.conf 파일

[nginx.conf]

upstream webapp {
    server <app_name>:5005;
}

server {
    listen 85;
    server_name localhost;

    location / {
        proxy_pass http://webapp;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}
profile
test

0개의 댓글