작가: 트릭스 사이러스
당신의 기기에서 호스팅되는 Python 서버를 만들어 보겠습니다.
시작하기..
server라는 디렉터리를 만듭니다
mkdir server
server.py라는 파일을 만드세요
nano server.py
아래 코드를 붙여넣으세요.
import http.server import socketserver import logging import os import threading from urllib.parse import urlparse, parse_qs PORT = 8080 DIRECTORY = "www" logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') class MyHandler(http.server.SimpleHTTPRequestHandler): def __init__(self, *args, **kwargs): super().__init__(*args, directory=DIRECTORY, **kwargs) def log_message(self, format, *args): logging.info("%s - %s" % (self.client_address[0], format % args)) def do_GET(self): parsed_path = urlparse(self.path) query = parse_qs(parsed_path.query) # Custom logic for different routes if parsed_path.path == '/': self.serve_file("index.html") elif parsed_path.path == '/about': self.respond_with_text("<h1>About Us</h1><p>This is a custom Python server.</p>") elif parsed_path.path == '/greet': name = query.get('name', ['stranger'])[0] self.respond_with_text(f"<h1>Hello, {name}!</h1>") else: self.send_error(404, "File Not Found") def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length) logging.info("Received POST data: %s", post_data.decode('utf-8')) self.respond_with_text("<h1>POST request received</h1>") def serve_file(self, filename): if os.path.exists(os.path.join(DIRECTORY, filename)): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() with open(os.path.join(DIRECTORY, filename), 'rb') as file: self.wfile.write(file.read()) else: self.send_error(404, "File Not Found") def respond_with_text(self, content): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(content.encode('utf-8')) class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer): daemon_threads = True # Handle requests in separate threads def run_server(): try: with ThreadedHTTPServer(("", PORT), MyHandler) as httpd: logging.info(f"Serving HTTP on port {PORT}") logging.info(f"Serving files from directory: {DIRECTORY}") httpd.serve_forever() except Exception as e: logging.error(f"Error starting server: {e}") except KeyboardInterrupt: logging.info("Server stopped by user") if __name__ == "__main__": server_thread = threading.Thread(target=run_server) server_thread.start() server_thread.join()
www라는 디렉터리를 만듭니다
mkdir www
이제 www 디렉토리로 이동하세요
cd www
index.html이라는 파일을 만듭니다
nano index.html
아래 코드를 붙여넣으세요
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Python Simple Server</title> </head> <body> <h1>Welcome to My Python Server!</h1> <p>This is a simple web server running on your local device.</p> </body> </html>
2단계: 경로 테스트
수정된 스크립트를 실행한 후 다음으로 이동하세요.
홈페이지를 보려면 http://localhost:8080/
http://localhost:8080/about 정보 페이지를 확인하세요.
http://localhost:8080/greet?name=트릭스
다른 경로의 경우 서버는 404 오류를 반환합니다.
아래는 디렉토리 구조입니다
server/ ├── server.py └── www/ └── index.html
원격기기에서 서버 실행
동일한 네트워크에 있는 다른 장치에서 Python 서버에 액세스하려면 어떻게 해야 합니까? 서버를 실행하는 머신의 로컬 IP 주소를 찾아 localhost 대신 사용하면 쉽게 할 수 있습니다.
1단계: IP 주소 찾기
다음과 같은 명령을 사용하세요
ipconfig
ifconfig
IPv4 주소(예: 192.168.x.x)를 찾으세요.
2단계. 서버 스크립트 수정
서버 스크립트에서 서버가 시작되는 줄을 다음과 같이 바꾸세요.
with ThreadedHTTPServer(("", PORT), MyHandler) as httpd:
다음으로 변경:
with ThreadedHTTPServer(("0.0.0.0", PORT), MyHandler) as httpd:
3단계: 다른 장치에서 서버에 액세스
이제 앞서 찾은 IP 주소를 사용하여 브라우저에서 http://:8080
으로 이동하여 동일한 네트워크에 있는 모든 장치에서 서버에 액세스할 수 있습니다.그리고 모든 설정
~트릭스섹
위 내용은 Python을 사용하여 장치를 간단한 서버로 전환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!