일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- backend
- javascript
- addEventListener
- 노드 추가
- 자바스크립트
- 노드 객체
- debugging
- HtmlElement
- 노드 삭제
- 포워드
- Array
- element
- HTML
- 노드
- webprogramming
- eventlistener
- innerHTML
- Object
- 자바스크립트 이벤트
- 이벤트
- 코딩테스트
- 노드 replace
- HTTP
- 문자열
- 이벤트 핸들러
- Web
- 파이썬 코테
- Servlet
- 리다이렉트
- jsp내장객체
- Today
- Total
seoyoung.dev
[Django]Pythonanywhere 배포하기 + static/media 본문
졸업 프로젝트 시연용 웹앱을 만들기 위해 Django Framework 를 사용하였고,
pythonanywhere 로 배포하였습니다.
간단하지만, 조금은 삽질을 했던 터라 기록을 남기기로..
git 을 사용해서 작업하던 레포지토리를 사용하겠습니다.
pythonanywhere 가입-> Beginner 로 가입 완료하였다면,
$Bash 콘솔로 접속
1. repository clone 해오기
$ git clone https://github.com/<username>/<repositoryname>
# username은 github-usename이기 때문에, github repository 에서 copy한 링크 그대로 paste 해줍니다.
2. 기존에 가상환경이 있던 경로로 이동 -> 새로운 가상환경 생성 & 실행
$ virtualenv --python=python3.7 myvenv #기존 django 프로젝트의 파이썬 버전을 확인
$ source myvenv/bin/activate
3. django + 기존의 requirements.txt 내용 설치
$ pip install -r requirements.txt
4. 데이터베이스 생성 + admin 생성
$ python manage.py migrate
$ python manage.py createsuperuser
+ settings.py 의 ALLOWED_HOST 에 pythonanywhere 추가
ALLOWED_HOSTS = [
'<pythonanywhere-username>.pythonanywhere.com'
]
web app 생성
1. 오른쪽 상단의 WEB 탭에서 Add a new web app
-> 장고 말고 수동 설정 -> 앞서 사용된 파이썬 버전 선택
2. 아래로 내려가서 가상환경 경로 설정 -> "아까 설치한 가상환경 경로/myvenv/" 까지
3. WSGI 파일 설정하기 : 바로 위 Code 의 wsgi 파일을 수정해줍니다.
import os
import sys
path = '/home/<pythonanywhere-username>/<파일경로..>' #<파일경로에 repo이름..추가로 파일경로>
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' #mysite 는 settings.py존재하는 폴더
from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())
< STATIC 파일과 MEDIA 파일 경로 설정 >
* settings.py 경로에 static과 media 경로 설정
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
* urls.py 의 urlpatterns 에 추가
from django.conf import settings
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
* pythonanywhere 에서의 경로 설정
>> html 페이지에서 view 로부터 받은 context에 저장된 post 모델의 image.url 로 접근하였다.
( 사진을 입력하고, 사진 처리 -> 결과를 받는 구조라 정적 이미지말고 image.url 로 접근해야 했다!)
>> 기본경로\media 에 저장되는 이미지이므로
>> pythonanywhere 에서는
/home/<pythonanywhere-user-name>/<repo-name>/<..static 상위 폴더들..>/static 로 경로 추가