웹 서비스 배포하기 @django

박세웅·2021년 8월 28일
0

여태까지 했던 과정들은 모두 임시 서버에서 돌아가는 과정이었다. 지금부터는 웹 서버에 배포해 볼 것이다. 크게 3단계로 나뉘는데, django 설정 -> wsgi -> nginx 웹 서버에 연결 이라는 과정을 거친다. 도식화해보면 다음과 같다.

이번 포스팅에서는 큰 흐름만 정리하고, 나중에 실제 프로젝트를 개발하면서 따로 포스팅을 작성해 볼 예정이다.

django 설정

django 설정은 1) 환경 변수를 설정하고, 2) collectstatic 명령어로 흩어진 앱들의 static 파일들을 한 경로에 넣어주는 과정이다.

1) 환경 변수 설정

settings.py 폴더에 보면 SECRET_KEY와 DEBUG라는 변수가 있다. SECRET_KEY는 프로젝트의 보안 키로, 외부에 노출되면 안된다. DEBUG는 개발 단계에서 개발자에게 도움이 되는 디버그 정보를 보여줄 지 여부를 결정하는 변수인데, 배포 시에는 디버그 정보가 보여서는 안되므로 FALSE로 지정해준다.


SECRET_KEY = '내용'

DEBUG = True

구름 IDE 환경에서는 컨테이너에서 [설정] 탭을 들어가서 환경 변수를 추가해 준 다음, 내용을 바꿔주면 된다. os.environ으로 환경 변수에 접근할 수 있다.

SECRET_KEY = os.environ['환경 변수명']

### DEBUG가 아니면 다 False로 바꾸기
DEBUG = True if os.environ['DEBUG'] == 'True' else False

2) collectstatic

웹 서버에 배포하면, django 내부 서버에서와는 달리 static 폴더에 직접 접근할 수 없다. 그러므로, collectstatic 명령어를 활용해서 따로 경로를 설정해주어야 한다.

먼저 경로를 만들어준다. settings.py의 마지막 줄에 다음과 같이 추가해준다.

STATIC_ROOT = BASE_DIR / 'staticfiles' 

BASE_DIR는 manage.py가 있는, 우리 프로젝트의 기본 경로이다. staticfiles라는 폴더명으로 만들어주었다. 그 다음, 쉘에 아래의 커맨드를 입력해준다.

python manage.py collectstatic

그러면 staticfiles 폴더가 생성되고, 모든 앱의 static 파일이 모이게 된다.

wsgi

가상 환경에서 uWSGI를 설치하고, 실행시키면 된다. 명령어가 길어서, uwsgi.ini 파일을 만들어서 실행을 시킨다.

nginx

웹 서버는 HTTP로 받은 요청을 수행해서 웹 브라우저에 HTML 등의 파일을 띄운다. 여러 방식이 있는데, 소켓 방식이 효율적이라고 한다. nginx에 wsgi를 연결하고, nginx -> wsgi 순으로 실행시키면 된다.

wsgi와 nginx에 대해서는 정말 간단하게만 짚었는데, 추후에 더 정리해 볼 예정이다.

참고자료

M.B.I.T 테스트 페이지 만들기! With Django (제주코딩베이스캠프)

profile
개발, 투자, 운동, 영화에 관심이 많습니다.

0개의 댓글