-
[Django] Pythonanywhere 사용하여 웹 호스팅하기Web Programming/Django 2021. 6. 19. 13:00반응형
[Django] Pythonanywhere 사용하여 웹 호스팅 하기
최근에 간단한 웹 페이지를 만들어 웹 호스팅 한 적이 있다. 난 지금까지 웹 페이지만 만들어봤지 호스팅 해보는 것은 처음이라 호스팅 과정을 기록하고자 한다. 무료 호스팅 사이트를 찾아보다가 Pythonanywhere가 간단해 보여서 사용하기로 결정했다. 참고한 사이트는 https://tutorial-extensions.djangogirls.org/ko/manual_pythonanywhere_deploy 이곳이다.
- 먼저 settings.py에서 다음과 같은 설정을 한다.
DEBUG = False ALLOWED_HOSTS = [ '<pythonanywhere-id>.pythonanywhere.com' ]
ALLOWED_HOSTS에 pythonanywhere에 가입한 '아이디.pythonanywhere.com'을 추가해 준다.
- Dashboard에서 ''$Bash' '클릭하면 다음과 같이 리눅스 창이 뜬다.
- 아래와 같이 입력하여 깃허브에서 코드를 가져온다.
git clone https://github.com/<github-id>/my-first-blog.git <pythonanywhere-id>.pythonanywhere.com
- 가상 환경을 생성하여 필요한 라이브러리(django, pandas ..)를 설치한다.
mkvirtualenv --python=python3.6 <your-pythonanywhere-username>.pythonanywhere.com
로컬에서 설치할 때보다 시간이 좀 걸린다.
- 아래와 같이 타이핑하여 정적 파일 모은다. 장고걸즈에 따르면 이 명령을 통해 앱이 모든 정적 파일을 수집해 서버가 찾을 수 있는 장소에 모아둔다고 한다.
python manage.py collectstatic
- 이제 Pythonanywhere의 Web으로 돌아가 add new app을 클릭한다.
next 클릭
수동 설정(manual configuration)을 클릭한 후 해당 파이선 버전 선택
next 클릭
- 가상 환경을 설정하는 부분이다. 자신의 가상 환경 경로에 맞게 입력하면 된다.
/home/<pythonanywhere-id>/.virtualenvs/<pythonanywhere-id>.pythonanywhere.com
- 정적 파일을 매핑하는 단계이다.
URL와 Directory를 다음과 같이 입력한다.
- WSGI 파일을 설정하는 부분이다. wsgi.py 파일을 클릭한 후 모든 내용을 지우고 아래의 코드를 입력한다. 그리고 수정이라고 태그 한 부분을 자신의 환경에 맞게 수정하면 된다.
import os import sys path = '/home/<your-pythonanywhere-username>/<your-pythonanywhere-username>.pythonanywhere.com' # 수정 if path not in sys.path: sys.path.append(path) os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' # 수정 from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
- Reload 버튼을 클릭한 후 자신의 사이트에 접속하면 끝!
블러 처리를 한 페이지이지만.. 호스팅 성공!
* views.py에서 .csv와 같은 파일을 못 읽는 경우
웹 호스팅을 한 후 views.py에서 static에 저장한 csv 파일을 읽어오지 못해서 좀 고생했다. 각자 settings.py의 STATIC_ROOT, STATIC_URL 등등 다르겠지만 필자의 경우 상대 경로를 절대 경로를 바꿨더니 csv 파일을 읽어 올 수 있었다.
반응형'Web Programming > Django' 카테고리의 다른 글
[Django] Django 설치 및 튜토리얼 뽀개기! - 1편 (0) 2023.03.01 [Django] AJAX 사용해서 데이터 주고 받기 (2) 2021.06.13