파이썬 로컬 서버
이 자습서에서는 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 요청 자체가 아닌 Get
및 Post
요청을 처리합니다.
HTTP서버
HTTPServer(server address, BASE HTTP REQUEST HANDLER(),)
로 알려진 이 함수는 서버 이름 외에 서버의 포트 번호를 저장하는 데 사용됩니다.
단계별 접근 방식
- 서버의 요청을 관리하는 클래스를 구성합니다.
- 완료한 후 해당 클래스에서
GET
요청에 사용할 메서드를 개발합니다. - 해당 기능의 범위 내에서 서버에 표시하는 데 사용할 HTML 코드가 작성됩니다.
- 맨 마지막에는 서버 운영을 담당하는
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 서버를 생성하는 방법에 대한 더 나은 지식을 얻는 데 도움이 되기를 바랍니다.
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