AWS Djnago 설정
- AWS lightsail 개인 공간으로 이동
- 첨부 사진과 같이 Create Instance 클릭
- Instance 생성페이지로 이동되는데 해당 페이지에서 blueprint를 App+OS의 Django로 선택
- instance 이름을 입력하고 Create Instance
- instance를 생성하면 메인페이지에 생성한 instance가 보이게 된다.
터미널로 ssh 접속하는 버튼을 클릭하여 접속한다.(노란박스)
*처음 환경이 설정되는데 시간이 조금 걸린다. 인내. - 접속에 성공하면 다음과 같이 출력된다.
- 장고 프로젝트를 생성할 프로젝트 루트 디렉터리를 선정하여 생성한다.
cd /opt/bitnami/apps/django/django_projects && \ django-admin.py startproject tutorial
- 테스트할 앱을 생성한다.
cd tutorial && python3 manage.py startapp hello_world
- 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") - 메인 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),
] - 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’),
] - Firevall(방화벽) 설정
Lighttail에서 instance 페이지의 생성한 Instance를 클릭
해당 instance 페이지에서 Networking 메뉴 클릭
Add rule버튼 클릭하여 Fireball을 추가하는 드롭다운 메뉴를 활성화 해준 뒤
Application : Custom
Protocal : TCP
Port or range : 8000-8001
으로 설정하여준 후 Create버튼을 눌러준다.
(Port or range는 -를 이용하여 범위를 설정할 수 있다.) - 프로젝트 설정에서 ip를 입력해준다.
sudo nano /opt/bitnami/apps/django/django_projects/tutorial/tutorial/settings.py
—-settings.py—-
ALLOWED_HOSTS = [‘외부IP’,’내부IP’] - 서버구동 테스트
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