IT/web, hosting

pythonanywhere flask 배포하기

seyeonHello 2020. 2. 10. 21:26

안녕하세요. 오늘은 pythonanywhere를 이용해서 파이썬 flask 웹 프레임워크를 배포하는 과정을 설명해드리겠습니다 ~ 장고는 관련 게시물이 많은데, 플라스크는 찾기 어렵더라구요. 그래서 간단하게 정리해보았습니다 :)

 

1. pythonanywhere 소개

먼저! pythonanywhere를 처음 접해시는 분들을 위해 소개하는 시간을 가져보겠습니다 ^^

pythonanywhere은 python언어의 특화된 웹 호스팅 서비스 인데요. pythonanywhere는 방문자가 많지 않은 소규모 application들에게 무료 서비스를 제공하는데 이게 가장 큰 장점인 것 같습니다! 뿐만 아니라 데이터베이스도 제공하고 있어요. 마지막으로 웹을 통해 한번에 다룰 수 있어서 굉장히 편합니다~ (이전에 aws를 통해서 ec2, rds로 웹 호스팅을 해본적이 있는데, 초보자 입장에서 신경써야할 부분들이 많더라구요 비용 걱정도 들구요.)

하지만 단점도 물론 있습니다! 무료 서비스를 이용할 경우, 하나의 계정에 하나의 webapp만 가능합니다. 그리고 콘솔 창을 웹으로 다뤄야 하는데 이 콘솔창을 2개만 제한적으로 띄울 수 있어요. (이 점이 개인적으로 불편했어요) 마지막으로 용량이 512.08MB 정도로 다소 제한적입니다.

 

 

2. pythonanywhere 가입 방법

자 이제 pythonanywhere 가입 방법을 소개하겠습니다 !!

https://www.pythonanywhere.com/

 

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

Batteries included With Python versions 2.7, 3.3, 3.4, 3.5 and 3.6, 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, pycrypto,

www.pythonanywhere.com

 

먼저 사이트를 접속한 후, 맨 위 메뉴 중 "pricing & signup" 클릭합니다. 그리고 우리는 무료버전을 사용해볼 계획이므로 아래 "create a beginner account"라는 파란색 버튼을 클릭해주세요!

 

그러면 아래와 같이 계정을 생성할 수 있습니다! 여기서 username을 자신이 원하는 도메인 이름으로 설정하는 것이 좋아요! 나중에 (username).pythonanywere.com 으로 웹 사이트가 만들어 집니다.

 

 

3. pythonanywhere 실행 방법

자 이제 가입을 완료했으면 실행해보겠습니다 !!!

로그인 후 상단 메뉴 중 "web"을 클릭합니다 그리고 web 시작하기를 눌러주세요. 그럼 아래와 같이 web framework중 Flask를 선택합니다

Flask 선택 후, python버전을 선택할 수 있는데, 저는 3.6을 선택했습니다

 

이제 상단 메뉴중 "dashboard"탭을 클릭합니다. 그리고 new console에 있는 "$Bash"를 선택해 주세요

 

bash창에 우리는 이미 저장된 flask 소스코드를 git clone합니다

$ git clone https://~

그리고 clone한 디렉토리로 이동합니다. 여기서 저는 실행시킬 파일이름을 "flask_app.py"로 변경하였습니다. 그리고 가상환경을 생성하고 실행합니다

$ virtualenv --python=python3.6 venv

$ source venv/bin/activate

여기서 우리는 각자의 python파일에 필요한 모듈들을 모두 설치해줘야해요.

$ pip install ~

필요한 모듈들을 다 설치된 것 같은지 확인하고 싶으면 아래와 같이 실행시켜보면서 확인해보세요!

$ python flask_app.py

 

아무 에러 없이 잘 돌아가나요? 그러면 이제 다음 단계로 넘어갑니다 !!!!

 

 

4. pythonanywhere 호스팅 과정

1) 돌아갈 코드 위치 설정

다시 상단바 메뉴중 web 탭을 클릭합니다. source 코드의 위치를 다음과 같이 "/home/아이디/clone한 폴더명"으로 설정합니다. working directory는 "/home/아이디"로 설정합니다.

 

2) WSGI configuration file 작성

그리고 WSGI configuration file을 클릭합니다. 그리고 다음과 같이 수정합니다.

import sys

path = '/home/아이디/clone한 폴더명'

if path not in sys.path:

sys.path.insert(0, path) 

from flask_app import app as application

 

3) Virtualenv 설정

다음으로 가상환경을 설정해줍니다. "/home/아이디/clone한 폴더명/venv" (여기서 venv는 아까 bash창에서 설정한 가상환경이름입니다.)

 

4) Static files 설정

마지막으로 css파일과 js파일과 같은 정적 파일의 위치를 직접 url을 지정해 맵핑해주는 작업이 필요한데요. 이 작업을 진행해야 css, js파일이 안깨지고 잘 실행시킬 수 있습니다. 이 지정한 url을 소스코드에서 다 바꿔줘야 합니다.

기존 코드가 아래와 같았다면,

<script src="./statics/js/jquery-3.1.1.js"></script>

이와 같이 변경된 url로 수정해야 합니다.

<script src="/static/js/jquery-3.1.1.js"></script>

 

자 이렇게 모든 작업이 끝났다면, 다음과 같은 순서로 진행해 주시면 됩니다!

 

5. 데이터베이스 연동

상단 메뉴바 중 "Database"를 클릭한 후, 생성할 database 이름을 입력 후 "create" 버튼을 눌러줍니다.

 

그리고 자신이 만든 데이터베이스 콘솔로 접근하여 작업하시면 됩니다!

 

소스코드에서 연동하는 방법은 다음과 같습니다. 저는 flask_mysqldb를 install했어요.

from flask_mysqldb import MySQL

mysql = MySQL()

app.config['MYSQL_HOST'] = '아이디.mysql.pythonanywhere-services.com'

app.config['MYSQL_USER'] = '아이디'

app.config['MYSQL_PASSWORD'] = '비밀번호'

app.config['MYSQL_DB'] ='아이디$membership'

mysql=MySQL(app)

 

끝 ~ !

비교적 간단한 방법으로 웹 호스팅을 마쳤습니다

'IT > web, hosting' 카테고리의 다른 글

nginx로 로드밸런싱 설정하기  (0) 2023.12.13
AWS EC2에서 RDS 연동후 Flask 적용  (0) 2020.02.22
AWS EC2에서 Flask 실행  (0) 2020.02.11