데이터사이언스/추천시스템

맥주 추천시스템 구현 - 8. 웹 배포하기(Pythonanywhere)

ghtis1798 2021. 3. 2. 01:38

✅git repository 만들기

git repository를 생성합니다.

생성한 후 화면입니다.

파이참에서 작업한 디렉토리를 이 repository에 올리겠습니다.

✅github push하기

git에 올리려는 디렉토리에서 다음 순서로 명령어를 실행합니다.

주의할 점은 .gitinit 파일을 생성한 뒤,

올리지 말아야 할 파일들은 제외합니다.

이것을 언어나 환경에 맞게 자동으로 맞추어주는 사이트도 있습니다.

https://www.toptal.com/developers/gitignore

위 사이트에서 나온 텍스트 내용을 .gitignore에 Copy & Paste합니다.

추가로 Django의 settings.py에서 Debug모드를 False로 바꾸고, ALLOWED_HOSTS = ['*']로 변경합니다.

추가적으로 배포시에는 정적파일을 collectstatic 명령어로 모아준 뒤

웹 서버에서 이 파일들을 찾아보도록 설정합니다.

따라서 STATIC_ROOT라는 변수로 설정한 곳에 static 파일들을 모아야합니다.

그러기 위해 settings.py 마지막에 다음 코드를 추가합니다.

STATIC_DIR = os.path.join(BASE_DIR, 'beer/static')
STATICFILES_DIRS = [
    STATIC_DIR,
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

  1. git init
  2. git add .
  3. git commit -m "first commit"
  4. git branch -M main
  5. git remote add origin git경로
  6. git push -u origin main

git repository에 잘 저장되었습니다.

✅파이썬애니웨어 배포

파이썬 애니웨어 가입 후 배포를 진행합니다.

pythonanywhere 사이트의 Dashboard에서 $Bash를 클릭합니다.

pwd 명령어를 통해 현재 디렉토리를 확인할 수 있습니다.

/home/ghgoo1798 디렉토리에 git repository의 파일들을 clone 해옵니다.

git clone 저장 경로

Recommendation_System 폴더로 이동하겠습니다.

$ cd Recommendation_System

다음 화면에서 가상환경을 설정합니다

$ virtual venv --python=python3.8

가상환경을 활성화한 뒤 django, pandas, scikit-learn을 설치합니다.

$ source venv/bin/activate

$ pip install django
$ pip install pandas
$ pip install scikit-learn

$ dir
$ cd myproject

프로젝트 폴더로 이동한 뒤 DB를 초기화하고, 관리자 계정도 생성합니다.

$ python manage.py migrate
$ python manage.py createsuperuser

이후 Web으로 이동합니다.

처음 생성하면 Add a new web app 클릭 후

Manual configuration (including virtualenv) >

Python 3.8를 선택하고 생성합니다.

WSGI configureation file: 로 이동합니다.

그리고 다음과 코드를 붙여넣습니다.

path와 myproject.settings는 자신의 경로에 맞게 설정해야 합니다.

import os
import sys
path = "/home/ghgoo1798/Recommendation_System/myproject"
if path not in sys.path:
    sys.path.append(path)

from django.contrib.staticfiles.handlers import StaticFilesHandler
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
# collectstatic 수행시 아래 코드는 삭제해도 됩니다.
application = StaticFilesHandler(get_wsgi_application())

가상환경 경로도 올바르게 설정합니다.

마지막으로 static파일들을 설정해두었던 STATIC_ROOT 경로에 모아주겠습니다.

Dashboard의 $bash로 들어갑니다.

Recommendation_System > myproject로 이동한 후 가상환경을 실행합니다.

그 뒤 다음 명령어로 staticfile을 모아줍니다.

$ python manage.py collectstatic

마지막으로 Static files:에 static 경로를 수정합니다.

🩸경로 에러 문제

파이썬 애니웨어에서 Files에서 현재 csv 파일들이

/home/ghgoo1798/Recommendation_System/myproject 경로에 있습니다.

따라서 views.py에서 csv파일을 불러오는 경로들을 바꾸어주어야합니다.

✅배포완료

🍻Prost! 맥주 추천시스템 배포를 완료했습니다.

http://ghgoo1798.pythonanywhere.com/