본문 바로가기

Python/Frameworks.Libraries

docker-compose를 통해 Nginx, Django 연동하기 1 - 간단한 Django app 만들기

소개

docker-compose 를 통해 Nginx, uWSGI, Django 를 이용한 웹 서버, 웹 애플리케이션을 구축해보는 아주아주 씸플한 Super simple application을 만들어보겠다.

이번 주말 내내 이 작업을 엄청 했더니 어느정도 쉬운 구조에서는 도가 트였다.

이러한 도커 애플리케이션을 만들 것이다.

그냥 IP:Port에 접속했을 때 인사를 해주는 간단한 Django Application을 웹서버에 올려보자.


프로젝트 구조는 위와 같다. 이번 시간엔 django 디렉토리까지만 다루겠다.


작업 내용


프로젝트 구조에 맞게 디렉토리와 virtual environment를 설정해준다.



django-admin command를 이용해서 django project와 그 속의 app을 생성해준다.



이제 vscode를 열어 내 django project에 대한 settings.py 에서

ALLOWED_HOSTS에 IP 주소들을 이미지처럼 추가해주고,

위에서 만들었던 나의 프로젝트 속 hello라는 app을 INSTALLED_APPS 리스트에 추가해준다.


그리고 프로젝트의 urls.py에서 ''에 대한 라우터를 추가해준다.

이 때 hello 앱의 urls.py 를 include한다.



방금 include 한 hello.urls를 정의해준다. 경로는  hello/urls.py 

필요한 대로 프로젝트의  urls.py 에서 복붙해온다.

그리고 자기 자신( 앱이자 패키지)으로 부터 views.py 를 import 해서 그 속의 view function을 사용할 것이므로

from . import views 를 적어준다.


우리 프로젝트 앱의 '' 경로에 hello.urls를 include 시켰는데, hello.urls에서 자신이 라우팅 되는 곳을 기준으로 '' 경로에 say_hello 라는 view function 을 정의한 뒤 이용할 것이다.


결과적으로는 IP:Port 라는 최상위 경로에서 say_hello라는 view function을 이용하겠다는 것이다.

따라서 view function을 적절히 정의해주러가자.

경로는 hello/views.py



간단한 HttpResponse를 client 에게 보내기 위해

django.http의 HttpResponse를 import 해주고

say_hello view function을 정의해준다. 기본 인자는 request에 관하여 하나 받는다.


이후


  python manage.py runserver 127.0.0.1:8001  


이라는 커맨드를 이용하여 서버를 run 시켜주자.


Django App은 manage.py를 이용하여 많은 작업을 할 수 있다.





그러면 처음과 같이 Hello, 라며 인사해주는 웹서버를 띄울 수 있다.


혹시나싶어 프로젝트 구조를 첨부한다



마치며

정말 간단한 Django App을 만들어봤다.

다음 글에선 uWSGI와 Django App을 연동시키겠다.