Django Framework - Release

이제일·2021년 6월 22일
0

Django

목록 보기
12/15
post-thumbnail

Pythonanywhere

본 글에서는 django를 비교적 쉽게 무료(계정 생성시 설정)로 배포할 수 있는 pythonanywhere를 통해 진행 할 예정입니다.
모든 세팅은 콘솔로 작업이 가능하지만 빠른 진행을 위해 홈페이지의 기능들로 진행됩니다.

제한사항

무료 계정으로 사용할 경우 cpu 사용 시간은 100초(약 1일당), 저장공간은 512MB이다.

저장공간 문제점

작업을 하다보면 Python Library크기의 문제, 코드 변경등의 이유로 저장공간이 부족함을 느끼는데 초기화의 경우 찾아본 바로는 어려운 부분이 많아 콘솔에서 용량이 큰 파일들을 정리하는 방법으로 진행하는게 수월하다.
pythonanywhere 문서

$ du -hs /tmp ~/.[!.]* ~/* | sort -h   # 폴더별 용량 확인
$ rm -rf FolderName					   # 폴더 삭제



Source Code

Djnago App을 github를 통해 가져오도록 해본다.

console 진입

pythonanywhere 페이지에서 다음과 같이 console탭에 들어가면

console창을 열 수가 있다. 기본인 Bash로 들어가서 작업할 수 있다.

콘솔창에 진입 후에는 git clone으로 소스 코드를 서버에 올린다.

홈페이지에서 아래처럼 upload를 통해 진행할 수도 있다.




Web app setup

pythonanywhere에서는 서버 작업을 하기 위한 가상 환경으로 virtualenv를 통해 쉽게 할 수 있도록 제공한다.

생성

먼저 콘솔에서 가상환경 설치를 진행한다.

mkvirtualenv --python=python3.8 virtualenv이름

이후 홈페이지에서 web 탭의 Add a new web app를 클릭하면 아래와 같이 설정창이 뜨는데 django가 아닌 Manual configuration을 선택 후 이어간다.

가상환경 설정

web 탭에서 아래로 내리다 보면 사진과 같이 이전에 설치한 가상환경의 경로를 설정한다.

이후 WSGI(서버 설정 python 파일)파일을 수정을 위해 아래를 클릭하면

작성 되어있는 코드 중 django 부분을 제외한 코드는 모두 주석 처리 or 삭제 하고 아래와 같이 값을 설정한다.

static file 경로 설정

정적 파일을 사용하는 경우 파일에 접근을 허용하도록 URL 매핑을 해줘야 한다.
접근할 URL과 해당하는 폴더를 매핑시켜준다. django 문서pythonanywhere 문서 참조

django setting

web탭의 상단에 주소가 있는데 보통 user명.pythonanywhere.com 이다.
해당 주소를 확인하고 django settings.py에서 ALLOWED_HOSTS 변수에 대입하자

ALLOWED_HOSTS = ["jeil.pythonanywhere.com"]



Database

pythonanywhere에서는 MySQL 설정을 기본적으로 제공한다.
Create a database를 통해 데이터베이스를 생성 후 아래의 정보를

아래와 같이 settings 파일에 HOST, user등을 설정해야한다.




Apply setting

처음 프로젝트를 실행하는 경우 장고 프로젝트의 DB가 설정이 안되어있기 때문에 console에서 migrate 작업을 진행한다.

$ python manage.py migrate

또한 위에서 설정한 설정들을 배포 페이지에 적용하려면 reload를 클릭하고, 무료 계정일 경우 노란색 버튼을 3개월 주기로 클릭해야 서비스가 유지된다.




*Django Checklist

개발중인 버전과 배포 버전의 경우 보안상의 이슈로 인해 변경해야할 사항들이 있다.

Debug

별다른 설정을 안했을 경우 settings.py에서

DEBUG = True

가 되어있는데, 이를

DEBUG = False

로 바꿔주어야한다.
True일 경우 홈페이지 에러시 해당 에러 정보가 노출되고 static 경로의 접근등 여러 정보가 유출되기 쉽다.

SECRET_KEY

github를 통해 소스 코드를 올리는데 django의 SECRET_KEY, db의 비밀번호 등등 중요 정보가 노출 될 수 있으므로 다른 파일로 생성해 git ignore를 적용, 하드코딩하지 않도록 한다.

예시

profile
세상 제일 이제일

0개의 댓글