Hướng dẫn chi tiết về cách cài đặt Nginx từ source và đồng thời cài đặt các Module mở rộng phổ biến để nâng cao chức năng và độ bảo mật của máy chủ web.
Nginx là một trong những máy chủ web phổ biến nhất trên thế giới, được biết đến với khả năng xử lý, tính ổn định và khả năng tùy biến cao. Nginx có thể được cài đặt từ source hoặc từ các gói nhị phân. Bài viết này sẽ hướng dẫn bạn cách cài đặt Nginx từ source và cách bật các module mở rộng phổ biến nhất.
1. Giới Thiệu
Theo mặc định thì trên Linux sẽ có 2 cách cài đặt Nginx.
- Một là ta có thể sử dụng yum hoặc apt để download các package nginx để nó tự tiến hành cài đặt.
- Hai là ta có thể trực tiếp download Nginx từ mã nguồn trên trang chủ chính thức của Nginx.
Hai cách cài đặt này đều có ưu và nhược điểm riêng.
- Cài đặt từ yum và apt sẽ dễ dàng, chỉ cần 1 thao tác là xong. Nhưng nó có 1 nhược điểm là rất khó cài đặt module mở rộng từ bên thứ 3.
- Cài đặt từ Source thì đòi hỏi chúng ta phải có 1 sự hiểu biết về Nginx. Nhưng khi ta đã có sự hiểu biết về Nginx thì cách này lại tạo ra sự vượt trội khi có khả năng mở rộng các module rất tốt.
>>> Xem thêm: Nginx là gì? Hướng dẫn cài đặt và cấu hình Nginx chi tiết nhất
2. Chuẩn bị trước khi cài đặt
Để có thể cài đặt Nginx từ Source thì bắt buộc phải có các thư viện hỗ trợ và cài đặt phụ thuộc để ta có thể biên dịch và chạy chương trình.
Các yếu tố hỗ trợ khi cài:
- PCRE: bắt buộc
- ZLIB: bắt buộc
- OpenSSL: bắt buộc
- Development libraries: bắt buộc
- Các tùy chọn khác
Dưới đây là các bước cài đặt.
Cập nhật hệ thống:
yum check-update || yum update -y |
Cài đặt Development libraries
yum groupinstall 'Development Tools' -y hoặc yum groupinstall "Development Tools" -y |
Cài đặt các gói hỗ trợ trong quá trình biên dịch.
yum install zlib-devel pcre-devel openssl-devel -y |
Cài đặt kho Epel repository cho hệ thống.
yum install epel-release -y |
Cài các yêu cầu tùy chọn để Nginx có thể chạy trên hệ thống.
yum install perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel libmaxminddb libmaxminddb-devel -y |
>>> Xem thêm: Giải Thích Chi Tiết Về Các File Cấu Hình Trong Nginx
3. Hướng dẫn cài Nginx từ Source
Sau khi cài đặt các gói phụ thuộc thì bây giờ ta sẽ tiến hành download Nginx từ Source về và tiến hành biên dịch rồi cài đặt.
Có một lưu ý rằng do mình muốn cài đặt Module Nginx VTS nên mình phải chọn bản Nginx phù hợp để cài đặt Module này. Các bạn có thể tham khảo các phiên bản phù hợp ở đây.
Phiên bản mình chọn là nginx 1.19.6
Ta sẽ di chuyển đến 1 thư mục bất kỳ để có thể thống nhất đường dẫn khi hướng dẫn các bạn. Ở đây mình chọn /usr/src.
cd /usr/src |
Tiến hành download Nginx từ Source.
wget https://nginx.org/download/nginx-1.19.6.tar.gz |
Ta sẽ đợi mấy giây để nó tải xuống sau đó tiến hành giải nén file.
tar -xvf nginx-1.19.6.tar.gz |
Bài viết này sẽ hướng dẫn các bạn về cách cài đặt Nginx từ Source và thêm module trong quá trình cài đặt nên khi tải xuống module Nginx VTS mình sẽ hướng dẫn các bạn biên dịch và chạy chương trình.
4. Cài Đặt Module Nginx VTS (Virtual host traffic status)
Do đây là module mở rộng từ bên thứ 3 và được người phát triển public trên git nên để có thể sử dụng module này ta cần download công cụ git về máy.
yum install -y git |
Tải xuống module nginx-vts
git clone https://github.com/vozlt/nginx-module-vts.git |
Bây giờ ta sẽ di chuyển vào file nginx-1.19.6 để tiến hành biên dịch và cài đặt.
cd nginx-1.19.6 |
Nhìn lên hình ảnh trên các bạn hãy lưu ý rằng chỉ có file configure là có màu khác. Nó mang ý nghĩa rằng file này có quyền thực thi và ta cần thực thi file này để có tiến hành chỉnh sửa cấu hình trước khi cài đặt Nginx. Ta tiến hành chạy lệnh sau:
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-compat --add-dynamic-module=/usr/src/nginx-module-vts |
Trong đó:
- prefix chính là địa chỉ chứa các cấu hình của nginx
- sbin-path: chính là đường dẫn chứa các file nhị phân của Nginx
- error-log-path : đường dẫn chứa nhật ký lỗi
- pid-path: Đường dẫn chứa PID (Process ID) của Nginx
- Khai báo User và Group là nginx
- with-compat --add-dynamic-module: chỉ ra đường dẫn chứa module từ bên thứ 3 mà ta tiến hành thêm vào trong quá trình biên dịch
Ta tiến hành biên dịch chương trình
make |
Ta tiến hành cài cài đặt
make install |
Bây giờ ta sẽ di chuyển đến file chứa cấu hình của Nginx và kiểm tra kết quả.
cd /etc/nginx tree |
Tạo user nginx và không cho phép đăng nhập.
adduser --system --no-create-home --shell /sbin/nologin nginx |
Do ta tự tiến hành biên dịch và cài đặt Nginx nên không thể sử dụng systemctl để có thể điều hành các tiến trình của Nginx. Để làm được điều đó ta cần thêm vào file chứa nội dung cấu hình.
vi /usr/lib/systemd/system/nginx.service |
Thêm vào nội dung sau:
[Unit] Description=nginx - high performance web server Documentation=https://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/conf/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/conf/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target |
Tiến hành reload lại demon và khởi chạy Nginx.
systemctl daemon-reload systemctl start nginx systemctl enable nginx |
Bây giờ bạn sẽ lên trình duyệt gõ IP và kiểm tra kết quả.
Đến đây là bạn đã cài thành công Nginx và thêm cả module Nginx-VTS rồi nhưng để tiến hành sử dụng module này thì cần phải khai báo và cấu hình riêng. Mình sẽ hướng dẫn bạn cấu hình trong bài viết sau.
5. Hướng dẫn cài đặt Module Nginx VTS khi đã có Nginx từ trước
Phía trên mình đã hướng dẫn các bạn cài đặt Nginx và thêm module cùng 1 lúc nhưng có 1 câu hỏi đặt ra bạn đã cài đặt Nginx từ trước và đã cấu hình các Virtual Host để sử dụng. Chẳng lẽ cần phải xóa hết Nginx đi và tiến hành cài đặt lại sao?
Câu trả lời ở đây là không. Mình sẽ hướng dẫn các bạn cách thêm Module từ bên thứ 3 mà không cần xóa.
Để là được điều đó ta cần lách luật là lấy được file nhị phân của module đó và tiến hành áp dụng vào cấu hình của Nginx.
Dưới đây là các bước chi tiết:
Tiến hành tắt dịch vụ Nginx và kiểm tra phiên bản Nginx.
[root@ns1 ~]# systemctl stop nginx [root@ns1 ~]# nginx -v nginx version: nginx/1.25.3 [root@ns1 ~]# |
Mình kiểm tra thấy rằng mình đang sử dụng Nginx-1.25.3 . Bây giờ bạn sẽ tiến hành download nginx 1.25.3 từ source xuống. Hãy nhớ rằng các thư viện hỗ trợ để biên dịch là cần có nhé.
cd /usr/src wget https://nginx.org/download/nginx-1.25.3.tar.gz tar -xvf nginx-1.25.3.tar.gz |
Tương tự ở trên ta tiến hành download module nginx-vts xuống.
git clone https://github.com/vozlt/nginx-module-vts.git |
Bây giờ ta di chuyển vào file nginx-1.25.3 và tiến hành biên dịch.
cd nginx-1.25.3 ./configure --with-compat --add-dynamic-module=/usr/src/nginx-module-vts |
Tiến hành biến dịch.
make |
Sau khi biên dịch xong ta sẽ thu được file nhị phân của module nginx-vts. Việc của ta cần làm tiến hành copy file nhị phân đó vào file cấu hình của nginx.
cp objs/ngx_http_vhost_traffic_status_module.so /etc/nginx/modules |
Bây giờ ta tiến hành reload và bật lại nginx.
nginx -t nginx -s reload nginx -s start |
Bây giờ ta đã có thể sử dụng được module nginx-vts rồi nhưng mà cần khai báo để sử dụng nhé.
6. Một số lưu ý
Khi các bạn đọc đến đây là các bạn đã có thể hoàn thành việc cài đặt và thêm module với Nginx. Nhưng có một số điểm bạn cần lưu ý:
- Các bạn có thể thay thế phiên bản Nginx mà bạn muốn download theo ý của bạn bằng cách thay đổi tên nginx chứ cú pháp vẫn giữ nguyên.
- Các bạn cần thật sự lưu ý xem module bạn cần sử dụng hỗ trợ những phiên bản nào. Vì nếu không tương thích bạn sẽ không thể sử dụng module ấy.
- Nếu các bạn đã có nginx từ trước và chỉ muốn download thêm module để sử dụng thì vẫn cần phải làm các bước chuẩn bị để download nginx từ source sau đó mới tiến hành biên dịch để lấy file nhị phân của module đó về và tiến hành cài đặt thêm vào.