AWS Django 배포

AWS Djnago 설정

  1. AWS lightsail 개인 공간으로 이동
  2. 첨부 사진과 같이 Create Instance 클릭
  3. Instance 생성페이지로 이동되는데 해당 페이지에서 blueprint를 App+OS의 Django로 선택
  4. instance 이름을 입력하고 Create Instance
  5. instance를 생성하면 메인페이지에 생성한 instance가 보이게 된다.
    터미널로 ssh 접속하는 버튼을 클릭하여 접속한다.(노란박스)
    *처음 환경이 설정되는데 시간이 조금 걸린다. 인내.

  6. 접속에 성공하면 다음과 같이 출력된다.
  7. 장고 프로젝트를 생성할 프로젝트 루트 디렉터리를 선정하여 생성한다.
    cd /opt/bitnami/apps/django/django_projects && \ django-admin.py startproject tutorial
  8. 테스트할 앱을 생성한다.
    cd tutorial && python3 manage.py startapp hello_world
  9. view.py를 편집하여 ‘Hello World’를 출력하는 함수를 작성해준다.

    sudo nano /opt/bitnami/apps/django/django_projects/tutorial/hello_world/views.py
    —–view.py—–
    from django.http import HttpResponse
    from django.http import HttpResponse
    def index(request):
    return HttpResponse("Hello, world")

  10. 메인 urls.py를 수정하여 hello_world 앱과 연결해준다.
    sudo nano /opt/bitnami/apps/django/django_projects/tutorial/tutorial/urls.py
    —-urls.py—-
    from django.contrib import admin
    from django.urls import include, path
    urlpatterns = [
    path('', include('hello_world.urls')),
    path('admin/', admin.site.urls),
    ]

  11. hello_wold 앱의 urls.py를 수정하여 hello world를 출력하는 함수를 연결해준다.
    sudo nano /opt/bitnami/apps/django/django_projects/tutorial/hello_world/urls.py
    —-urls.py—–
    from django.urls import path
    from . import views
    urlpatterns = [
    path(”, views.index, name=’index’),
    ]
  12. Firevall(방화벽) 설정
    Lighttail에서 instance 페이지의 생성한 Instance를 클릭

    해당 instance 페이지에서 Networking 메뉴 클릭


    Add rule버튼 클릭하여 Fireball을 추가하는 드롭다운 메뉴를 활성화 해준 뒤
    Application : Custom
    Protocal : TCP
    Port or range : 8000-8001
    으로 설정하여준 후 Create버튼을 눌러준다.
    (Port or range는 -를 이용하여 범위를 설정할 수 있다.)

  13. 프로젝트 설정에서 ip를 입력해준다.
    sudo nano /opt/bitnami/apps/django/django_projects/tutorial/tutorial/settings.py
    —-settings.py—-
    ALLOWED_HOSTS = [‘외부IP’,’내부IP’]
  14. 서버구동 테스트
    cd /opt/bitnami/apps/django/django_projects/tutorial/ && python3 manage.py runserver 0.0.0.0:8000

    주소창에 외부ip:8000으로 접속하여 ‘Hello World’가 출력되면 성공

Apache를 이용한 배포

Apache2를 이용한다면 아래 버튼으로. Apache를 사용한다면 계속 본 글을 참조

wsgi.py 편집

sudo nano /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py

import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/tutorial')
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/tutorial/egg_cache")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tutorial.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
설정파일을 저장할 디렉터리 생성

mkdir /opt/bitnami/apps/django/django_projects/tutorial/conf

httpd-app.conf파일 생성

sudo nano /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf

<IfDefine !IS_DJANGOSTACK_LOADED>
      Define IS_DJANGOSTACK_LOADED
      WSGIDaemonProcess wsgi-djangostack   processes=2 threads=15    display-name=%{GROUP}
</IfDefine>
<Directory "/opt/bitnami/apps/django/django_projects/tutorial/tutorial">
    Options +MultiViews
    AllowOverride All
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>
    WSGIProcessGroup wsgi-djangostack
    WSGIApplicationGroup %{GLOBAL}
</Directory>
Alias /tutorial/static "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/contrib/admin/static"
WSGIScriptAlias /tutorial '/opt/bitnami/ap/django/django_projects/tutorial/tutorial/wsgi.py'
httpd-prefix.conf파일 생성

sudo nano /opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-app.conf"
bitnami-apps-prefix.conf파일을 열어 prefix를 추가

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

Include "/opt/bitnami/apps/django/django_projects/tutorial/conf/httpd-prefix.conf"
apache 설정파일을 수정

sudo nano /opt/bitnami/apache2/conf/bitnami/bitnami.conf

<VirtualHost _default_:80>
    WSGIScriptAlias / /opt/bitnami/apps/django/django_projects/tutorial/tutorial/wsgi.py
    <Directory /opt/bitnami/apps/django/django_projects/tutorial>
    AllowOverride all
        Require all granted
        Options FollowSymlinks
    </Directory>
    DocumentRoot /opt/bitnami/apps/django/django_projects/tutorial
</VirtualHost>

apache 재시작

sudo /opt/bitnami/ctlscript.sh restart apache

Leave a Comment