반응형
PythonAnywhere 소개
- 클라우드 기반 파이썬 호스팅 서비스:
웹 앱, 스크립트, 백그라운드 작업(크론 작업) 등을 실행할 수 있는 파이썬 전용 호스팅 플랫폼입니다. - 웹 인터페이스 제공:
웹 대시보드를 통해 파일 관리, 콘솔 접근, 웹 앱 설정, 로그 모니터링 등을 직관적으로 할 수 있습니다. - 무료 및 유료 플랜:
무료 플랜과 다양한 유료 플랜이 있어, 프로젝트 규모와 필요 기능에 따라 선택할 수 있습니다.

장점
- 사용자 친화적:
웹 기반 대시보드를 통해 복잡한 서버 설정 없이도 쉽게 애플리케이션을 배포하고 관리할 수 있습니다. - 빠른 시작:
무료 플랜으로도 간단한 웹 앱이나 스크립트를 바로 배포할 수 있으며, GitHub 연동, 가상환경 설정, WSGI 파일 설정 등이 비교적 간단합니다. - 자동 백업 및 로그 관리:
애플리케이션 로그, 에러 로그, 콘솔 접근 등이 제공되어 문제 해결 및 모니터링이 용이합니다. - 크론 작업 및 스케줄링:
주기적인 작업(예: 데이터 업데이트, 백업 등)을 위한 크론 작업을 쉽게 설정할 수 있습니다.
단점 및 무료 서비스 제한
- 리소스 제한:
무료 플랜은 CPU, 메모리, 디스크 공간, 동시 접속자 수 등에 제한이 있습니다. 예를 들어, 무료 사용자는 하루에 실행할 수 있는 프로세스 시간이 제한되거나, 특정 용량 이상의 데이터베이스 저장공간을 사용할 수 없습니다. - 커스텀 도메인 지원 제한:
무료 플랜에서는 기본적으로 yourusername.pythonanywhere.com 형식의 도메인만 제공되며, 커스텀 도메인 연결은 유료 플랜에서 지원됩니다. - 상시 가동 제한:
무료 플랜은 24시간 내내 서버가 실행되지 않고, 일정 시간이 지나면 자동으로 슬립 모드로 전환될 수 있습니다. 따라서 항상 대기 상태를 보장하지 않으며, 재접속 시 부팅 시간이 발생할 수 있습니다. - 지원 제한:
무료 사용자는 유료 사용자에 비해 기술 지원이나 SLA(Service Level Agreement)가 제한적일 수 있습니다.
PythonAnywhere 배포 절차
1. 계정 생성 및 로그인
- PythonAnywhere 웹사이트에 가입 후 로그인합니다.
- 무료 플랜으로 시작할 수 있지만, 프로젝트 규모에 따라 유료 플랜 업그레이드 고려.
2. 웹 앱 생성
- Web 탭 선택: PythonAnywhere 대시보드에서 "Web" 탭을 클릭합니다.
- 새 웹 앱 추가: "Add a new web app" 버튼을 클릭하여 새 웹 애플리케이션을 만듭니다.
Python 버전 선택: 배포할 애플리케이션에 맞는 Python 버전을 선택합니다.
- Manual configuration: 간단한 웹 앱의 경우 자동 설정 옵션을 선택할 수도 있지만, 커스텀 설정이 필요한 경우 Manual configuration을 선택합니다.
3. 소스 코드 배포
- Git 리포지토리 클론: Bash 콘솔(또는 터미널)에서 Git 리포지토리를 클론합니다.
git clone https://github.com/your_username/your_repository.git
- 소스 코드 경로 지정: PythonAnywhere 웹 앱 설정의 "Source code" 항목에 클론한 디렉토리 경로(예: /home/yourusername/your_repository)를 입력합니다.
4. 가상환경 설정
- 가상환경 생성: Bash 콘솔에서 프로젝트 디렉토리로 이동 후 가상환경을 생성합니다.
cd /home/yourusername/your_repository
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
- 웹 앱 설정에 가상환경 경로 지정: PythonAnywhere의 "Web" 탭에서 "Virtualenv" 필드에 가상환경 경로(예: /home/yourusername/your_repository/venv)를 입력합니다.
5. WSGI 파일 설정
- PythonAnywhere 웹 앱 설정 페이지에서 "WSGI configuration file" 링크를 클릭하여 WSGI 파일을 편집합니다.
- 예시:
import os
import sys
# 프로젝트 루트 디렉토리 추가
project_home = u'/home/yourusername/your_repository'
if project_home not in sys.path:
sys.path.insert(0, project_home)
# 가상환경 자동 활성화를 위해 PythonAnywhere 웹 앱 설정에서 Virtualenv 경로를 지정하면,
# 아래 activate_this.py 호출은 필요 없습니다.
# 혹은 수동으로 site-packages 경로를 추가할 수도 있습니다.
# venv_path = u'/home/yourusername/your_repository/venv'
# site_packages = os.path.join(venv_path, 'lib', 'python3.x', 'site-packages')
# if site_packages not in sys.path:
# sys.path.insert(0, site_packages)
# DJANGO_SETTINGS_MODULE 설정 (Django 사용 시)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
6. 정적 파일 설정
- Static files:
웹 앱 설정 페이지에서 "Static files" 섹션을 사용해 정적 파일 URL과 경로를 매핑합니다.- 예: URL /static/ → 경로 /home/yourusername/your_repository/static/
7. 웹 앱 Reload 및 테스트
- PythonAnywhere 웹 앱 설정 페이지에서 "Reload" 버튼을 눌러 애플리케이션을 재시작합니다.
- 배포된 웹 앱의 URL(예: https://yourusername.pythonanywhere.com)에 접속하여 정상 동작하는지 테스트합니다.
8. 코드 업데이트 및 재배포
- 로컬에서 코드를 수정한 후 Git에 커밋하고 PythonAnywhere Bash 콘솔에서 git pull 명령어로 최신 코드를 가져옵니다.
- 변경 후 웹 앱을 다시 Reload하여 업데이트 내용을 반영합니다.
위의 절차에 따라 연습용으로 배포를 한번 진행해봤습니다 :)
로또 번호 추첨기 를 한번 만들어서 배포를 진행해보았는데요, 번호 추첨은 잘 되는데 기존 번호를 불러오는 부분에서 문제가 있더라고요
무료 계정으로 작업을 진행하다보니 일부 외부 사이트에 대한 접근이 제한되어서 동행복권 사이트에 접근하여 이전 회차 번호를 불러오는 부분에서 에러가 발생하고 있었습니다


다음번에는 또 다른 사이트로 연습해서 배포해보도록 하겠습니다 :)
728x90
'공부 > it 개발' 카테고리의 다른 글
주피터 노트북(Jupyter Notebook)이란 무엇일까? (4) | 2025.02.28 |
---|---|
zapier(자피어)로 웹훅 사용하기 (0) | 2025.02.18 |
ngrok으로 외부에서 로컬 서버 접속하기 (0) | 2025.02.17 |