파이썬 로컬 서버

Abid Ullah 2024년2월15일
  1. Python에서 처음부터 HTTP 서버 만들기
  2. HTTP 서버란?
  3. Python에서 하나의 명령으로 기본 HTTP 서버 구축
파이썬 로컬 서버

이 자습서에서는 Python에서 HTTP 서버를 만드는 방법을 보여줍니다. 그리고 이 튜토리얼을 진행한 후에는 몇 줄의 코드만으로 HTTP 서버를 쉽게 설정할 수 있습니다.

HTTP 서버를 생성하면 여기에서 파일 제공을 시작할 수 있습니다. 추가 지원을 위해 Python HTTP 서버 단계별 가이드를 자세히 살펴보겠습니다.

Python에서 처음부터 HTTP 서버 만들기

소프트웨어 엔지니어로서의 경력 중 언젠가는 소프트웨어 엔지니어와 상관없이 웹 서버 작업을 해야 할 것입니다. 백엔드 서비스를 위한 API 서버를 개발해야 할 수도 있습니다.

아마도 우리는 단순히 우리 웹 사이트를 위한 웹 서버를 설정하는 것일 것입니다.

Python은 기본 HTTP 서버를 사용하여 디렉토리에서 파일 제공을 단순화합니다. 이것은 결코 혁신적인 기술은 아니지만 필요할 때 유용합니다.

HTTP 서버란?

HTTP 서버는 HTTP 및/또는 HTTPS 네트워크 프로토콜의 서버 부분을 구현하여 클라이언트-서버 아키텍처에서 서버 역할을 하는 컴퓨터 프로그램(또는 다른 프로그램의 소프트웨어 구성 요소)입니다.

HTTP 서버는 들어오는 클라이언트 요청(브라우저, 웹 크롤러 등과 같은 사용자 에이전트에 의해 생성됨)을 모니터링하고 요청된 웹 리소스를 전송하거나 HTTP 오류 메시지를 반환하여 각 요청에 응답합니다.

HTTP 서버에는 프로그램 간 상호 작용을 지원하기 위해 HTTP에 대한 프로토콜 확장(예: WebDAV) 또는 HTTP 메시지에 포함된 다른 프로토콜의 메시지(예: SOAP)를 관리하는 바인딩이 추가로 포함되어 있습니다.

HTTP 서버 구현의 복잡성은 작고 제어 가능한 구성 요소에서 백그라운드에서 하나 이상의 프로세스로 작동할 수 있는 HTTP 및 기타 프로토콜의 완전한 기능을 갖춘 소프트웨어 구현에 이르기까지 다양합니다.

HTTP 서버는 임베디드 시스템과 슈퍼컴퓨터를 포함한 모든 종류의 컴퓨터에 존재하며 무엇보다도 웹 인터페이스(웹 애플리케이션)를 운영하는 데에도 필요합니다.

이 점을 좀 더 명확히 해두자.

Chrome 브라우저를 열고 검색주소창에 www.gmail.com을 입력해 보세요.

링크를 실행하면 Gmail 홈 페이지가 웹 브라우저 창에 표시됩니다. 그러나 무대 뒤에서 정확히 무슨 일이 있었습니까?

솔직히, 많은 일들이 일어났고, 우리는 이것이 어떻게 이루어졌는지 배후에 있는 신비한 작용을 탐구하는 데 시간을 할애할 수 있습니다. 그러나 명확성과 간결성을 위해 예를 들어 이 주제에 대해 논의할 것입니다.

브라우저에 www.gmail.com을 입력하면 브라우저가 HTTP 요청이라는 네트워크 메시지를 생성합니다. 이 요청은 웹 서버를 운영하는 Gmail의 시스템으로 전송되며 처리될 때까지 유지됩니다.

이 웹 서버는 우리의 요청을 감지하고 처리한 다음 gmail 홈페이지에 대한 HTML을 응답으로 제공합니다.

결국 웹 브라우저는 시스템 화면에 이 HTML을 표시하며, 이는 우리가 컴퓨터를 볼 때 보는 것입니다.

서버 요청 및 처리

요청이 전송되고 처리되는 방식입니다. 이제 비하인드 프로세스를 알았으므로 Python을 사용하여 HTTP 서버를 만드는 기본 주제로 쉽게 이동할 수 있습니다.

Python에서 하나의 명령으로 기본 HTTP 서버 구축

설치

Python을 아직 설치하지 않은 경우 여기에서 Python을 설치할 수 있습니다(아마도 Windows 사용).

Python이 설치되었으므로 HTTP 서버를 만드는 프로세스를 진행할 수 있습니다. 시작하려면 터미널을 열고 터미널에 다음 명령을 입력하십시오.

예제 코드:

python -m http.server

명령을 실행하면 컴퓨터 구성에 따라 서버 시작됨서버 중지됨을 알리는 메시지가 표시됩니다.

그리고 거기에 우리만의 Python 서버가 있습니다! 우리 컴퓨터의 기본 포트 8000에 있는 웹 서버인 간단한 것입니다.

이 기능만 수행합니다. 다음과 같이 줄 끝에 새 포트 번호를 포함하여 포트를 변경할 수도 있습니다.

python -m http.server 8080

위의 코드는 서버 포트를 기본 포트 8000에서 8080으로 변경합니다.

이제 로컬 네트워크의 서버에 도달하려면 http://localhost:8000/ 또는 http://127.0.0.1:8000/로 이동해야 합니다. 이 시점에서 로컬 저장소와 모든 데이터를 구성하는 모든 폴더를 볼 수 있습니다.

HTML 페이지를 방문할 수도 있습니다. 그렇게 하면 웹 브라우저가 페이지를 자동으로 다시 생성합니다.

BaseHTTPRequestHandler

BaseHTTPRequestHandler는 서버로 전송되는 다양한 요청을 관리하는 데 사용되는 클래스입니다. 실제 HTTP 요청 자체가 아닌 GetPost 요청을 처리합니다.

HTTP서버

HTTPServer(server address, BASE HTTP REQUEST HANDLER(),)로 알려진 이 함수는 서버 이름 외에 서버의 포트 번호를 저장하는 데 사용됩니다.

단계별 접근 방식

  1. 서버의 요청을 관리하는 클래스를 구성합니다.
  2. 완료한 후 해당 클래스에서 GET 요청에 사용할 메서드를 개발합니다.
  3. 해당 기능의 범위 내에서 서버에 표시하는 데 사용할 HTML 코드가 작성됩니다.
  4. 맨 마지막에는 서버 운영을 담당하는 HTTPServer() 메서드를 활용합니다.

이제 위에서 설명한 단계를 Python 언어를 사용하여 구현합니다.

# importing all the functions
# from http.server module
# * means all
from http.server import *

# creating a class for handling
# basic Get and Post Requests


class GFG(BaseHTTPRequestHandler):
    # We will create a function
    # for Get Request using the command below
    def do_GET(self):
        # Successful Response --> 200
        self.send_response(200)
        # Type of file that we are using for creating our
        # web server.
        self.send_header("content-type", "text/html")
        self.end_headers()
        # whatever we write in our function,
        # we can see it at the web-server
        self.wfile.write("<h1>AO-(AbidOrakzai)</h1>".encode())


# this object takes a report
# number and the server-Name
# for running the server
port = HTTPServer(("", 5555), GFG)
# We use this for running our
# server as long as we want, i.e., forever
port.serve_forever()

출력:

AO-(AbidOrakzai)

HTTP 서버를 시작하는 방법

다음 터미널 지침을 사용하여 HTTP 서버를 시작할 수 있습니다.

예제 코드:

python our_file_name.py

그리고 마지막 단계는 포트 5555에서 서버에 액세스하는 것입니다. 브라우저 http://localhost:5555/ 또는 http://127.0.0.1:5555/를 사용할 수 있습니다.

이 기사가 Python을 사용하여 처음부터 HTTP 서버를 생성하는 방법에 대한 더 나은 지식을 얻는 데 도움이 되기를 바랍니다.

작가: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

관련 문장 - Python Server