Saturday, 16 March 2013

FAMILUG guide to web server

serve - server

tớ không thích cách dịch phổ biến :  "web server" -> "máy chủ web". Nên trong bài này tớ sẽ dùng nguyên từ web server.

Tớ có mấy câu hỏi nhờ mọi người trả lời giúp:
Biết apache2 là 1 web server
Biết cái máy tính dùng làm máy chủ thì gọi là server
vậy cái server cài apache2 thì gọi là gì ?
và cái server cài apache2 + mail server thì gọi là gì?

Theo  http://oxforddictionaries.com/definition/english/serve?q=serve
serve (v) : perform duties or services for (another person or an organization):
phục vụ

server(n) : a person or thing that serves.
là danh từ chỉ người  / vật thực hiện việc phục vụ ấy. (tạm dịch gọn là "kẻ" phục vụ)

vậy web server hiểu đơn giản là một software phục vụ (các) trang web. Người dùng sẽ sử dụng client (web browser chẳng hạn, ví dụ Firefox) để truy cập tới web server để được phục vụ nội dung trang web.

web server hay còn gọi là HTTP server. Một HTTP server (apache2, nginx, lightpd, ...) thực hiện nhiệm vụ xử lý các HTTP requests (GET POST PUT DELETE ...) và các công việc liên quan. 


apache2
hvn@lappy: ~ () $ whatis apache2
apache2 (8)          - Apache Hypertext Transfer Protocol Server

Apache2 là HTTP server phổ biến nhất trên thế giới hiện nay, nó có cấu trúc module, tức muốn dùng thêm tính năng gì thì cài thêm vào.

Ví dụ:
muốn nó khả năng xử lý php thì cài thêm libapache2-mod-php5
muốn nó xử lý python thì cài thêm libapache2-mod-wsgi

nginx
 hvn@lappy: ~ () $ whatis nginx
nginx (1)            - small, but very powerful and efficient web server
nginx là HTTP server phổ biến thứ 2, đứng sau apache2.

trong man của nginx còn nói rằng:
DESCRIPTION
       nginx  is  a  server  that  can  be used as standalone HTTP server and as a reverse proxy server before some Apache or another big server to reduce load to backend servers by many concurrent HTTP-sessions.

Nginx có cách xử lý khác với apache2, thay vì trực tiếp xử lý các server-side language (php, ruby, python, node.js...) bằng các module thì nginx chuyển phần xử lý ấy sang cho các chương trình khác và nhận về kết quả html rồi trả kết quả ấy cho client.

Ví dụ:
để xử lý các trang web python, ruby , go, ... có thể dùng uwsgi (là một app server)
để xử lý php, có thể dùng php-fpm (FastCGI)


apt-cache show uwsgi
apt-cache show php5-fpm
để xem thêm thông tin

Apache2 hay nginx hay lighttp?
nếu bạn thực sự muốn biết, hãy thử tất cả, hoặc tìm đọc trên google.
Còn đây là nhận xét cá nhân của tớ:
lighttp - chưa dùng
apache2 - dùng cho PHP5
nginx - dùng với uwsgi để phục vụ python app, Ruby on Rails apps , làm reverse proxy, phục vụ các file js, css, jpg, png...

Phần tìm hiểu cơ bản đã xong. Bạn có thể thử cài và mày mò thêm, bao giờ rảnh tớ sẽ viết bài về các config cơ bản cho từng server.