본문 바로가기

프로그래밍 언어/파이썬

파이썬 웹 서버 시작하기, 간단한 예제로 배우는 HTTP 서버

파이썬 웹 서버 시작하기, 간단한 예제로 배우는 HTTP 서버

웹 서버는 현대 웹 애플리케이션의 핵심 요소로, 클라이언트와의 통신을 가능하게 합니다. 파이썬은 간단하고 직관적인 코드를 통해 웹 서버를 쉽게 구현할 수 있는 강력한 도구들을 제공합니다. 이 글에서는 파이썬을 이용해 HTTP 웹 서버를 설정하는 방법을 예제를 통해 배워보겠습니다. 간단한 예제들을 따라 하며 웹 서버의 기본 개념을 익히고, 실전에서 활용할 수 있는 기초를 다져봅시다.

 

 

  1. 웹 서버의 기본 개념
  2. 간단한 HTTP 서버 생성하기
  3. 사용자 정의 라우트 설정
  4. 정적 파일 서빙하기
  5. Flask를 이용한 간단한 웹 애플리케이션
  6. 결론 및 추가 학습

 

1. 웹 서버의 기본 개념

웹 서버는 클라이언트(일반적으로 웹 브라우저)로부터 HTTP 요청을 받아들이고, 그에 대한 응답을 보내는 역할을 합니다. 파이썬은 이러한 기능을 구현하기 위해 간단한 HTTP 서버를 쉽게 설정할 수 있는 내장 라이브러리를 제공합니다. 이 섹션에서는 웹 서버의 기본 동작 방식과 이를 파이썬으로 구현하는 방법을 간단히 소개합니다.

 

 

2. 간단한 HTTP 서버 생성하기

파이썬에서는 단 몇 줄의 코드로 간단한 HTTP 서버를 만들 수 있습니다. 파이썬의 http.server 모듈을 사용하면 기본적인 웹 서버를 쉽게 설정할 수 있습니다. 아래 예제를 통해 기본 HTTP 서버를 설정하고, 이를 실행하는 방법을 배워봅시다.


import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("Serving at port", PORT)
    httpd.serve_forever()

이 코드를 실행하면 로컬 서버에서 간단한 HTTP 서버가 실행되며, localhost:8000에서 접속할 수 있습니다. 이 서버는 현재 디렉터리의 파일들을 클라이언트에 제공할 수 있습니다.

 

 

3. 사용자 정의 라우트 설정

기본 HTTP 서버 설정 이후, 사용자 정의 라우트를 만들어 특정 요청에 맞는 응답을 제공하는 방법을 살펴보겠습니다. 라우트는 URL 경로와 해당 경로에 대한 처리 방식을 정의합니다. 이를 통해 특정 경로로 요청이 들어왔을 때 해당 요청을 처리하고, 적절한 응답을 보낼 수 있습니다.


from http.server import BaseHTTPRequestHandler, HTTPServer

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/hello':
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write(b"Hello, World!")
        else:
            self.send_response(404)
            self.end_headers()

def run(server_class=HTTPServer, handler_class=MyHandler, port=8000):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print(f"Starting server on port {port}")
    httpd.serve_forever()

run()

이 예제에서는 /hello 경로에 GET 요청이 들어왔을 때 "Hello, World!"라는 응답을 반환하도록 설정하였습니다. 그 외의 경로로 요청이 들어오면 404 에러를 반환합니다.

 

 

 

 

4. 정적 파일 서빙하기

웹 서버에서 HTML, CSS, JavaScript 파일과 같은 정적 파일을 제공하는 것은 매우 일반적인 작업입니다. 파이썬의 기본 HTTP 서버는 이를 쉽게 지원할 수 있습니다. SimpleHTTPRequestHandler를 사용하여 현재 디렉터리의 정적 파일들을 클라이언트에 제공할 수 있습니다.

앞서 만든 간단한 HTTP 서버 예제를 확장하여 정적 파일을 제공하는 방법을 실습해보겠습니다. 해당 디렉터리에 HTML 파일을 두고, 브라우저에서 파일을 로드해보세요.

 

 

5. Flask를 이용한 간단한 웹 애플리케이션

간단한 HTTP 서버를 넘어서 더 강력한 웹 애플리케이션을 구축하고 싶다면 Flask와 같은 마이크로 프레임워크를 사용할 수 있습니다. Flask는 파이썬으로 웹 애플리케이션을 구축할 때 널리 사용되는 프레임워크로, 직관적이고 확장성이 뛰어납니다.

다음 예제는 Flask를 사용하여 간단한 웹 애플리케이션을 구축하는 방법을 보여줍니다.


from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Hello, Flask!"

@app.route("/about")
def about():
    return "This is a simple Flask web app."

if __name__ == "__main__":
    app.run(debug=True)

이 예제는 간단한 두 개의 라우트를 가진 Flask 애플리케이션을 만듭니다. / 경로는 "Hello, Flask!"를, /about 경로는 "This is a simple Flask web app."이라는 메시지를 반환합니다. Flask는 간단한 애플리케이션부터 복잡한 웹 서비스까지 유연하게 확장할 수 있는 도구를 제공합니다.

 

 

6. 결론 및 추가 학습

이 글에서는 파이썬을 사용하여 간단한 HTTP 서버를 만드는 방법과 Flask를 사용한 기본적인 웹 애플리케이션 구축 방법을 살펴보았습니다. 이 예제들을 통해 파이썬 웹 서버의 기본 개념을 이해하고, 이를 실전에 적용할 수 있는 기초를 마련할 수 있습니다.

추가적으로 Django와 같은 풀-스택 웹 프레임워크를 학습하여 더 복잡하고 강력한 웹 애플리케이션을 구축하는 방법도 고려해보세요. 웹 서버 개발은 폭넓은 가능성을 제공하며, 파이썬은 이러한 개발을 위한 훌륭한 도구를 제공합니다.