Python/Django

[Django] Pythonanywhere에 배포하기

S0PH1A 2020. 1. 13. 16:54
반응형

[Python] Pythonanywhere에 배포하기

 

완성된 개인 프로젝트(어플리케이션)을 배포(호스팅)하는 방법은 aws, heroku 등등... 다양하며, 그 중 pythonanywhere를 통해 배포하는 방법이다.

 

😉 들어가기 전에...

* Git에 배포하려는 프로젝트가 올라가 있어야 한다.

* settings.py 파일 ALLOWED_HOSTS 부분에 ".pythonanywhere.com"이 리스트에 포함되어 있거나 "*"가 추가되어 있어야지만 접속이 가능하다.

 

👩‍🏫 사이트 주소 : pythonanywhere

 

pythonanywhere는 유료이지만 제한된 계정인 beginner account는 무료이다.

pricing

 

먼저, create a beginner account를 눌러 계정을 만들어 준다.

username은 나중에 호스팅할 때, <username>.pythonanywhere.com 이 되기 때문에 잘 지어줘야한다.😄

 

 

그 다음, Dashboard 로 가서 자신이 사용하려는 python버전을 선택한 후 bash를 눌러 bash를 생성한 후

bash창에 git의 프로젝트를 클론한다.

$ git clone https://github.com/<github-사용자-이름>/<프로젝트명>.git

 

virtualenv 가상환경을 생성하고 활성화한다.

$ virtualenv venv
$ source venv/bin/activate

 

프로젝트 구동에 필요한 django 등 버전에 맞는 패키지들을 모두 설치한다.

git에 requirements.txt파일을 만들어두었다면 아래 명령어로 한번에 설치 가능하다.

$ pip install -r requirements.txt

 

데이터베이스 초기화를 한다.

$ python manage.py migrate

 

 

화면 좌측 상단 pythonanywhere 아이콘을 눌러 bash창을 닫고 web탭에서 Add a new web app을 클릭.

대화창에서 수동설정(manual configuration)과 python버전을 선택한다.

manual configuration 선택

가상환경설정을 위해 virtualenv 항목에 방금 설치한 virtualenv 폴더 경로를 넣어준다.

/home/<username>/<경로>

virtualenv 설정

 

 

wsgi파일 설정한다.

WSGI configuration file 의 파일을 열고 모두 지운 후 아래 코드를 그대로 복사해서 넣어준 후 <> 부분의 정보를 자신에게 맞게 수정한 후 우측상단 save버튼을 눌러 저장한다.

wsgi configuration file

- username : pythonanywhere username

- 프로젝트명 : 프로젝트 폴더 이름 

- settings파일폴더 : settings.py파일이 존재하는 폴더(앱)

import os
import sys

path = '/home/<username>/<프로젝트명>'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = '<settings파일폴더>.settings'

from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())

 

이미지, static파일들 경로를 추가해준다.

static files부분에 media, static url 과 폴더 경로를 넣어주면 된다.

settings.py에 입력한 정보 그대로 넣어주면 된다.

 

ex) MEDIA 의 경우, settings.py에 아래와 같이 설정한 경우

MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")
MEDIA_URL = "/media/"

URL은 "/media/"

Directory는 "/home/<username>/<프로젝트명>/uploads/" 가 된다.

static files

 

모두 설정이 완료되었으면 web 상단에 Reload your web app을 눌러 웹을 재시작해준다.

배포된 웹서버는 http://<username>.pythonanywhere.com/ 경로로 접속하면 된다.

beginner 계정이기 때문에 3개월간만 접속이 가능하다.

 

 

 

 


[참고] https://tutorial-extensions.djangogirls.org/ko/manual_pythonanywhere_deploy/

반응형