Thứ ba, 22/09/2015 | 00:00 GMT+7

Cách thêm ngx_pagespeed vào Nginx trên Ubuntu 14.04

ngx_pagespeed, hay chỉ là tốc độ trang, là một module Nginx được thiết kế để tự động tối ưu hóa trang web bằng cách giảm kích thước tài nguyên của nó và do đó mất thời gian trình duyệt của khách hàng cần tải nó. Nếu bạn chưa quen với nó, vui lòng kiểm tra trang web chính thức của nó.

Bài viết này sẽ hướng dẫn bạn cài đặt và cấu hình module tốc độ trang cho Nginx. Điều quan trọng cần biết là Nginx không hỗ trợ Tải động các module có sẵn trong các web server khác như Apache. Vì Nginx không hỗ trợ tính năng này, bạn cần tạo Nginx từ nguồn để thêm module .

Có một gói tùy chỉnh của bạn đi kèm với một bất lợi - bạn hoàn toàn chịu trách nhiệm cập nhật nó khi có version mới. Hãy tính đến điều này khi cân nhắc ưu và nhược điểm của việc sử dụng ngx_pagespeed.

Yêu cầu

Hướng dẫn này đã được viết cho Ubuntu 14.04. Phiên bản CentOS 7phiên bản Debian 8 cũng có sẵn.

Trước khi làm theo hướng dẫn này, hãy đảm bảo bạn hoàn thành các yêu cầu sau:

Trừ khi có lưu ý khác, tất cả các lệnh yêu cầu quyền root trong hướng dẫn này phải được chạy với quyền user không phải root có quyền sudo.

Bước 1 - Download nguồn và các phụ thuộc của nó

Trước bất kỳ điều gì khác, ta phải đảm bảo danh sách các gói có sẵn qua apt-get đã được cập nhật:

  • sudo apt-get update

Tiếp theo, ta phải đáp ứng tất cả các phụ thuộc cần thiết để chạy Nginx. Vì mục đích này, hãy chạy lệnh:

  • sudo apt-get build-dep nginx

Sau đó, tạo một folder trong folder chính của bạn để download gói nguồn cho Nginx:

  • mkdir ~/custom-nginx

Thay đổi folder mới tạo này:

  • cd ~/custom-nginx

Sau đó, download gói nguồn Nginx trong folder này bằng lệnh:

  • sudo apt-get source nginx

Để xác nhận ta đang ở trên cùng một trang, hãy liệt kê nội dung của folder ~/custom-nginx :

  • ls ~/custom-nginx

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

Output of ls ~/custom-nginx
nginx-1.4.6 nginx_1.4.6-1ubuntu3.3.debian.tar.gz nginx_1.4.6-1ubuntu3.3.dsc nginx_1.4.6.orig.tar.gz

Như bạn thấy , version của gói nguồn Nginx là 1.4.6 tại thời điểm viết hướng dẫn này. Để bắt đầu thêm module ngx_pagespeed, trước tiên bạn cần đi đến folder modules trong folder giải nginx-1.4.6 :

  • cd nginx-1.4.6/debian/modules

Trong folder này, download repository nguồn ngx_pagespeed mới nhất từ kho lưu trữ Github của nó bằng lệnh:

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

Sau khi quá trình download hoàn tất, bạn cần tiện ích unzip để extract nó. Nếu bạn chưa có unzip , hãy cài đặt nó bằng lệnh:

  • sudo apt-get install unzip

Sau đó extract file đã download bằng lệnh:

  • sudo unzip master.zip

Thao tác này sẽ tạo một folder mới có tên ngx_pagespeed-master bên trong folder ~/nginx-1.4.6/debian/modules . Để thuận tiện, hãy đổi tên folder này thành ngx_pagespeed bằng lệnh:

  • sudo mv ngx_pagespeed-master ngx_pagespeed

ngx_pagespeed bên trong folder ngx_pagespeed mới:

  • cd ngx_pagespeed

Từ đó, download Thư viện tối ưu hóa tốc độ trang (psol) cần thiết cho việc biên dịch:

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

Nếu liên kết đến repository psol không hoạt động tại thời điểm bạn đang đọc bài viết này, chỉ cần bỏ qua bước này. Nếu bạn thiếu các thư viện trong quá trình biên dịch ở các bước tiếp theo, bạn sẽ thấy lỗi với các hướng dẫn cập nhật về cách lấy gói sau này.

Cuối cùng, extract gói psol bên trong folder ~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed :

  • sudo tar -xzvf 1.9.32.6.tar.gz

Bước 2 - Tùy chỉnh nguồn

Đến đây, bạn đã sẵn sàng tùy chỉnh các luật biên dịch và bao gồm ngx_pagespeed trong cài đặt. Vì mục đích này, hãy chỉnh sửa file ~/custom-nginx/nginx-1.4.6/debian/rules bằng editor yêu thích của bạn:

  • sudo nano ~/custom-nginx/nginx-1.4.6/debian/rules

Ở đó bạn có năm kịch bản khác nhau để xây dựng các gói của Nginx: core , full , light , extrasnaxsi . Như tên gọi của chúng cho thấy, common chứa các file Nginx phổ biến mà không có server , full bao gồm một server với các module phổ biến nhất, light tạo một server chỉ có các module cần thiết, phần extras dành cho một server có thêm một số module lạ mắt trong đó, và naxsi có thêm module naxsi (tường lửa ứng dụng web).

Giả sử rằng bạn cần cài đặt Nginx light cộng với ngx_pagespeed. Do đó, ở cuối đoạn cấu hình light_configure_flags thêm dòng:

~ / custom-nginx / nginx-1.4.6 / debian / rules
--add-module=$(MODULESDIR)/ngx_pagespeed \ 

Xin đừng quên thêm dấu gạch chéo ngược ( \ ) ở cuối hàng. Toàn bộ đoạn cấu hình sẽ giống như sau:

~ / custom-nginx / nginx-1.4.6 / debian / rules
config.status.light: config.env.light         cd $(BUILDDIR_light) && ./configure  \             $(common_configure_flags) \             --with-http_gzip_static_module \             --without-http_browser_module \             --without-http_geo_module \             --without-http_limit_req_module \             --without-http_limit_zone_module \             --without-http_memcached_module \             --without-http_referer_module \             --without-http_scgi_module \             --without-http_split_clients_module \             --without-http_ssi_module \             --without-http_userid_module \             --without-http_uwsgi_module \             --add-module=$(MODULESDIR)/nginx-echo \             --add-module=$(MODULESDIR)/ngx_pagespeed \             >$@         touch $@ 

Bạn cũng có thể thêm dòng tương tự vào các kịch bản xây dựng khác nếu bạn thấy cài đặt Nginx khác thuận tiện hơn.

Tiếp theo, tăng version gói nguồn, vì điều này sẽ giúp bạn ghim gói sau này. Để làm điều này, hãy mở file changelog bằng editor văn bản:

  • sudo nano ~/custom-nginx/nginx-1.4.6/debian/changelog

Dòng đầu tiên của file changelog biểu thị version gói hiện tại ( 1.4.6-1ubuntu3.3 ) và tên mã Ubuntu ( trusty ). Thêm thẻ tùy chỉnh, chẳng hạn như pagespeed độ trang ở cuối số version trước dấu gạch ngang như sau:

changelog
nginx (1.4.6-1ubuntu3.3-pagespeed) trusty-proposed; urgency=medium  

Bước 3 - Xây dựng và cài đặt Nginx với Pagespeed Module

Đến đây bạn đã tùy chỉnh bản dựng để bao gồm module ngx_pagespeed, bạn đã sẵn sàng để xây dựng Nginx.

Chuyển đến folder ~/custom-nginx/nginx-1.4.6/ bằng lệnh:

  • cd ~/custom-nginx/nginx-1.4.6/

Từ đây, hãy chạy lệnh để tạo các gói binary Nginx tùy chỉnh mới:

  • sudo dpkg-buildpackage -b

Quá trình xây dựng mất tối đa khoảng 10 phút. Nếu bạn lo lắng rằng mình có thể bị ngắt kết nối trong thời gian này, bạn có thể thử sử dụng screen như được mô tả trong bài viết này .

Nếu bạn đã làm theo tất cả các hướng dẫn, quá trình xây dựng sẽ hoàn tất mà không có bất kỳ lỗi nào. Để tìm các gói Nginx tùy chỉnh mới, hãy vào một folder lên đến ~/custom-nginx/ bằng lệnh:

  • cd ~/custom-nginx/

Liệt kê nội dung của folder ~/custom-nginx/ :

  • ls ~/custom-nginx/

Bạn sẽ tìm thấy rất nhiều .deb . Những cái bạn cần được gọi là nginx-common_1.4.6-1ubuntu3.3-pagespeed_all.deb (chứa các file Nginx phổ biến) và nginx-light_1.4.6-1ubuntu3.3-pagespeed_amd64.deb (chứa server ánh sáng tùy chỉnh của bạn). Phần pagespeed có thể thay đổi nếu bạn đã chỉ định một thẻ tùy chỉnh khác trong file changelog .

Để cài đặt Nginx tùy chỉnh của bạn với module tốc độ trang, hãy chạy lệnh:

  • sudo dpkg -i nginx-common_1.4.6-1ubuntu3.3-pagespeed_all.deb nginx-light_1.4.6-1ubuntu3.3-pagespeed_amd64.deb

Bước 4 - Kích hoạt module tốc độ trang

Đến đây bạn đã cài đặt Nginx. Bước tiếp theo là bật module ngx_pagespeed.

Trước khi bật module , bạn phải tạo một folder , nơi nó sẽ lưu vào cache các file cho trang web :

  • sudo mkdir -p /var/ngx_pagespeed_cache

Đảm bảo thay đổi quyền sở hữu của folder này thành user Nginx để web server có thể lưu trữ các file trong đó:

  • sudo chown -R www-data:www-data /var/ngx_pagespeed_cache

Sau đó, mở file cấu hình Nginx chính nginx.conf trong editor yêu thích của bạn như sau:

  • sudo nano /etc/nginx/nginx.conf

Trong file này, thêm các dòng sau vào khối http và lưu các thay đổi:

/etc/nginx/nginx.conf
## # Pagespeed Settings ##  pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; 

Bạn có thể thêm những dòng này vào bất kỳ đâu trong khối http , nhưng trong ví dụ của ta , ta đang thêm nó vào cuối khối.

Đây là giao diện của file /etc/nginx/nginx.conf bây giờ:

/etc/nginx/nginx.conf
... http {          ##         # Basic Settings         ##          sendfile on;         tcp_nopush on;         tcp_nodelay on;         keepalive_timeout 65;         types_hash_max_size 2048;         # server_tokens off;          # server_names_hash_bucket_size 64;         # server_name_in_redirect off;          ##         # Pagespeed Settings         ##          pagespeed on;         pagespeed FileCachePath /var/ngx_pagespeed_cache; ... 

Ngoài ra, bạn cần thêm các dòng cấu hình tốc độ trang vào mọi file khối server nằm trong /etc/nginx/sites-available . Ví dụ: chỉnh sửa file /etc/nginx/sites-available/default :

  • sudo nano /etc/nginx/sites-available/default

Thêm phần sau vào cuối khối server :

/ etc / nginx / sites-available
#  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" { } 

Các dòng cấu hình tốc độ trang ở trên đảm bảo tốc độ trang sẽ tối ưu hóa mọi tài nguyên của trang web.

Cuối cùng, khởi động lại server Nginx để các thay đổi có hiệu lực:

  • sudo service nginx restart

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

Để kiểm tra xem module ngx_pagespeed đã được cài đặt thành công hay chưa, hãy chạy file binary Nginx như sau:

  • sudo /usr/sbin/nginx -V

Nếu cài đặt thành công, bạn sẽ thấy module ngx_pagespeed được liệt kê trong số các module khác:

Output
nginx version: nginx/1.4.6 ... --add-module=/home/your_user/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed

Những điều trên không nghĩa là tốc độ trang được bật và hoạt động cho trang web . Để xác nhận điều này, bạn có thể sử dụng curl , một công cụ và thư viện để chuyển URL phía client . Nếu bạn chưa cài đặt curl , hãy cài đặt nó bằng lệnh:

  • sudo apt-get install curl

Sau đó, hãy kiểm tra tiêu đề X-Page-Speed như sau:

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

Nếu module ngx_pagespeed hoạt động tốt, bạn sẽ thấy nó trong kết quả cùng với version của nó:

Output
X-Page-Speed: 1.9.32.6-7321

Nếu bạn không thấy tiêu đề này, hãy đảm bảo bạn đã bật tốc độ trang theo hướng dẫn ở bước trước.

Bước 6 - Ghim gói Nginx tùy chỉnh của bạn

Để ngăn chặn Nginx gói tùy chỉnh của bạn không bị thay thế trong tương lai bằng apt với một thông cáo gần đây của Nginx, bạn nên ghim (giữ) gói của bạn không bị nâng cấp theo các bước sau:

Tạo file nginx mới trong /etc/apt/preferences.d :

  • sudo nano /etc/apt/preferences.d/nginx

Sau đó, dán các dòng sau vào đó và lưu nó:

/etc/apt/preferences.d/nginx
Package: nginx-light Pin: version 1.4.6-1ubuntu3.3-pagespeed Pin-Priority: 1001 

Hãy đảm bảo chỉ định gói Nginx mà bạn đã quyết định sử dụng. Trong ví dụ của ta , đó là nginx-light . Ngoài ra, chỉ định version chính xác cùng với thẻ tùy chỉnh của bạn như 1.4.6-1ubuntu3.3-pagespeed .

Kết luận

Đó là cách bạn có thể xây dựng Nginx với module tùy chỉnh, tốc độ trang. Các bước này có hiệu lực đối với bất kỳ module nào khác chưa có sẵn trong Nginx. Hơn nữa, toàn bộ quá trình cài đặt một gói từ nguồn cũng tương tự đối với các gói phần mềm khác mà bạn có thể cần tùy chỉnh. Chỉ cần đừng quên rằng bạn sẽ phải tự mình bảo trì và cài đặt lại các gói này khi có version mới.


Tags:

Các tin liên quan

Cách thêm ngx_pagespeed vào Nginx trên Debian 8
2015-09-20
Cách bảo vệ server Nginx với Fail2Ban trên Ubuntu 14.04
2015-08-14
Cách cài đặt HHVM với Nginx trên Ubuntu 14.04
2015-08-12
Cách thiết lập xác thực mật khẩu với Nginx trên Ubuntu 14.04
2015-08-10
Cách cài đặt Nginx trên Debian 8
2015-07-09
Cách lưu trữ nhiều trang web một cách an toàn với Nginx và Php-fpm trên Ubuntu 14.04
2015-07-01
Cách tạo blog bằng Ghost và Nginx trên Ubuntu 14.04
2015-06-28
Cách tạo chứng chỉ ECC trên Nginx cho Debian 8
2015-06-23
Cách nâng cấp Nginx tại chỗ mà không làm rớt kết nối client
2015-06-15
Cách cấu hình Nginx để sử dụng các trang lỗi tùy chỉnh trên Ubuntu 14.04
2015-06-05