Hướng dẫn cách thêm ngx_pagespeed vào Nginx trên CentOS 7

6 năm trước

                                 

Giới thiệu

ngx_pagespeed, hay gọi tắt là pagespeed là một module Nginx được thiết kế để tối ưu hóa website của bạn một cách tự động thông qua việc giảm kích thước tài nguyên do đó khách hàng có thể truy cập      nhanh chóng hơn.

Phần này sẽ hướng dẫn bạn cách cài đặt và định cấu hình module pagespeed dành cho Nginx. Tuy nhiên Nginx không hỗ trợ tính năng Dynamic Loading of Modules có sẵn trên các web server khác như là Apache . Vì lí do Nginx không hỗ trợ các đặc tính này nên cần xây dựng Nginx từ Source để thêm modun vào.

Tuy nhiên có một bất lợi kèm theo là bạn phải tự update khi phiên bản mới ra đời , thế nên cần xem xét kỹ lưỡng những ưu nhược điểm trước khi cài đặt ngx_pagespeed.

 

Yêu cầu căn bản

Phần hướng dẫn này dùng cho hệ điều hành CentOS 7, Ubuntu phiên bản 14.04 và Debian phiên bản 8.

Để thực hiện bạn cần có những yêu cầu sau:

  • Một máy chủ CentOS 7 của ViCloud.
  • Một người dùng sudo giả định. 

Trường hợp ngoại lệ cần lưu ý là tất cả các command yêu cầu đặc quyền gốc sẽ được thực hiện bởi người dùng giả định với đặc quyền sudo.

 

Bước 1 - Download  Source và các công cụ liên quan

Trước khi bắt đầu cần đảm bảo rằng tất cả những phần mềm cần thiết cho việc biên dịch chương trình cũng như kiểm nghiệm của Nginx cần phải có. Chạy dòng lệnh sau:

sudo yum install wget curl unzip gcc-c++ pcre-devel zlib-devel 

Tiếp theo là tạo một folder mới trong danh mục home để download gói source cho Nginx:

mkdir ~/custom-nginx 

Thay đổi danh mục vừa tạo:

cd ~/custom-nginx 

Rồi tải gói source Nginx trong danh mục này. Hiện tại ta có thể tải phiên bản mới nhất là 1.8.0 với lệnh sau:

sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz 

Sau đó giải nén gói vừa tải với lệnh :

sudo tar zxvf nginx-1.8.0.tar.gz 

Để thông báo chúng ta thao tác trên cùng một trang thì hãy liệt kê mục ~/custom-nginx:

ls ~/custom-nginx 

Kết quả sẽ như thế này:

Output of ls ~/custom-nginx
nginx-1.8.0 nginx-1.8.0.tar.gz 

Như bạn có thể thấy phiên bản đang dùng là 1.8.0. Để thêm modun ngx_pagespeed , đầu tiên truy cập folder modules trong folder giải nén nginx-1.8.0:

cd nginx-1.8.0/src/http/modules/ 

Trong mục này thì tải source ngx_pagespeed mới nhất từ kho lưu trữ Github với lệnh:

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip 

Khi hoàn thành thì giải nén với tiện ích unzip :

sudo unzip master.zip 

Nó sẽ tạo một danh mục mới gọi là ngx_pagespeed-master bên trong danh mục ~/custom-nginx/nginx-1.8.0/src/http/modules/   . Để tiện hơn thì nên đổi tên danh mục thành   ngx_pagespeed với lệnh:

sudo mv ngx_pagespeed-master ngx_pagespeed 

Tới danh mục mới ngx_pagespeed :

cd ngx_pagespeed 

Từ đây, tải PageSpeed Optimization Libraries (psol)  - thư viên tối ưu hóa pagespeed - cần để soạn thảo chương trình:

sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz 

 Nếu đường link dẫn tới psol trong thời điểm bạn truy cập không hoạt động thì tạm thời bỏ qua. Nếu không có thư viện này trong quá trình soạn thảo chương trình ở bước tiếp theo thì sẽ gây ra lỗi nhưng sẽ có hướng dẫn để lấy được gói thư viện đó.

Cuối cùng là giải nén gói psol trong danh mục ~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed :

sudo tar -xzvf 1.9.32.6.tar.gz 
 

Bước 2 - Định cấu hình Source và biên dịch chương trình

Lúc này chúng ta sẽ định cấu hình Source Nginx bao gồm cả modun pagespeed. Đi tới danh mục mẹ ở source Nginx:

cd ~/custom-nginx/nginx-1.8.0/ 

Sau đó chạy cấu hình Source với dòng lệnh:

sudo ./configure --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid 

Phần cấu hình quan trọng nhất  là --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/. Nó thông báo rằng modun pagespeed là một phần của chương trình biên dịch Nginx. Và hãy thay từ your_user  thành tên người dùng của bạn.

Để tiện hơn chúng tôi đã tùy chỉnh một vài công cụ cài đặt như là vị trí file log cũng như người dùng/nhóm người dùng mà server tiện thực hiện.

Khi định cấu hình xong thì tiến hành soạn thảo với lệnh sau:

sudo make 

Mất chừng 10 phút tùy vào source droplet của bạn, sau đó bạn có thể cài đặt phần mềm với lệnh:

sudo make install 

Tìm Nginx custom của bạn trong danh mục /usr/local/nginx. Để tiện hơn nữa thì nên tạo 2 đường link tượng trưng , link đầu tiên là dành cho file cấu hình :

sudo ln -s /usr/local/nginx/conf/ /etc/nginx 

Lệnh này cho phép bạn tìm file cấu hình ở mục /etc/nginx/ .

Bạn cũng nên tạo một đường link tượng trưng cho binary chính trong danh mục /usr/sbin/ để tìm kiếm dễ hơn và cất chúng vào trong tập lệnh startup mà chúng ta sẽ cần sử dụng sau đó. Để thực hiện , sử dụng lệnh:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx 
 

Bước 3 - Tạo tập lệnh Startup

Quá trình cài đặt trước liên quan tới các nhiệm vụ căn bản như là cách tạo người dùng/ nhóm người dùng ảo mà Nginx sẽ làm việc. Tuy nhiên bạn sẽ phải tạo một tập lệnh Startup nhưng may mắn thay nginx trên CentOS 7 đã có sẵn rồi.

Đầu tiên tạo file mới trong thư mục /etc/init.d/:

sudo nano /etc/init.d/nginx 

Sau đó tới trang  https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/, để copy tập lệnh và gán vào file mới.

Cuối cùng là chạy tập lệnh  :

sudo chmod +x /etc/init.d/nginx 

Sau đó khởi động Nginx với lệnh :

sudo service nginx start 

Thêm runlevel mặc định với lệnh:

sudo chkconfig nginx on 
 

Bước 4 - Hữu hiệu hóa modun Pagespeed 

Giờ thì Nginx đã được cài đặt, bước tiếp theo là hữu hiệu hóa modun  ngx_pagespeed .

 Trước khi hữu hiệu hóa modun cần tạo một folder mới nơi lưu bộ đệm file cho website :

sudo mkdir -p /var/ngx_pagespeed_cache 

Cần thay đổi quyền sở hữu folder này thành người dùng Nginx để webserver có thể lưu file trong đó:

sudo chown -R nobody:nobody /var/ngx_pagespeed_cache 

Sau đó mở file cấu hình Nginx chính nginx.conf :

sudo nano /etc/nginx/nginx.conf 

Trong file này thì thêm những dòng dưới đây cho khối server và lưu thay đổi:

/etc/nginx/nginx.conf
##
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }location ~ "^/ngx_pagespeed_static/" { }location ~ "^/ngx_pagespeed_beacon" { }

Bạn có thể thêm ở bất kỳ khối nào không nhất thiết là phải ở khối server .

Và file /etc/nginx/nginx.conf sẽ trông thế này:

/etc/nginx/nginx.conf
...
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
### Pagespeed main settingspagespeed on;pagespeed FileCachePath /var/ngx_pagespeed_cache;# Ensure requests for pagespeed optimized resources go to the pagespeed# handler and no extraneous headers get set.location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }location ~ "^/ngx_pagespeed_static/" { }location ~ "^/ngx_pagespeed_beacon" { } location / {
root html;
index index.html index.htm;
}...

Hơn nữa bạn có thể thêm những dòng cấu hình pagespeed cho tất cả các khối server  mà bạn có.

Cuối cùng khởi tạo lại Nginx server để lưu thay đổi:

sudo service nginx restart 
 

Bước 5 - Kiểm tra cài đặt

Để kiểm tra liệu modun ngx_pagespeed đã cài đặt thành công chưa thì chạy lệnh Binary Nginx như thế này:

sudo /usr/sbin/nginx -V 

Nếu thành công bạn sẽ thấy modun ngx_pagespeed được liệt kê cùng các dòng lệnh:

Output
nginx version: nginx/1.8.0 ... configure arguments: --add-module=/home/your_user/custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ ... 

File bên trên hiện ra không có nghĩa là modun pagespeed đã có thể hoạt động trên website của bạn, để xác minh thì cần dùng lệnh curl- một công cụ, thư viện cho việc chuyển đổi URL bên phía khách hàng . Cùng check header X-Page-Speed :

curl -I -p http://localhost| grep X-Page-Speed 

Nếu thành công bạn sẽ thấy đầu ra hiển thị cùng với phiên bản của nó như sau:

Output
X-Page-Speed: 1.9.32.6-7321 

Nếu không thấy header thì bạn phải đảm bảo rằng bạn đã hữu hiệu hóa pagespeed theo như hướng dẫn ở bước bên trên.

 

Kết luận

Đó là cách tạo Nginx với một modun custom . Các bước này cũng được áp dụng cho bất kỳ modun nào không có sẵn trên nginx. Hơn nữa, cả quá trình cài đặt một gói từ source cũng tương tự như các gói phần mềm khác mà bạn cần  tùy chỉnh. Nhưng đừng quên rằng bạn cần phải bảo trì cũng như cài đặt lại các gói đó khi có phiên bản mới ra đời.