이 글에서는 www.pythonanywhere.com에서 파이썬과 flask(플라스크)를 이용해서 나만의 홈페이지를 만드는 방법에 대해서 설명합니다.
- www.pythonanywhere.com 가입하기
- flask를 이용한 웹 앱 만들어서 배포하기
www.pythonanywhere.com 가입하기
www.pythonanywhere.com는 flask와 python을 이용한 웹페이지를 생성하여 무료로 호스팅해주는 사이트입니다.
물론 유료 플랜을 가입하는것과 무료로 사용하는 것은 차이가 있으나 테스트 용으로는 충분합니다. 그리고, 간단한 홈페이지를 운영하는 것도 가능합니다.
https://kitle.xyz/post/61/
먼저 www.pythonanywhere.com에 signup을 하여 가입을 합니다. "Create a Beginner account" 버튼을 눌러서 가입하면 무료로 사용하실 수 있습니다.
로그인 > Consoles > Start a new Console > other: Bash 메뉴로 진입합니다.
flask를 이용한 웹 앱 만들어서 배포하기
콘솔에 진입한 후 파이썬 가상환경을 만들어 줍니다. 여러 환경을 사용하는 경우 겹치지 않게 하려는 목적입니다.
01:18 ~ $ python3 -m venv myvenv
가상환경을 만드는 명령어 입니다. myvenv 는 가상환경 이름이며, 본인만의 다른 이름으로 하셔도 무관합니다. 다만, 아래에 따라하는 부분들에서 변경하신 이름으로 적용해야합니다.
가상환경 생성 및 사용
16:27 ~ $ ls README.txt eddy_venv myvenv
아래와 같이 myvenv/bin의 activate를 source 명령으로 실행하여 가상환경으로 설정합니다.
source는 해당 가상환경을 사용하겠다는 의미의 명령어입니다. 환경 변수를 가상환경으로 맞춰줍니다.
16:31 ~ $ ls myvenv/bin/
Activate.ps1 activate activate.csh activate.fish pip pip3 pip3.10 python python3 python3.10
source myvenv/bin/activate
16:32 ~ $ source myvenv/bin/activate
(myvenv) 16:33 ~ $ pip3 install flask
flask 프레임워크 설치
(myvenv) 16:33 ~ $ pip3 install flask Looking in links: /usr/share/pip-wheels Collecting flask Downloading Flask-2.3.2-py3-none-any.whl (96 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.9/96.9 KB 1.8 MB/s eta 0:00:00 Collecting Werkzeug>=2.3.3 Downloading Werkzeug-2.3.4-py3-none-any.whl (242 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 242.5/242.5 KB 542.8 kB/s eta 0:00:00 Collecting itsdangerous>=2.1.2 Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB) Collecting Jinja2>=3.1.2 Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 KB 554.4 kB/s eta 0:00:00 Collecting blinker>=1.6.2 Downloading blinker-1.6.2-py3-none-any.whl (13 kB) Collecting click>=8.1.3 Downloading click-8.1.3-py3-none-any.whl (96 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.6/96.6 KB 260.4 kB/s eta 0:00:00 Collecting MarkupSafe>=2.0 Downloading MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB) Installing collected packages: MarkupSafe, itsdangerous, click, blinker, Werkzeug, Jinja2, flask Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.2 Werkzeug-2.3.4 blinker-1.6.2 click-8.1.3 flask-2.3.2 itsdangerous-2.1.2
(myvenv) 16:35 ~ $ mkdir FlaskSite (myvenv) 16:36 ~ $ ls FlaskSite README.txt eddy_venv myvenv (myvenv) 16:36 ~ $ cd FlaskSite/ (myvenv) 16:36 ~/FlaskSite $ ls (myvenv) 16:36 ~/FlaskSite
글 위와 같이 FlaskSite라는 디렉토리를 하나 만듭니다. 이 디렉토리에 웹페이지들을 넣을 계획입니다.
완료되면 왼쪽 상단에 bash 버튼을 눌러서 dashboard로 나옵니다.
WSGI configuration file 수정
import sys path = '/home/YOURNAME/mysite' if path not in sys.path: sys.path.insert(0, path) from app import app as application
아래와 같은 메시지가 나타납니다. 주소 확인 후 next를 누릅니다.
Your web app's domain name
Your account doesn't support custom domain names, so your PythonAnywhere web app will live at lsw0075.pythonanywhere.com.
Want to change that? Upgrade now!
Otherwise, just click "Next" to continue.
flask가 아닌 manual configuration으로 진행합니다.
Web 설정
Web으로 돌아와서 가상 환경 "Virtualenv:"을 설정 합니다.
이전에 생성한 가상환경 이름을 입력합니다.
/home/<yourname>/myvenv
Web app 만들기
이제 자신의 web app을 만들어야 합니다.
다시 bash console로 들어갑니다. 해당 console에서 이전에 만든 FlaskSite 디렉토리에 다음의 파일을 app.py로 생성합니다.
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': app.run()
다음과 같이 웹페이지가 생성되어 해당 주소로 접속하면 정상적으로 페이지가 보입니다.