1. Giới thiệu về Apache là gì?
Apache là một phần mềm máy chủ web (web server) mã nguồn mở miễn phí phổ biến nhất hiện nay. Nó chiếm khoảng 40% thị phần máy chủ web toàn cầu. Apache được phát triển và duy trì bởi Apache Software Foundation. Ban đầu nó được phát triển bởi một nhóm các lập trình viên tình nguyện, và sau đó trở thành dự án mã nguồn mở phát triển mạnh mẽ nhất lịch sử.
Máy chủ Apache có thể được cài đặt trên hầu hết các hệ điều hành phổ biến như Linux, Unix, Windows, Mac OS,… Nó hỗ trợ nhiều ngôn ngữ lập trình web phổ biến như PHP, Python, Perl, Ruby,… giúp xây dựng các ứng dụng web động.
Chức năng của Apache
Apache đảm nhiệm chức năng cơ bản của một máy chủ web là lắng nghe và xử lý các yêu cầu (request) từ phía người dùng, sau đó trả về kết quả (response) cho người dùng. Cụ thể, những chức năng chính của Apache bao gồm:
- Lắng nghe và tiếp nhận các yêu cầu gửi đến qua giao thức HTTP hoặc HTTPS từ phía người dùng.
- Xử lý và phân tích các yêu cầu để xác định tài nguyên người dùng yêu cầu truy xuất.
- Truy xuất dữ liệu hoặc nội dung từ hệ thống tập tin hoặc cơ sở dữ liệu.
- Thực thi các ngôn ngữ lập trình như PHP, Python để tạo nội dung động cho website.
- Kiểm soát truy cập và xác thực người dùng dựa trên danh tính hoặc vai trò.
- Nén và cache dữ liệu để tối ưu hóa hiệu năng phục vụ nội dung.
- Bảo mật dữ liệu truyền tải giữa máy chủ và người dùng.
- Ghi nhật ký các hoạt động và lỗi để theo dõi.
- Trả về đúng định dạng nội dung và dữ liệu cho người dùng dựa trên yêu cầu.
Như vậy, Apache làm nhiệm vụ trung gian giữa người dùng và máy chủ, đảm bảo truy xuất và cung cấp nội dung chính xác, an toàn cho người dùng.
Kiến trúc module của Apache
Apache sử dụng kiến trúc module, cho phép mở rộng các tính năng dễ dàng bằng cách bổ sung thêm các module. Mỗi module thực hiện một chức năng riêng biệt. Các module chính của Apache:
- Module Core: Module lõi, chịu trách nhiệm chức năng cơ bản nhất của Apache.
- Module Multi-Processing Modules (MPMs): Quản lý các tiến trình đa luồng và song song.
- Module Authentication: Xác thực và kiểm soát truy cập của người dùng.
- Module Authorization: Phân quyền và kiểm soát khả năng truy cập tài nguyên.
- Module Logging: Ghi log các hoạt động máy chủ.
- Module Server Side Includes (SSI): Cho phép chèn nội dung động vào các file HTML tĩnh.
- Module and AddHandler: Định nghĩa các thành phần xử lý các loại file và định dạng nội dung khác nhau.
Nhờ cơ chế module linh hoạt, Apache dễ dàng được mở rộng để thêm các tính năng mới như hỗ trợ thêm ngôn ngữ lập trình, cơ sở dữ liệu, các ứng dụng web,…
2. Lịch sử phát triển của Apache
Apache có nguồn gốc từ phần mềm máy chủ web đầu tiên được phát triển vào năm 1995 tại NCSA (National Center for Supercomputing Applications – Trung tâm Ứng dụng Siêu máy tính Quốc gia) của Đại học Illinois ở Urbana-Champaign. Ban đầu nó có tên là httpd.
Sau đó, mã nguồn của httpd được phát hành dưới giấy phép mã nguồn mở và cộng đồng lập trình web bắt đầu phát triển nó độc lập với NCSA. Dự án này được đặt tên là Apache và phiên bản đầu tiên (0.6.2) ra mắt vào tháng 4/1995.
Phiên bản Apache ban đầu
Phiên bản đầu tiên của Apache (0.6.2 – 1998) có một số tính năng cơ bản:
- Hỗ trợ các giao thức HTTP/1.0, HTTPS, FTP
- Kiến trúc đơn luồng xử lý theo mô hình Process-based
- Tính năng Authentication Basic và Digest
- Hỗ trợ một số ngôn ngữ lập trình phổ biến như Perl, Python, TCL
- Module hỗ trợ nén gzip
- Ghi log các truy cập và lỗi sử dụng Common Log Format
Tuy chỉ có các tính năng cơ bản, phiên bản đầu tiên đã đặt nền tảng cho sự phát triển vượt bậc sau này của Apache.
Các phiên bản Apache tiếp theo
Các phiên bản Apache tiếp theo được phát triển với tốc độ nhanh chóng, cải tiến hơn về hiệu năng và bổ sung thêm nhiều tính năng mới.
Phiên bản | Năm phát hành | Những cải tiến chính |
---|---|---|
0.7.x | 1995 | Hỗ trợ thêm ngôn ngữ Perl <br> Phân quyền truy cập tệp tin |
0.8.x | 1996 | Hỗ trợ name-based virtual hosting <br> Module hỗ trợ PHP |
0.9.x | 1997 | Tăng hiệu năng xử lý đồng thời |
1.0 | 1998 | Kiến trúc đa luồng <br> Tùy chọn compile tùy chỉnh |
1.1 | 2000 | IPv6 support <br> Module mod_ssl hỗ trợ HTTPS |
1.2 | 2002 | Hỗ trợ Unicode |
1.3 | 2002 | Hỗ trợ hệ thống tập tin 64 bit |
2.0 | 2005 | Kiến trúc tiến trình đa luồng mới <br> Tăng hiệu năng và khả năng mở rộng |
2.2 | 2005 | Cải thiện hiệu năng caching <br> Hỗ trợ ajax và web động |
2.4 | 2012 | Hỗ trợ HTTP/2 <br> Nhiều cải tiến về bảo mật |
Nhờ sự phát triển liên tục, Apache đã trở thành lựa chọn hàng đầu cho máy chủ web. Đặc biệt từ phiên bản 2.0, Apache đã có những bước nhảy vọt đột phá cả về hiệu năng và tính năng.
>> Tham khảo thêm: Cài đặt Apache web server (http)
3. Cách thức hoạt động của Apache
Apache hoạt động theo mô hình client-server, xử lý và phục vụ các request từ client thông qua giao thức HTTP/HTTPS. Quá trình xử lý một request của Apache được diễn ra các bước chính sau:
Tiếp nhận request
- Client (trình duyệt web) gửi một request tới server Apache, thường sử dụng giao thức HTTP hoặc HTTPS.
- Request gồm phương thức (GET, POST, PUT,..), header (chứa các thông tin metadata), và nội dung request.
- Server Apache tiếp nhận request thông qua cổng mặc định (80 cho HTTP, 443 cho HTTPS).
- Request được đưa vào hàng đợi để xử lý.
Xử lý request
- Một thread được cấp phát từ số thread ở trong module MPM để xử lý request.
- Trạng thái của request sẽ chuyển sang đang thực thi.
- Apache sẽ xử lý và phân tích request:
- Xác định method, header, tham số
- Kiểm tra quyền truy cập, xác thực người dùng nếu cần
- Xác định các module cần tham gia xử lý
- Các module tương ứng sẽ được khởi động để xử lý các nhiệm vụ cụ thể.
Truy xuất tài nguyên
- Dựa vào URL trong request, Apache sẽ xác định tài nguyên (file, dữ liệu) mà người dùng yêu cầu.
- Nếu là một file tĩnh (HTML, CSS, JS,..), Apache sẽ đọc và trả về nội dung file.
- Nếu là request dạng động, Apache sẽ chuyển request tới các module xử lý tương ứng. Ví dụ PHP module để xử lý PHP request.
- Nếu tài nguyên không tồn tại, Apache sẽ xảy ra lỗi HTTP 404 Not Found.
Gửi response
- Sau khi có đầy đủ nội dung, Apache sẽ gói gọn thành HTTP response gồm status code (200, 404), header và response body.
- Response được gửi trở lại client thông qua kết nối ban đầu.
- Trạng thái request được đánh dấu hoàn thành và kết thúc.
- Apache giải phóng bộ nhớ và thread đã sử dụng để xử lý request.
Như vậy là một request tới Apache server đã được xử lý xong. Quá trình này lặp lại cho mỗi request gửi tới máy chủ.
Cơ chế xử lý đồng thời
Để xử lý nhiều request đồng thời, Apache sử dụng mô hình đa luồng (multi-threading) và đa tiến trình (multi-processing). Cụ thể:
- Mỗi MPM module duy trì một nhóm (pool) các tiến trình (process) và luồng (thread).
- Mỗi process chứa nhiều thread để xử lý các request.
- Các request sẽ được phân bổ đồng thời tới các thread trong các process khác nhau để xử lý song song.
- Khi một request được hoàn thành, thread đó sẽ xử lý request tiếp theo trong hàng đợi.
Nhờ đó, Apache có thể xử lý hàng ngàn request cùng lúc một cách hiệu quả.
4. Các phiên bản Apache phổ biến
Apache đã trải qua hơn 20 năm phát triển với hàng chục phiên bản. Một số phiên bản phổ biến:
Apache 1.3
- Phát hành năm 1999.
- Phiên bản ổn định, là phiên bản phổ biến rộng rãi đầu những năm 2000.
- Hỗ trợ PHP, Perl, Python.
- Sử dụng mô hình xử lý đơn luồng.
Apache 2.0
- Ra mắt năm 2002.
- Cải tiến hiệu năng và khả năng mở rộng so với phiên bản 1.3.
- Bổ sung nhiều module mới.
- Sử dụng mô hình xử lý đa luồng mới.
Apache 2.2
- Phát hành năm 2005.
- Tối ưu hóa hiệu năng với cơ chế caching tốt hơn.
- Hỗ trợ các ứng dụng web 2.0, Ajax.
- Bổ sung các tính năng bảo mật mới.
- Phiên bản phổ biến rộng rãi hiện nay.
Apache 2.4
- Ra mắt năm 2012.
- Hỗ trợ HTTP/2 cho phép truyền tải nhanh hơn.
- Tăng cường bảo mật, hạn chế các lỗ hổng bảo mật tiềm ẩn.
- Tối ưu hóa hiệu năng sử dụng bộ nhớ và CPU.
- Phiên bản mới nhất hiện tại.
Hiện nay, các phiên bản Apache được sử dụng phổ biến rộng rãi là 2.2 và 2.4.
5. Ưu điểm của Apache
Apache có một số ưu điểm vượt trội:
Hoàn toàn mã nguồn mở
- Apache phát triển dựa trên mô hình mã nguồn hoàn toàn mở.
- Mọi người đều có thể tải mã nguồn, sử dụng, chỉnh sửa, cải tiến và phân phối lại miễn phí.
- Điều này thúc đẩy sự đóng góp phát triển tính năng của cộng đồng.
Hoàn toàn miễn phí
- Apache là phần mềm miễn phí 100%, không mất phí bản quyền.
- Giảm thiểu chi phí cho các cá nhân và doanh nghiệp nhỏ sử dụng.
- Người dùng có thể tận dụng ngân sách cho các mục đích khác.
Hiệu năng và khả năng mở rộng tốt
- Apache tối ưu hóa để đạt hiệu năng và khả năng mở rộng cao.
- Xử lý hàng ngàn request đồng thời một cách nhanh chóng.
- Dễ dàng mở rộng cấu hình cho hệ thống lớn.
Bảo mật tốt
- Apache cung cấp nhiều tính năng bảo mật như SSL, xác thực mạnh mẽ.
- Cho phép kiểm soát truy cập chi tiết tới từng tài nguyên.
- Cập nhật vá lỗ hổng thường xuyên.
Khả năng tùy biến cao
- Kiến trúc module cho phép dễ dàng mở rộng chức năng.
- Hỗ trợ nhiều module, plugin để cải thiện tính năng.
- Có thể dễ dàng tích hợp với các ứng dụng web khác.
Nhờ các ưu điểm vượt trội đó, Apache xứng đáng là lựa chọn hàng đầu cho máy chủ web.
6. Kết luận
Tóm lại, Apache là phần mềm máy chủ web mã nguồn mở phổ biến nhất hiện nay. Hy vọng qua nội dung bài viết này bạn đọc đã hiểu rõ Apache là gì? Với lịch sử phát triển lâu đời, cộng đồng lớn, nhiều ưu điểm vượt trội, Apache hoàn toàn có thể đáp ứng nhu cầu của hầu hết các website để phục vụ người dùng. Các phiên bản Apache trong tương lai sẽ tiếp tục cải thiện về hiệu năng và tính năng để phù hợp với xu hướng phát triển công nghệ web. Doanh nghiệp lớn hay startup đều có thể lựa chọn Apache làm máy chủ web đáng tin cậy cho sản phẩm của mình.