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 7 và phiê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:
- Một server Ubuntu 14.04
- User sudo không phải root (Kiểm tra Cài đặt server ban đầu với Ubuntu 14.04 để biết chi tiết.)
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-nginxnginx-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
, extras
và naxsi
. 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:
--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:
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:
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:
## # 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ờ:
... 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
:
# 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:
Outputnginx 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ó:
OutputX-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ó:
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.
Các tin liên quan
Cách thêm ngx_pagespeed vào Nginx trên Debian 82015-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