본문 바로가기

Python Web Framework/Django, Flask

[Django] Trouble Shooting

반응형

장고로 API서버를 구축하면서

발생한 문제와 해결과정을 기록한 포스팅입니다.

 

 

 

 

1. Django TimeZone 문제

- 서버 로컬에서 date를 확인 할 경우 현재 한국 시간으로 잘 출력된다.

$ date

 

- 혹시 아래와 같이 KST 시간이 아닌 서버 시간이 UTC 시간으로 설정이 되어있는 경우는 변경해준다 (필요시)

 

- 장고에서 datetime.now()를 확인하면 UTC 시간으로 출력(한국 기준 9시간 전)

# Django 내부 코드
from datetime import datetime

datetime.now()

 

- 장고 로그를 기록해놔야하기 때문에 현재 한국 시간을 잘 출력하는게 중요

- 서버시간(KST)과 장고시간(UTC)가 다르게 출력되는 이유는 장고 기본 setting.py때문

 

- 한국시간으로 변경하려면 아래와 같이 설정해준다.

$ vi 장고프로젝트이름/setting.py

- 기존 타임 존을 주석처리하고, 'Asia/Seoul'을 입력해준다.

- 기존 LANGUAGE_CODE 와 TIME_ZONE을 제외하고 모두 주석처리를 해줘야 잘 적용이 된다.

 

 

 

2. Django Static 파일 사용 시 발생 에러

- 기본적으로 Django를 테스트 할 때 사용하는 runserver는 개발을 위한 임시 웹서버의 기능을 한다.

- 테스트를 위해 DEBUG = False 로 설정 후 runserver를 하면 static file은 장고에서 제공 할 수 없다

 ( 다른 추가 설정을 해줘야 임시적으로 확인 가능)

- 배포를 위한 목적으로 이번 프로젝트를 진행 했기 때문에 다음과 같이 구성함 : Django는 앱서버로, Gunicorn은 앱서버와 웹서버의 인터페이스 역할로, Nginx는 웹서버의 역할을 수행하기 위해 3개를 동시에 진행

- 이때 static file은 웹서버가 제공하는 것이 바람직하다.

 

장고 기본 설정
$ vi 장고프로젝트이름/settings.py

 

Nginx 추가 설정
$ sudo vi /etc/nginx/sites-enabled/설정파일이름

 

- 가장 마지막 하단에 실제 /static 폴더가 위치하는 경로를 설정해준다

- 설정이 변경되면 Nginx, Gunicorn 재 실행

$ sudo systemctl restart nginx

$ sudo systemctl restart gunicorn

 

 

3. Django + Gunicorn + Nginx 연결 오류

- 웹서버와 앱서버 그리고 이 둘을 연결해주는 인터페이스, 이렇게 3개간의 연결에 문제가 발생한 경우

- 장고와 구니콘은 연결이 되어있으나 Nginx와의 연결 오류 발생 

 

- Nginx의 위와 같은 설정에서 proxy_pass 부분 유의! 

- http://가 아닌 https://로 작성하게 되면 TIMEOUT이 뜨면서 연결 에러가 발생한다(유의할 점)

반응형