Chúng ta đã biết có 3 cách để tạo ra một ứng dụng web là [1] viết thuần từ đầu, [2] dùng framework hoặc [3] sử dụng CMS. Dù bạn lựa chọn phương pháp nào thì cũng cần phải có những hiểu biết căn bản về hạ tầng của một ứng dụng web. Web server là một thành phần của hạ tầng ứng dụng web. Chúng ta cùng tìm hiểu về chủ đề này.
3.1 Web server là gì
Web server (máy chủ web) là một máy tính (hoặc một phần mềm), được sử dụng để lưu trữ và cung cấp toàn bộ nội dung cho một website/ứng dụng web (tạm gọi chung là ứng dụng web).
Web server hoạt động như một trung tâm lưu trữ toàn bộ thông tin để tạo ra một ứng dụng web, bao gồm văn bản, hình ảnh, video và dữ liệu khác. Khi bạn nhập địa chỉ ứng dụng web vào trình duyệt web, máy tính của bạn sẽ gửi yêu cầu (request) đến web server lưu trữ ứng dụng web đó. Sau đó, web server sẽ phản hồi (response) bằng cách gửi thông tin được yêu cầu trở lại máy tính của bạn, và trình duyệt của bạn sẽ hiển thị thông tin đó cho bạn xem. Xem hình minh họa:
Một số chức
năng chính của web server
- Lưu trữ các tập
tin của ứng dụng web: web server lưu trữ tất cả các tập tin và dữ liệu tạo nên
ứng dụng web, ví dụ các tập tin HTML, hình ảnh và video.
- Nhận yêu cầu
(request): khi người dùng truy cập một ứng dụng web, trình duyệt web của họ sẽ
gửi một request tới web server. Web server sẽ tiếp nhận request này.
- Xử lý request:
sau khi nhận được request, web server sẽ thực hiện xử lý request. Việc xử lý
request có thể là: đọc nội dung các tập tin, thực thi các đoạn mã nguồn, kết
nối và làm việc với cơ sở dữ liệu.
- Gửi phản hồi
(response): sau khi xử lý xong request, web server sẽ gửi response cho trình
duyệt của người dùng, sau đó, trình duyệt sẽ hiển thị kết quả response cho
người dùng
Quá trình
xử lý của web server

[1] nhận request
[2] phân tích
request, gửi tới ứng dụng web để xử lý
[3] đọc dữ liệu
từ cơ sở dữ liệu
[4] đổ dữ liệu
vào trang HTML (các template HTML)
[5] gửi trang
HTML (đã bao gồm dữ liệu) (response) về trình duyệt người dùng
[6] trình duyệt
người dùng hiển thị nội dung response
[7] trình duyệt
gửi riêng một request khác để lấy các nội dung tĩnh của ứng dụng web (HTML,
CSS, JavaScript, hình ảnh, và các tài nguyên khác).
Một số phần
mềm web server phổ biến
- Apache
- Nginx
- Nodejs
- IIS
- Tom cat
- Lighttpd
Kiến trúc
của một web server
Như đã đề cập,
web server là thuật ngữ để chỉ các phần mềm như Apache, Nginx, IIS, Nodejs;
ngoài ra web server cũng là thuật ngữ để chỉ máy server có cài đặt các phần mềm
web server.
Một máy web
server có các đặc điểm sau:
- Phần cứng là
một máy server chuyên dụng, cấu hình mạnh, khả năng chịu lỗi cao, chạy liên tục
- Hệ điều hành
dành cho máy chủ
- Có cài đặt phần mềm web server (HTTP server - Apache, Nginx, IIS), có thể có hệ quản trị cơ sở dữ liệu (Database), trình dịch và thực thi mã nguồn (Scripting Language)
3.2 Nginx
Để hiểu thêm về
web server, chúng ta cùng thực hiện cài đặt, chạy và thực hiện một vài cấu hình
trên một phần mềm web server cụ thể.
Tải Nginx
Nginx là phần mềm
web server mã nguồn mở.
Vào trang https://nginx.org/, chọn mục Download, chọn bản phù hợp với máy tính của bạn để tải
về. Ví dụ: chọn bản nginx/Windows-1.24.0
Cài đặt
Nginx
Trước khi cài
đặt, bạn vào lại trang https://nginx.org/, chọn mục Documentation để
đọc thêm về việc cài đặt Nginx.
Để sử dụng Nginx, chúng
ta không cần cài đặt, chỉ cần giải nén thư mục nginx-.zip vào ổ đĩa C:\ là có
thể sử dụng được.
Nhấp đúp chuột
vào tập tin nginx.exe để chạy chương trình Nginx.
Nếu chạy được
Nginx, mở Task Manager của Windows, chọn tab Processes, sẽ thấy tiến trình
nginx. Trong Task Manager, chọn tab Details sẽ thấy 2 tiến trình của Nginx
(master process và worker process).
Nếu không chạy
được Nginx hoặc chạy bị lỗi, bạn mở tập tin error.log, trong C:\nginx-1.24.0\logs
để đọc thông tin lỗi.
Nginx chạy dưới
dạng một chương trình (program) chứ không chạy ở chế độ dịch vụ (service).
Chương trình Nginx chạy ngầm, nên để tắt nó thì bạn phải vào Task
Manager hoặc vào cửa sổ dòng lệnh để tắt.
Một số lệnh
của Nginx
Bạn có thể sử
dụng các lệnh để làm việc với Nginx. Gõ lệnh vào các cửa sổ dòng lệnh để thực
thi, ví dụ một số ứng dụng dòng lệnh: CMD, Command Prompt, Powershell.
Một số lệnh:
(nhớ di chuyển
con trỏ chuột tới thư mục có chứa tập tin nginx.exe, hoặc thực hiện cấu hình
biến môi trường thì mới chạy được các lệnh này)
- start nginx : khởi chạy Nginx
- nginx -s
stop : tắt Nginx ngay lập tức
- nginx -s
quit : không chấp nhận kết nối
mới, chờ các client hoàn thành tác vụ dang dở rồi mới tắt Nginx
- nginx -s
reload : thay đổi cấu hình, khởi
chạy lại worker process với cấu hình mới
- nginx -s
reopen : mở lại các tập tin log
Ví dụ, chạy các
lệnh sau trong cửa sổ CMD, sau mỗi lệnh, mở Task Manager để quan sát chương
trình Nginx biến mất và xuất hiện lại trong Task Manager:
C:\nginx-1.24.0>nginx
-s stop
C:\nginx-1.24.0>start
nginx
C:\nginx-1.24.0>nginx
-s quit
C:\nginx-1.24.0>
Sau khi chạy
Nginx, bạn mở trình duyệt web, gõ vào đường dẫn sau (động tác này chính là gửi
một request tới web server):
Nếu nginx đang ở
trạng thái sẵn sàng nhận request > sau khi nhận request > xử lý và trả về
response > trình duyệt nhận được response > thực thi nội dung response
> xuất nội dung lên cửa sổ trình duyệt:
Cấu hình
Nginx
Tập tin chứa các
cấu hình của Nginx là nginx.conf, nằm trong thư mục C:\nginx-1.24.0\conf
Bạn mở nginx.conf
bằng Notepad hoặc VS code, tìm tới dòng có chứa nội dung
server {
listen 80;
…
Sửa số 80 thành
một số bất kỳ, ví dụ 9000. Đây là giá trị cổng (port) của web server sử dụng để
lắng nghe request từ các client.
Lưu lại (save)
tập tin nginx.conf.
Vào chương trình
cửa sổ dòng lệnh (CMD), chạy lệnh nginx -s reload để cập nhật lại tập
tin cấu hình.
Vào trình duyệt
web, gõ lại lệnh:
Trình duyệt sẽ
xuất hiện dòng thông báo
This site
can’t be reached
Lý do là chúng ta
đã đổi cổng chờ request của Nginx từ 80 thành 9000, do vậy bạn nhập http://localhost là đang dùng cổng mặc định
80, nên không gửi được request tới Nginx server.
Chúng ta, nhập
lại đường dẫn là:
http://localhost:9000
Trình duyệt sẽ
hiển trị trang Welcome của Nginx.
Web root và
trang mặc định trong Nginx
Mở tập tin nginx.conf
bằng VS code hoặc Notepad.
Trong mục cấu
hình của server:
server {
listen
9000;
server_name
localhost;
#charset koi8-r;
#access_log
logs/host.access.log main;
location / {
root
html;
index
index.html index.htm;
}
…
Lưu ý: các
dòng cấu hình có dấu thăng (#) ở phía trước là dòng chú thích, hoặc các dòng
cấu hình đã bị vô hiệu (không có hiệu lực thực thi).
Mục location
chỉ ra rằng thư mục web root (thư mục gốc của web server) là thư mục html,
và tập tin mặc định được gọi sẽ là index.html, nếu không có
index.html thì gọi tập tin index.htm.
Bạn mở tập tin index.html
trong C:\nginx-1.24.0\html, sửa lại mã nguồn tùy thích.
Mở cửa sổ dòng
lệnh, reload lại web server.
Refresh lại trình duyệt để xem nội dung hiển thị đã được cập nhật theo ý bạn.
3.3 Bài tập
Bài tập 3.1 Thực
hành lại các cài đặt trong bài học.
Câu 3.2 Một số
phần mềm web server phổ biến. Phát biểu nào không đúng?
A. Apache
B. Nginx
C. SSI
D. Nodejs
Câu 3.3 Các chức
năng của Web server là gì. Phát biểu nào không đúng?
A. Lưu trữ các
tập tin của ứng dụng web
B. Nhận request
từ client
C. Xử lý request
D. Nhận response
từ máy client
Bài tập 3.4 Thực hiện
một số cấu hình cho Nginx:
- (a) Lắng nghe trên
cổng 65535
- (b) Trỏ web root về
một thư mục khác ổ đĩa C:\ (ví dụ: D:\TeoShop)
- (c) Khi client gửi
request tới web root, tập tin mặc định trả về là index.py, tạo thêm tập tin
index.py để kiểm tra.
- (d) Lắng nghe trên
cổng 65536 được không? Tại sao
-----
Gợi ý làm bài tập
3.2(C), 3.3(D)
Bài tập 3.4 Thực hiện
một số cấu hình cho Nginx:
(a), (b), (c): thực
hiện cấu hình trong tập tin nginx.conf
(d): xem lại kích
thước của trường port trong một packet.