[Python] Pythonanywhere에 배포하기
완성된 개인 프로젝트(어플리케이션)을 배포(호스팅)하는 방법은 aws, heroku 등등... 다양하며, 그 중 pythonanywhere를 통해 배포하는 방법이다.
😉 들어가기 전에...
* Git에 배포하려는 프로젝트가 올라가 있어야 한다.
* settings.py 파일 ALLOWED_HOSTS 부분에 ".pythonanywhere.com"이 리스트에 포함되어 있거나 "*"가 추가되어 있어야지만 접속이 가능하다.
👩🏫 사이트 주소 : pythonanywhere
pythonanywhere는 유료이지만 제한된 계정인 beginner account는 무료이다.
먼저, 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버전을 선택한다.
가상환경설정을 위해 virtualenv 항목에 방금 설치한 virtualenv 폴더 경로를 넣어준다.
/home/<username>/<경로>
wsgi파일 설정한다.
WSGI configuration file 의 파일을 열고 모두 지운 후 아래 코드를 그대로 복사해서 넣어준 후 <> 부분의 정보를 자신에게 맞게 수정한 후 우측상단 save버튼을 눌러 저장한다.
- 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/" 가 된다.
모두 설정이 완료되었으면 web 상단에 Reload your web app을 눌러 웹을 재시작해준다.
배포된 웹서버는 http://<username>.pythonanywhere.com/ 경로로 접속하면 된다.
beginner 계정이기 때문에 3개월간만 접속이 가능하다.
[참고] https://tutorial-extensions.djangogirls.org/ko/manual_pythonanywhere_deploy/
'Python > Django' 카테고리의 다른 글
[Django] Class-based views 상세 설명 사이트 (0) | 2020.02.07 |
---|---|
[Django][Error] DRF 실행 관련 에러들 (0) | 2020.01.14 |
[Django][Error] CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed. (0) | 2020.01.10 |
[Django] Django custom template tags (0) | 2020.01.09 |
[Django] Django-dotenv (0) | 2019.12.30 |