Khi muốn cài đặt thêm module NGINX, kích hoạt HTTP2 bạn bắt buộc phải complie NGINX từ source code vì bản chúng ta thường cài qua lệnh yum sẽ không được tích hợp sẵn.

Ngoài ra, còn một tác dụng nữa không nhiều bạn biết đó là complie NGINX để test sức mạnh của CPU. Khi order VPS/Server, bạn chỉ nhìn thấy những thông số chung chung như 1 vCore CPU, 2 vCore CPU và thậm chí nhiều nhà cung cấp còn giấu không public xung nhịp của CPU, bao nhiêu GHz?

Thậm chí khi đã nắm được đầy đủ info bạn vẫn không thể biết được sức mạnh thực sự của nó như thế nào vì mỗi nhà cung cấp sẽ config VPS chỉ được sử dụng tối đa bao nhiêu % của 1 CPU vật lý mà thôi. Vì vậy, chúng ta chỉ có thể biết được chính xác khả năng tính toán của CPU bằng cách trực tiếp đo thời gian thực hiện những tác vụ nặng, ví dụ như compile NGINX mà mình sẽ giới thiệu dưới đây.

Mình sẽ hướng dẫn với bản Stable 1.12.x (mới nhất hiện nay là 1.12.2) mà HocVPS Script sử dụng. Khi có bản mới hơn các bạn chỉ cần thay version number vào là xong.

Trước khi bắt đầu, update hệ thống:

sudo yum check-update || sudo yum update -y

Compile NGINX từ source code

1. Cài đặt các thành phần bắt buộc

sudo yum install gcc-c++ perl pcre-devel zlib-devel epel-release -y

2. Tải NGINX và thư viện OpenSSL

cd /usr/local/src
wget http://nginx.org/download/nginx-1.14.0.tar.gz && tar -xzvf nginx-1.14.0.tar.gz
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz && tar -xzvf openssl-1.1.0h.tar.gz
rm -rf *.tar.gz

3. Cấu hình và Compile NGINX

cd nginx-1.12.2

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-openssl=/usr/local/src/openssl-1.1.0h

make

Chờ quá trình biên dịch xong, bạn sẽ có file NGINX ở đường dẫn objs/nginx

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

23 Comments

  1. Marshall 1 comment

    Tôi chỉ thích sử dụng Centos, với Nginx. Tôi thấy nó dễ dàng và mơ hồ hơn APACHE. Mỗi lần nginx đôi khi có các plugin không tốt cho hỗ trợ WordPress, bạn phải chỉnh sửa thủ công.

  2. Hải Nguyễn 1 comment

    Trước t chỉ cài ubuntu, sau vào canh me, rồi biết tới học VPS bây giờ chỉ thích xài thằng Cenos, với Nginx. Thấy đơn giản và đỡ nhì nhằng hơn là APACHE. Mỗi cái nhiều khi nginx thi thoảng có plugin viết cho WordPress hỗ trợ ko tốt thì lại phải mò chỉnh sửa bằng tay.

    Cho mình hỏi chút là mình Compile NGINX theo như thế này là có thể thay thế luôn cái nginx đang sử dụng đúng ko vậy? Mình đang muốn cài NGINX1.16.1 với opeen ssl 1.1.1 tới đoạn make song chưa biết nên làm gì nữa.

    1. Việt Phương Moderator

      Các module trên HocVPS là từ mặc định của Nginx và việc rebuild Nginx rất đơn giản nên mình nghĩ để đơn giản nhất cho người dùng

  3. MVNO 1 comment

    Cám ơn tác giả. Nhưng chắc không có nhiều bạn phải complie lắm nhỉ vì thấy đa số dân VN mình xài ubuntu.

    1. Việt Phương Moderator

      Compile này để test sức mạnh VPS thôi bạn, không phải compile để thêm thắt gì hay để rebuild

  4. Tinh Le 3 comment

    Mình make thị bị báo thế này và ko biên dịch được make: *** [build] Error 2, mình dùng vps trên a2hósting ạ

    1. Việt Phương Moderator

      Error 2 thì chung chung lắm. Bạn kiểm tra lại các yêu cầu và thực hiện lại nhé. Bao gồm yêu cầu về RAM tối thiểu trên 512 và các trình biên dịch. Bên cạnh đó, bài viết này hướng dẫn complie nginx để test hệ thống chứ không phải để cài đặt hay thêm package vào Nginx. Nên mục đích của bạn build lại Nginx kèm gì?

    1. Việt Phương Moderator

      Nginx sẽ tự nhận theo server_name nhé bạn, nên bạn trỏ bao nhiêu domain về 1 IP thì Nginx đều nhận và phản hồi theo cấu hình của bạn
      server_name A show root A
      server_name B show root B

        1. Việt Phương Moderator

          Ví dụ cơ bản nhất
          server {
          listen 80 ;
          server_name abc.net;
          root /home/abc.net/public_html;}

          server {
          listen 80 ;
          server_name xyz.net;
          root /home/xyz.net/public_html;}

      1. Luân Trần Admin

        Thang điểm thì mình nghĩ dựa vào một nhà cung cấp có tiếng, ví dụ Vultr để đánh giá so sánh là ổn