Web server có ở khắp mọi nơi. Cho dù bạn là kỹ sư phần mềm hay đơn giản là ai đó đang cấu hình một máy chủ web cho trang web của bạn, bạn sẽ phải tương tác với các máy chủ web. Trong bài viết này, tôi sẽ giới thiệu cách tạo máy chủ web HTTP đơn giản nhất bằng Python.
Máy chủ HTTP là gì?
Máy chủ web HTTP không có gì ngoài một quy trình đang chạy trên máy của bạn và thực hiện hai công việc chính: lắng nghe các yêu cầu HTTP đến trên một địa chỉ TCP socket cụ thể và xử lý yêu cầu này bằng cách gửi phản hồi lại cho người dùng. Đơn giản như bạn nhập www.yahoo.com vào trình duyệt của bạn và nhận được trang chủ Yahoo.
Ở cấp độ cao, khi bạn nhập www.yahoo.com trên trình duyệt của mình, trình duyệt sẽ tạo một yêu cầu HTTP. Yêu cầu này sẽ đi đến các máy tính Yahoo có máy chủ web đang chạy trên đó. Máy chủ web này sẽ chặn yêu cầu của bạn và xử lý nó bằng cách phản hồi lại bằng html của trang chủ Yahoo. Cuối cùng, trình duyệt của bạn hiển thị html này trên màn hình và đó là những gì bạn thấy.
Địa chỉ TCP socket
Mỗi tin nhắn HTTP (yêu cầu hoặc phản hồi) cần biết cách đến đích. Để đến đích, mỗi tin nhắn HTTP mang một địa chỉ TCP được gọi là địa chỉ đích. Địa chỉ TCP bao gồm địa chỉ IP (Internet Protocol) và số cổng. Địa chỉ IP chuyển đổi từ tên miền như www.yahoo.com thông qua cơ sở dữ liệu phân tán lớn gọi là DNS (Domain Name System). Số cổng mặc định là 80 cho HTTP và 443 cho HTTPS. Vì máy chủ web đang nghe các yêu cầu trên một cổng cụ thể, bạn cần chỉ định rõ ràng số cổng nếu không phải là cổng mặc định.
Tạo một tệp HTML đơn giản
Đầu tiên, hãy tạo một trang HTML đơn giản. Trong trang HTML này, chúng ta muốn hiển thị thông báo "Congratulations! The HTTP Server is working!". Chỉ cần lưu trang HTML này dưới dạng "index.html".
Tạo một máy chủ web HTTP
Để tạo máy chủ web HTTP đơn giản trong Python 3, bạn cần import 2 module: http.server
và socketserver
. Tiếp theo, bạn cần khởi tạo một đối tượng TCPServer
để lắng nghe các yêu cầu đến tại một địa chỉ và cổng cụ thể và cung cấp một xử lý yêu cầu để xử lý các yêu cầu đến. Vào cmd (Windows) hoặc terminal (Linux) trên máy tính của bạn và chạy lệnh $ python server.py
để khởi động máy chủ web.
Vậy là bạn đã có một máy chủ HTTP đơn giản đang lắng nghe trên cổng 8080 và chờ các yêu cầu HTTP đến. Mở trình duyệt và truy cập vào "localhost:8080" để kiểm tra xem máy chủ web hoạt động như thế nào.
Cuối cùng, bạn có thể bắt đầu một máy chủ web Python mà không cần viết bất kỳ tập lệnh nào. Chỉ cần gõ lệnh $ python -m http.server 8080
trong cmd hoặc terminal. Máy chủ này sẽ lắng nghe trên cổng 8080 trên tất cả các giao diện. Nếu bạn muốn lắng nghe trên một giao diện cụ thể, bạn có thể sử dụng $ python -m http.server 8080 --bind 127.0.0.1
.