Python으로 간단한 웹 서버 띄우기

2023년 7월 31일 수정

이 글은 Python으로 간단한 웹 서버를 띄우는 방법을 정리한 글이다. 예제의 기준은 3.7 버전이며 2.x 같은 구 버전은… 이제는 잊자.

주의할 점은 이 서버는 개발용 혹은 디버그 용도라는 점이다. 즉 프로덕션 용도로 쓰기엔 기능과 속도 그리고 보안 모든 면에서 문제가 있을 수 있다.

http.server

아래 CLI 커맨드 한 줄이면 현재 디렉터리의 파일을 서빙하는 HTTP 웹 서버를 띄울 수 있다.

python -m http.server

이후 웹 브라우저에서 http://localhost:8000 주소로 접속하면 파일 목록이 보이거나 혹은 HTML 파일을 볼 수 있다.

물론 몇 가지 옵션이 더 제공된다.

python -m http.server 3000 --bind 127.0.0.1

위의 예는 포트를 3000으로 바꾸고 바인딩 주소를 127.0.0.1로 설정하는 예이다.

현재 디렉터리가 아닌 다른 디렉터리를 루트로 삼고 싶다면 --directory 옵션을 사용할 수 있다.

python -m http.server --directory /foo/bar

다양한 옵션이 있지만 사실 별 다른 옵션 없이 현재 디렉터리에 기본 설정으로 띄우는 것만 해도 개발 용도로는 무리가 없는 것 같다.

조금 더 자세하게

위의 예는 CLI로 바로 실행시키는 예제인데, 당연하게도 이 http.serverPython의 일반적인 모듈이기 때문에 코드를 작성해서 실행시킬 수도 있다.

from http.server import HTTPServer, SimpleHTTPRequestHandler

server = HTTPServer(('0.0.0.0', 8000), SimpleHTTPRequestHandler)
server.serve_forever()

앞서 제일 처음 소개한 커맨드를 스크립트로 작성하면 이런 식이다.

이 외에도 여러 모듈도 제공되니 궁금하다면 공식 문서를 잘 살펴보자.