Sau một loạt bài viết cấu hình LAMP trên VPS, hôm nay mình tiếp tục giới thiệu đến các bạn loạt bài về LEMP Server. LEMP là chữ viết tắt của Linux, Engine X(Nginx), MariaDB, PHP(PHP-FPM). Mà linh hồn của nó chính là NGINX một Web Server được phát triển từ năm 2002, so với Apache ra đời từ những năm 1994 thì nó là cả một chặng đường dài.
Quả thực Nginx khác biệt rất nhiều: Nginx được viết hoàn toàn bằng ngôn ngữ C, Nginx phân biệt nội dung tĩnh và nội dung động xử lý các request tĩnh và chuyển các request động về Backend Server làm việc, giảm tiêu tốn tài nguyên xử lý request bằng việc dùng Socket thay cho Thread, các module được thêm vào trong quá trình biên dịch Nginx… đây chỉ là một trong những cái mới làm cho Nginx chạy nhanh hơn Apache, giúp tăng tốc Web Server.
Những năm gần đây Nginx ngày càng được nhắc đến nhiều hơn, xu thế kết hợp Nginx và Apache làm reverse proxy cũng dần đạt đỉnh, nhiều Web Master đã chuyển hẳn sang Nginx, cụ thể ra sao giờ mình cùng tìm hiểu về LEMP Stack thôi.
1. Các bước chuẩn bị cài NGINX
Bước 1: Trỏ domain về VPS, bạn có thể đăng ký domain trên godaddy nếu chưa có, trong loạt bài hướng dẫn LEMP Server cơ bản mình sẽ dùng domain demo1.thuysys.com, các bạn dùng IP Public của VPS cũng được nhé.
Bược 2: kiểm tra file hosts và hostname, cho phù hợp với domain dùng để test.
Bước 3: đọc bài, các bước cấu hình server mới.
Bước 4: Mặc định Web Server trên CentOS là Apache(httpd), bạn kiểm tra nếu đang được kích hoạt thì stop service lại hoặc xóa đi để tránh xung đột port 80 theo các bước bên dưới.
systemctl stop httpd.service yum remove httpd systemctl disable httpd.service
Cài NGINX trên CentOS 7 câu lệnh có khác một chút nhưng bạn vẫn có thể dùng lệnh như trên Linux CentOS 5/6 nó sẽ tự động forward sang các lệnh tương ứng trên CentOS 7.
2. Cài đặt NGINX 1.9.12 trên máy chủ CentOS
Đây là bản nginx mới nhất tính đến thời điểm hiện tại đặc biệt hỗ trợ giao thức HTTP/2 mới được công bố gần đây. Ok mình sẽ bắt đầu với việc thêm các package cần thiết vào server, tạo file repo để tải gói cài đặt vi /etc/yum.repo.d/nginx.repo
thêm đoạn mã bên dưới vào file repo.
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
Vì các gói cài nginx không có sẵn trong kho mặc định, bạn phải add thêm repo của nginx vào hệ thống, kiểm tra lại phiên bản nginx sau khi thêm repo yum info nginx
.
Tiếp theo gõ lệnh cài NGINX.
yum install nginx
Chạy vèo cái xong, tiếp theo đến bước cấu hình nginx.
3. Tìm hiểu cấu hình NGINX cơ bản
Mặc định file cấu hình nginx có đường dẫn /etc/nginx/nginx.conf
, khi mới config nginx mình thấy nó rất hỗn độn và khó tiếp cận. Sau một thời gian tìm hiểu nginx mình lại thích làm việc với cấu trúc mới của này, rất khoa học và linh hoạt.
Nginx quản lý cấu hình theo Directive và Block mình gọi nôm na là chỉ thị và các khối chúng có thể nằm lồng ghép vào với nhau. Những directive không thuộc block nào mình nhóm lại gọi là Main Block những setting trên directive này ảnh hưởng đến toàn server.
Nếu một directive nằm trong block nào đó thì nó có ý nghĩa trong block đó và các block con bên trong, khi directive được định nghĩa lại trong block con thì nó chỉ có tác dụng trong block con đó.
Trên đây là những quy tắc quan trọng khi cấu hình nginx bạn cần nắm được, giờ chúng ta đi vào chi tiết nhé.
3.1 Main Block
Các chỉ thị chính trong block này.
User nginx: chỉ thị này quy định worker processes bên dưới được chạy với tài khoản nginx.
worker_processes: cấu hình chỉ ra rằng web server được xử lý chỉ bằng 1 CPU Core(Processor), giá trị này tương ứng với số CPU Core có trên máy chủ. Để kiểm tra số lượng CPU Core trên VPS hay máy chủ riêng bạn dùng nproc
, muốn chi tiết hơn dùng lệnh cat /proc/cpuinfo
.
error_log: đường dẫn đến file log lỗi của nginx server.
pid: số PID của master process, nginx dùng master process để quản lý worker process
3.2 Events Block
Mặc định nó có duy nhất một chỉ thị.
worker_connections: giá trị của nó liên quan đến worker processes, 1024 nghĩa là mỗi worker process sẽ chịu tải là 1024 kết nối cùng lúc. Nếu bạn có 2 worker process thì khả năng chịu tại của server sẽ là 2048 kết nối tại một thời điểm. Giá trị này bạn thay đổi tùy thuộc vào hardware của máy chủ không cứ phải 1024/worker process đâu nhé.
3.3 Http Block
Đây là block chúng ta làm việc nhiều nhất, có 3 loại block nằm bên trong là http, server, location. Như đã nói bên trên, trong block http có thể có các block http khác, trong bài này mình sẽ tập trung nói về block http trong file nginx.conf
còn block serrver và location mình sẽ nói rõ hơn trong phần 2 khi cấu hình virtualhost tạo các website mới.
include: directive này gọi tới file mime.types
chứa danh sách các file extensions trong /etc/nginx
, giá trị mặc định là application/octet-stream
;
log_format: đinh nghĩa một mẫu log có tên là main được sử dụng bởi access_log, các thông tin được ghi vào file log tương ứng với giá trị các biến $remote_addr, $remote_user, $time_local, $request …
access_log: chỉ là đường dẫn đến file log /var/log/nginx/access.log với template main được định nghĩa ở trên.
sendfile: chỉ thị này gọi đến function sendfile để xử lý việc truyền file, đọc docs trên nginx.org mình cũng chưa hiểu rõ directive này, giá trị mặc định trên nginx 1.9.12 là on
.
Keepalive_timeout: xác định thời gian server chờ trước khi đóng một kết nối, giá trị mặc định là 65 giây
.
Cuối cùng là một chỉ thị include khác rất quan trọng để gọi các file cấu hình nằm trong /etc/nginx/conf.d/
, đây là nhóm file cấu hình Virtualhost cho Web Server.
Xong, như vậy mình đã lược qua về cấu hình nginx, tiếp theo là cho phép dịch vụ nginx khởi động cùng hệ thống.
systemctl enable nginx.service
Chạy lênh Start Web Server
systemctl start nginx.service
Giờ các bạn chỉ việc mờ trình duyệt lên nhập vào demo1.thuysys.com kết quả như hình bên dưới là cài đặt nginx thành công.
4. Tổng kết
Trên đấy là các kiến thức cơ bản về nginx và các thông số cấu hình mặc định, các thông số này hơi nặng về kỹ thuật một chút mình cố gắng trình bày một cách đơn giản nhất hy vọng các bạn không bị rối. Nếu muốn quản trị Web Server Nginx các bạn cần phải hiểu cấu trúc của nó.
Bài tới mình sẽ hướng dẫn các bạn tạo Virtual host trên nginx mong nhận được sự góp ý của các bạn.
File /etc/yum.repo.d/nginx.repo tren file cua e ko cho chinh sua, file hiện vẫn trống ko có thông tin gì bên trong a ạ.
Em có login bằng user root không
Bác hướng dẫn cho chi tiết chút, hix.
Em cài nginx xong ko chạy được. mày mò mãi mới biết là chưa config firewall.
Bạn chưa đọc kỹ bài rồi, ở “Các bước chuẩn bị cài NGINX” mình có đưa link bài viết hướng dẫn disable selinux và firewall cho server mới rồi mà.
Bạn đã làm được chưa ?
cài trên nginx 1.9 trên centos 5 được có được không bạn
bạn cứ add repo như hướng dẫn trên là được, nó sẽ biết bạn dùng centos mấy rồi tải gói cài đặt phù hợp về cho bạn.