it-guide

PythonAnywhere 웹 접속 없이 배포하기 (SSH + WSGI reload)

jacky

PythonAnywhere 웹 접속 없이 배포하기 (SSH + WSGI reload)

PythonAnywhere를 사용하다 보면 매번 웹 UI에 접속해서 소스코드 반영하고, Reload 버튼을 누르는 과정이 번거롭습니다.

사실은 웹 페이지에 접속하지 않아도 SSH와 rsync만으로 코드 배포와 서버 리로드를 모두 처리할 수 있습니다.

이 글에서는 다음 과정을 정리합니다.

  • PythonAnywhere 서버에 SSH 비밀번호로 로그인

  • git 소스 적용

  • WSGI reload로 웹앱 즉시 반영



1. SSH로 서버 접속

PythonAnywhere는 기본적으로 SSH 접속을 제공합니다.
터미널에서 다음 명령으로 접속합니다.

ssh USERNAME@ssh.pythonanywhere.com

비밀번호 입력 후 서버에 접속됩니다.

접속 후 기본 홈 디렉토리는 보통 다음과 같습니다.

/home/USERNAME

2. 프로젝트 위치 확인

예를 들어 프로젝트 구조가 다음과 같다고 가정합니다.

/home/USERNAME/myproject
└── mysite
    └── wsgi.py

프로젝트 디렉토리로 이동합니다.

cd myproject

3. 코드 수정 반영 

위에서 해당 폴더로 이동되었고, GIT세팅이 되어있다면 다음과 같이 보고 있는 브랜치명이 ()에 나타날것입니다.

git pull 명령을 활용해 원격지에 업로드된 파일을 가져옵니다. 그전에 수정한 git 로컬 작업을 원격 레포지토리에 업로드 해야 합니다. git 은 다 아실것 같으니 설명을 생략합니다.

git pull 뒤에 다른 브랜치나, 원격지 이름을 꼭 정의 하고 싶다면 git pull origin master (main) 등으로 수정하셔도 됩니다.

~/myproject (master)$ git pull 


4. WSGI 파일 확인

PythonAnywhere는 웹앱을 reload할 때 특정 WSGI 파일을 기준으로 동작합니다.

파일 위치 확인:

ls /var/www/

보통 다음과 같은 파일이 있습니다. 도메인을 따로 연결해 두었다면 해당 도메인의 wsgi가 있을겁니다. 저는 아래의 도메인 연결된 wsgi 파일을 리로드 하면됩니다. 여러분은 맞게 수정하세요

USERNAME_pythonanywhere_com_wsgi.py
kitle_xyz_wsgi.py


5. 웹앱 reload (핵심)

웹 UI의 Reload 버튼과 동일한 동작을 하는 명령입니다.

touch /var/www/USERNAME_pythonanywhere_com_wsgi.py

또는

touch /var/www/kitle_xyz_wsgi.py

이 명령은 파일의 수정 시간을 변경해서
PythonAnywhere가 웹앱을 다시 로드하도록 트리거합니다.


6. reload 확인

파일 수정 시간이 바뀌는지 확인할 수 있습니다.

ls -l /var/www/USERNAME_pythonanywhere_com_wsgi.py

예시

-rw-rw-r-- 1 USERNAME registered_users ... Mar 10 13:16 USERNAME_pythonanywhere_com_wsgi.py

시간이 현재 시간으로 바뀌면 reload가 실행된 것입니다.

아니면 git에 수정사항을 하나 만들고, 실제 웹프라우저에서 새로고침시 적용되었는지 직접 확인하는 방법도 있습니다.


정리

PythonAnywhere는 웹 페이지에 접속하지 않아도 다음  단계로 배포할 수 있습니다.

  1. SSH로 접속 및 소스코드 업데이트

  2. WSGI 파일 touch로 reload

이 방법을 사용하면 웹 UI 없이 터미널만으로 배포가 가능해집니다.

조금이라도 시간 아껴서, 빠르게 배포하고 쉽시다.