여태까지 했던 과정들은 모두 임시 서버에서 돌아가는 과정이었다. 지금부터는 웹 서버에 배포해 볼 것이다. 크게 3단계로 나뉘는데, django 설정 -> wsgi -> nginx 웹 서버에 연결 이라는 과정을 거친다. 도식화해보면 다음과 같다.
이번 포스팅에서는 큰 흐름만 정리하고, 나중에 실제 프로젝트를 개발하면서 따로 포스팅을 작성해 볼 예정이다.
django 설정은 1) 환경 변수를 설정하고, 2) collectstatic 명령어로 흩어진 앱들의 static 파일들을 한 경로에 넣어주는 과정이다.
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
웹 서버에 배포하면, django 내부 서버에서와는 달리 static 폴더에 직접 접근할 수 없다. 그러므로, collectstatic 명령어를 활용해서 따로 경로를 설정해주어야 한다.
먼저 경로를 만들어준다. settings.py의 마지막 줄에 다음과 같이 추가해준다.
STATIC_ROOT = BASE_DIR / 'staticfiles'
BASE_DIR는 manage.py가 있는, 우리 프로젝트의 기본 경로이다. staticfiles라는 폴더명으로 만들어주었다. 그 다음, 쉘에 아래의 커맨드를 입력해준다.
python manage.py collectstatic
그러면 staticfiles 폴더가 생성되고, 모든 앱의 static 파일이 모이게 된다.
가상 환경에서 uWSGI를 설치하고, 실행시키면 된다. 명령어가 길어서, uwsgi.ini 파일을 만들어서 실행을 시킨다.
웹 서버는 HTTP로 받은 요청을 수행해서 웹 브라우저에 HTML 등의 파일을 띄운다. 여러 방식이 있는데, 소켓 방식이 효율적이라고 한다. nginx에 wsgi를 연결하고, nginx -> wsgi 순으로 실행시키면 된다.
wsgi와 nginx에 대해서는 정말 간단하게만 짚었는데, 추후에 더 정리해 볼 예정이다.
M.B.I.T 테스트 페이지 만들기! With Django (제주코딩베이스캠프)