Django

Django로 커뮤니티 사이트 만들기 (5): PythonAnywhere 배포

Jinmidnight 2023. 9. 18. 17:17

기본 세팅

우선 필요한 패키지를 배포할 때도 설치해줘야 하기 때문에, 미리 패키지를 모아놓는 것이 좋다

작업하던 폴더의 최상단 위치에서 아래 명령어를 터미널에 입력해준다

그러면 requirements.txt가 폴더의 최상단 위치에 생성될 것이다

pip freeze > requirements.txt

 

또한, settings.py에서 ALLOWED_HOSTS를 전체로 설정하여 어떤 호스트 URL이든 접근할 수 있도록 허용해준다

(프로젝트 URL만 접근할 수 있도록 허용하고 싶으면, 프로젝트 URL 생성 후 해당 URL만 입력하면 된다)

# 호스트 URL 전체 허용
ALLOWED_HOSTS = ['*']

# 프로젝트 URL만 하용
ALLOWED_HOSTS = ['프로젝트 URL']

 

다음으로, 개발한 코드들을 Github에 업로드 해놓아야 한다.

Git은 설치되어 있고 Github 계정은 있다는 전제하에, 아래 명령어를 통해 Github에 코드들을 업로드해준다

자세한 것은 구글링 해보면 금방 찾을 수 있을 것이다

git add .
git commit -m "메세지"
git push origin master

 

 

PythonAnywhere 회원가입 및 로그인

PythonAnywhere은 Python으로 개발된 어플리케이션을 무료로 호스팅할 수 있는 사이트다. 물론, 더 나은 기능을 위해서는 유료 결제를 진행하거나 AWS 같은 전문적인 서비스를 이용하는 것이 낫겠지만, 빠르게 배포만 해보고 싶다면 PythonAnywhere도 나쁘지 않은 선택이라 생각한다

 

본 내용은 Python으로 이루어진 Django 어플리케이션을 배포하는 것이기에 PythonAnywhere가 호스팅 사이트로 적합하다고 판단했다

 

우선 아래 사이트에서 회원가입 및 로그인을 진행하면 된다.

회원가입을 할 때, 무료버전에서는  Username이 URL의 앞부분이 되기 때문에 유의하여 작성하기를 바란다

ex. https://(username).pythonanywhere.com

 

Host, run, and code Python in the cloud: PythonAnywhere

Batteries included With Python versions 2.7, 3.6, 3.7, 3.8, 3.9 and 3.10, and all the goodies you normally find in a Python installation, PythonAnywhere is also preconfigured with loads of useful libraries, like NumPy, SciPy, Mechanize, BeautifulSoup, pycr

www.pythonanywhere.com

 

 

Github에서 프로젝트 불러오기

PythonAnywhere 홈페이지에 로그인이 됐다면, 상단 탭에 Consoles를 클릭한다

그 후, 왼쪽에 Bash를 클릭해준다

 

 

 

다음으로, 아래 명령어를 입력하여 Github에서 프로젝트를 불러온다

# 맨 처음에 프로젝트를 불러올 때
git clone "Github 주소"

# 코드가 수정이 되고 나서 변경사항 반영할 때
git pull origin master

 

 

가상환경 설치 및 실행

가상환경 설치/실행을 통해 사전에 모아놨던 패키지를 설치한다

# 가상환경 설치
virtualenv --python=[로컬에서 사용하던 Python 버전] [가상환경 폴더 이름]

# 가상환경 실행: Bash console을 열었을 때 가상환경이 꺼져 있으면 매번 실행해줘야 한다
source [가상환경 폴더 이름]/bin/activate

# 프로젝트 폴더로 이동: (master) 표시가 떠야함
cd [Github 레포 이름]

 

# 패키지 설치: Django, Pillow 등
pip install -r requirements.txt

 

 

DB 생성

# manage.py가 있는 폴더로 이동
cd community_proj

# 모델 생성
python manage.py makemigrations

# DB 연동
python manage.py migrate

 

 

관리자 계정 생성

# 관리자 계정 생성: 비밀번호는 최소 8자 이상 추천
python manage.py createsuperuser

 

 

static 파일 모음폴더 생성

# static 파일 모음폴더 생성
python manage.py collectstatic

 

 

Web app 생성

Bash console을 닫고 상단의 Web 탭을 클릭하여, Web app을 생성한다

 

 

 

생성시 Web framework를 Manual configuration으로 설정한다

 

 

 

본인이 사용한 Python 버전을 클릭하면

 

 

 

프로젝트 URL이 생성된다

새로운 개발 수정사항을 Web에 반영하고 싶을 때마다 아래 초록 버튼을 눌러주면 된다

또한, 사이트가 휴면상태에 빠지게 하고 싶지 않다면 아래 노랑 버튼을 3개월마다 눌러줘야 한다

 

 

 

Web app 설정

아래로 스크롤을 내리면 Code 섹션이 있다

여기에서 Source code의 디렉토리를 manage.py가 있는 디렉토리로 수정해주면 된다

어디에 있는지 잘 모르겠으면 상단의 Files탭에 가서 폴더 구조를 확인한 뒤 작성해주면 된다

 

 

 

다음으로 WSGI configuration file의 링크를 클릭하여, DJANGO 파트의 코드 주석을 풀어준다

주의할 점은 path를 manage.py가 있는 디렉토리 주소로, settings 경로는 path 디렉토리 아래에 있는 settings.py의 디렉토리 주소로 작성해주면 된다

 

 

 

 

스크롤을 더 내리면 Virtualenv 섹션이 있다

가상환경 이름을 주소에 맞게 입력해준다

 

 

 

마지막으로 스크롤을 내리면 Static files 섹션이 있다

URL은 /static/으로, Directory는 staticfiles가 있는 주소로 작성하면 된다

 

 

 

마무리

모든 배포 과정이 끝났고, 배포된 URL은 다음과 같다

 

Community

 

communityyonsei.pythonanywhere.com

 

이외에 코드 수정 사항이 있으면 다음과 같은 순서로 진행하면 된다

  1. 코드 수정 후 Github에 업로드
  2. PythonAnywhere의 Bash Console에 들어가서 코드 불러오기: git pull origin master
    - 추가적인 static 파일이 있다면 static 파일 모으기 실행: python manage.py collectstatic
  3. Web 탭에서 초록 버튼을 눌러 웹사이트 reload

 

출처

https://we-always-fight-with-code.tistory.com/m/120

https://windybay.net/post/1/

https://windybay.net/post/2/