Máy chủ web nhỏ Python

Máy chủ là phần mềm hoặc phần cứng máy tính xử lý các yêu cầu và cung cấp dữ liệu cho khách hàng qua mạng. Có nhiều loại máy chủ khác nhau, phổ biến nhất là máy chủ web, máy chủ cơ sở dữ liệu, máy chủ ứng dụng và máy chủ giao dịch

Các máy chủ web được sử dụng rộng rãi như Apache, Monkey và Jigsaw khá tốn thời gian để thiết lập khi thử nghiệm các dự án đơn giản và trọng tâm của nhà phát triển được chuyển từ sản xuất logic ứng dụng sang thiết lập máy chủ

Mô-đun

$ python3 -m http.server 8000
4 của Python là một công cụ hữu ích và đơn giản mà các nhà phát triển có thể sử dụng cho một số trường hợp sử dụng, với mục đích chính là đây là cách nhanh chóng để phân phát tệp từ một thư mục

Nó loại bỏ quá trình tốn nhiều công sức liên quan đến việc cài đặt và triển khai các máy chủ web đa nền tảng có sẵn

Ghi chú. Mặc dù

$ python3 -m http.server 8000
4 là một cách tuyệt vời để dễ dàng phục vụ các tệp từ một thư mục, nhưng nó không nên được sử dụng trong môi trường sản xuất. Theo tài liệu Python chính thức, nó "chỉ thực hiện kiểm tra bảo mật cơ bản. "

Máy chủ HTTP là gì

HTTP là viết tắt của Giao thức truyền siêu văn bản. Chúng ta hãy nghĩ về một giao thức như một ngôn ngữ nói như tiếng Anh. Tiếng Anh có một bộ quy tắc và từ vựng. Vì vậy, nếu cả hai chúng ta đều hiểu các quy tắc và từ vựng xác định Ngôn ngữ tiếng Anh, thì chúng ta có thể giao tiếp bằng ngôn ngữ một cách hiệu quả

Cũng giống như con người, các thiết bị điện tử để giao tiếp với nhau. Do đó, họ cần một 'bộ quy tắc và từ vựng' để chủ động truyền và nhận thông tin từ nhau

Giao thức là một bộ quy tắc tiêu chuẩn tạo điều kiện giao tiếp thành công giữa các thiết bị điện tử. Các bộ quy tắc được triển khai và chấp nhận lẫn nhau này bao gồm các lệnh được sử dụng để bắt đầu gửi và nhận dữ liệu, loại dữ liệu được truyền giữa các thiết bị, cách phát hiện lỗi trong dữ liệu, cách xác nhận truyền dữ liệu thành công, v.v.

Ví dụ: khi bạn thực hiện tìm kiếm đơn giản bằng trình duyệt, có hai hệ thống thiết yếu tham gia - Máy khách HTTP và Máy chủ HTTP

Máy khách, thường được gọi là trình duyệt, có thể là một chương trình phức tạp như Google Chrome hoặc Firefox nhưng cũng có thể đơn giản như một ứng dụng CLI. Máy khách gửi yêu cầu của bạn đến máy chủ, nơi xử lý các yêu cầu HTTP và cung cấp phản hồi cho máy khách. Trong trường hợp trình duyệt, phản hồi thường là một trang HTML

Mô-đun SimpleHTTPServer của Python

Khi bạn cần một máy chủ web chạy nhanh, việc thiết lập một máy chủ cấp sản xuất là quá mức cần thiết

Mô-đun

$ python3 -m http.server 8000
4 của Python là một công cụ tiết kiệm sức lao động mà bạn có thể tận dụng để biến bất kỳ thư mục nào trong hệ thống của mình thành một máy chủ web đơn giản. Nó đi kèm với một máy chủ HTTP đơn giản cung cấp các trình xử lý yêu cầu
$ python3 -m http.server 8000
7 và
$ python3 -m http.server 8000
8 tiêu chuẩn

Với máy chủ HTTP tích hợp, bạn không cần phải cài đặt hoặc định cấu hình bất kỳ thứ gì để khởi động và chạy máy chủ web của mình

Ghi chú. Mô-đun Python

$ python3 -m http.server 8000
4 đã được hợp nhất vào mô-đun
$ python3 -m http.server 8000
1 trong Python 3. Trong suốt bài viết này, chúng tôi sẽ sử dụng phiên bản Python 3, nhưng nếu bạn đang sử dụng Python 2, bạn có thể hoán đổi
$ python3 -m http.server 8000
1 cho
$ python3 -m http.server 8000
4 và phiên bản này sẽ hoạt động trong hầu hết các trường hợp

Sử dụng dòng lệnh

Cách đơn giản nhất để khởi động một máy chủ web phục vụ thư mục chạy lệnh là chỉ cần điều hướng đến thư mục dự án của bạn bằng thiết bị đầu cuối và chạy

Trăn 2

$ python -m SimpleHTTPServer 8000

Trăn 3

$ python3 -m http.server 8000

Bằng cách chạy lệnh này, bạn sẽ có thể truy cập các tệp trong thư mục của mình thông qua trình duyệt của mình tại

$ python3 -m http.server 8000
4

Như bạn có thể thấy, máy chủ cung cấp giao diện người dùng thư mục đơn giản trong đó bạn có thể truy cập bất kỳ tệp nào. Đây là cách đơn giản nhất để trực tiếp phục vụ các tệp cục bộ qua HTTP

Cách sử dụng Python mặc định

Vì lý do này hay lý do khác, việc chạy máy chủ này thông qua dòng lệnh có thể không phù hợp với trường hợp sử dụng của chúng tôi. Vào những lúc như thế này, thay vào đó, chúng ta có thể sử dụng máy chủ trực tiếp trong mã của mình bằng cách sử dụng đối tượng

$ python3 -m http.server 8000
5. Nhưng trước tiên, chúng ta cần thiết lập nó với một máy chủ socket

Bên dưới giao thức HTTP là UDP (Giao thức gói dữ liệu người dùng) hoặc TCP (Giao thức điều khiển truyền), là các giao thức vận chuyển xử lý việc vận chuyển dữ liệu từ vị trí mạng này sang vị trí mạng khác. Vì chúng tôi đang chạy máy chủ HTTP, ứng dụng của chúng tôi sẽ sử dụng giao thức TCP, thông qua Địa chỉ ổ cắm TCP chứa địa chỉ IP và số cổng. Điều này có thể được thiết lập với

$ python3 -m http.server 8000
6 của Python mà chúng tôi đã triển khai bên dưới

import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()

Ghi chú. Mã sẽ không thành công với lỗi

$ python3 -m http.server 8000
7 đối với các phiên bản Python <3. 6. Điều này là do trong các phiên bản trước,
$ python3 -m http.server 8000
6 không hỗ trợ sử dụng với trình quản lý bối cảnh (từ khóa
$ python3 -m http.server 8000
9). Trong những trường hợp này, bạn cần gọi
import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
0 để dừng máy chủ

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Theo mặc định,

$ python3 -m http.server 8000
5 phục vụ các tệp từ thư mục hiện tại và các thư mục con liên quan. Như tên gợi ý, nó là một trình xử lý yêu cầu HTTP đơn giản. Là máy chủ đơn giản, nó chỉ cho phép bạn truy xuất dữ liệu chứ không đưa lên máy chủ. Và vì điều này, nó chỉ triển khai các phương thức HTTP
$ python3 -m http.server 8000
7 và
$ python3 -m http.server 8000
8 thông qua
import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
4 và
import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
5

Các tham số được truyền cho

import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
6 đại diện cho địa chỉ IP và số cổng. Bằng cách để trống địa chỉ IP, máy chủ sẽ lắng nghe tất cả các địa chỉ IP khả dụng, trong khi chúng tôi đã đặt cổng thành
import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
7. Điều này có nghĩa là sau đó nó sẽ có thể truy cập được trên
$ python3 -m http.server 8000
4

Cuối cùng,

import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
9 khởi động máy chủ, lắng nghe và phản hồi các yêu cầu đến từ máy khách

Máy chủ có thể được bắt đầu bằng cách thực thi tệp

$ python3 -m http.server 8000
9

Và giống như cách sử dụng dòng lệnh, giờ đây chúng ta có thể truy cập thư mục thông qua trình duyệt web của mình

Tùy chỉnh đường dẫn

Một cách tiếp cận khác mà chúng tôi có thể thực hiện là tạo một lớp tùy chỉnh mở rộng

$ python3 -m http.server 8000
5 và xử lý các yêu cầu của chúng tôi bằng một số chức năng tùy chỉnh. Để làm điều này, chúng tôi triển khai chức năng
import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
4 của riêng mình

Nhưng trước khi chúng ta hiểu điều đó, giả sử chúng ta có một tệp HTML mà chúng ta muốn phân phát,

$ python3 -m http.server 8000
92

$ python -m SimpleHTTPServer 8000
3

Để phân phối HTML này từ một đường dẫn không phải là

$ python3 -m http.server 8000
93, chúng tôi có thể sử dụng trình xử lý tùy chỉnh của mình để phân phối nó trên bất kỳ đường dẫn nào chúng tôi muốn. Trong ví dụ này, chúng tôi sẽ chỉ phục vụ nó trên đường dẫn gốc,
$ python3 -m http.server 8000
94

Một lần nữa, chạy tập lệnh này sẽ cho phép chúng tôi truy cập nó thông qua trình duyệt

Mặc dù vậy, chúng ta có thể thực hiện nhiều tùy chỉnh hơn với phản hồi thông qua tham chiếu

$ python3 -m http.server 8000
95 mà chúng ta sẽ thấy trong phần tiếp theo

Trả lại HTML động

Một cách sử dụng phổ biến của máy chủ web là phục vụ HTML được tạo động. Mặc dù đây chỉ là máy chủ rất đơn giản, nhưng nó cũng có thể thực hiện nhiệm vụ này. Ngoài việc gửi HTML động, chúng tôi cũng có thể đặt các mã trạng thái, tiêu đề khác nhau, v.v. Trong ví dụ sau, chúng tôi đặt một số tiêu đề và trả về HTML động được tạo bằng tham số truy vấn

$ python3 -m http.server 8000
96

Và chạy mã này với URL

$ python3 -m http.server 8000
97 sẽ mang lại

Bất kỳ giá trị nào bạn đặt cho tham số truy vấn

$ python3 -m http.server 8000
96 sẽ hiển thị trên màn hình. Bạn thậm chí có thể bỏ qua tham số truy vấn
$ python3 -m http.server 8000
96 và xem điều gì sẽ xảy ra

Như bạn có thể thấy, việc tạo trình xử lý yêu cầu tùy chỉnh cho phép chúng tôi thao tác các phản hồi tùy thích bằng cách thay đổi cách triển khai phương thức

$ python -m SimpleHTTPServer 8000
30 và chúng tôi không có quyền kiểm soát như vậy đối với các phản hồi của mình với cách triển khai mặc định

Điều tương tự cũng có thể được thực hiện với phương thức HTTP HEAD (thông qua hàm

import http.server
import socketserver

PORT = 8000

handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("Server started at localhost:" + str(PORT))
    httpd.serve_forever()
5), nhưng vì nó rất giống với phương thức GET nên chúng tôi sẽ để nó như một bài tập cho người đọc

Phần kết luận

Python cung cấp cho chúng tôi mô-đun

$ python3 -m http.server 8000
4 (hoặc
$ python3 -m http.server 8000
1 trong Python 3) có thể được sử dụng để phục vụ nhanh chóng và dễ dàng các tệp từ thư mục cục bộ qua HTTP. Điều này có thể được sử dụng cho nhiều nhiệm vụ phát triển hoặc nội bộ khác, nhưng không dành cho sản xuất

Đây là một giải pháp tuyệt vời để sử dụng cục bộ vì các máy chủ web như Apache, Monkey và Jigsaw khó thiết lập hơn nhiều và thường quá mức cần thiết cho các hoạt động phát triển

Python có tốt cho máy chủ web không?

Một trong những ưu điểm của việc sử dụng Python để tạo tập lệnh phía máy chủ là cú pháp đơn giản , như đã đề cập ở trên, giúp tăng tốc đáng kể quá trình. Mã này bao gồm các mô-đun chức năng và các kết nối giữa chúng, cho phép bạn thực hiện thuật toán chương trình dựa trên hành động của người dùng.

Python có máy chủ web không?

Python hỗ trợ máy chủ web ngay lập tức . Bạn có thể bắt đầu một máy chủ web với một lớp lót. Nhưng bạn cũng có thể tạo một máy chủ web tùy chỉnh có chức năng độc đáo. Trong bài viết này, bạn sẽ học cách làm điều đó.

Máy chủ HTTP đơn giản trong Python là gì?

Mô-đun SimpleHTTPServer là mô-đun Python cho phép nhà phát triển đặt nền tảng để phát triển máy chủ web . Tuy nhiên, với tư cách là quản trị viên hệ thống, chúng ta có thể sử dụng mô-đun để cung cấp tệp từ một thư mục. Cách sử dụng. Python phải được cài đặt để sử dụng mô-đun SimpleHTTPServer.

Python có thể được sử dụng để phát triển web phía máy chủ không?

Để tạo máy chủ web, bạn sẽ cần mô-đun máy chủ HTTP Python có thể được sử dụng làm máy chủ tệp tĩnh . Đối với một máy chủ web động, bạn sẽ cần một khung Python như Django hoặc Flask. Nhập mã ở trên vào dấu nhắc lệnh hoặc thiết bị đầu cuối, tùy thuộc vào hệ thống của bạn. Thông báo 'máy chủ đã bắt đầu' sẽ xuất hiện.