Hướng dẫn cài đặt Nginx và module mở rộng từ Source

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

cài đặt Nginx từ source và cách bật các module mở rộng

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

Chuẩn bị trước khi cài đặt Nginx

>>> 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

Hình ảnh thu được khi ta đã tải xuống Nginx-1.19.6 và nginx-module-vts

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

Hình ảnh các file bên trong 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

Hình ảnh thu được khi ta cài đặt thành công Nginx kết hợp với Nginx module VTS

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ả.

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

Hình ảnh file nhị phân của module nginx vts

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 ý

Lưu ý khi cài đặt và thêm module với Nginx

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.
Tác giả:
author avatar
Mình là Huy, hiện mình đang là kỹ sư hệ thống tại SunCloud. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn về mạng, hệ thống, điện toán mây và an ninh bảo mật. Mình đã triển khai và vận hành rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số chứng chỉ quốc tế như CCNP, LPI, VCP, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.

Tin tức nổi bật
Tin tức khác