Thứ tư, 30/09/2015 | 00:00 GMT+7

Cách thêm ngx_pagespeed vào Nginx trên CentOS 7

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 CentOS 7. Phiên bản Ubuntu 14.04phiê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ó

Hãy bắt đầu với việc đảm bảo ta có tất cả phần mềm cần thiết để biên dịch và thử nghiệm Nginx. Vui lòng chạy lệnh:

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

Tiếp theo, 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 từ trang web chính thức của nó . Hiện tại, version mới nhất là 1.8.0 và có thể download bằng lệnh:

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

Sau đó extract gói mới download bằng lệnh:

  • sudo tar zxvf nginx-1.8.0.tar.gz

Để 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.8.0 nginx-1.8.0.tar.gz

Như bạn thấy , version của gói nguồn Nginx là 1.8.0 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.8.0 :

  • cd nginx-1.8.0/src/http/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

Khi quá trình download hoàn tất, hãy extract nó bằng tiện ích unzip như sau:

  • 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 ~/custom-nginx/nginx-1.8.0/src/http/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 - Cấu hình nguồn và biên dịch nó

Đến đây, bạn đã sẵn sàng để cấu hình nguồn Nginx và bao gồm module tốc độ trang. Đi tới folder mẹ của nguồn Nginx:

  • cd ~/custom-nginx/nginx-1.8.0/

Ở đó chạy cấu hình nguồn bằ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

Tùy chọn cấu hình quan trọng nhất ở trên là --add-module=/home/ your_user /custom-nginx/nginx-1.8.0/src/http/modules/ngx_pagespeed/ . Nó đảm bảo module tốc độ trang sẽ là một phần của quá trình biên dịch Nginx. Hãy đảm bảo thay thế your_user bằng user của bạn trong đường dẫn này.

Để thuận tiện, ta đã tùy chỉnh một số cài đặt khác như vị trí của file log và user / group mà server sẽ chạy. Để biết thêm thông tin về những gì có thể được tùy chỉnh, vui lòng kiểm tra tài liệu để biết các tùy chọn thời gian biên dịch .

Khi cấu hình hoàn tất, hãy bắt đầu quá trình biên dịch bằng lệnh:

  • sudo make

Quá trình này sẽ mất đến mười phút tùy thuộc vào tài nguyên server của bạn. Sau đó, bạn có thể cài đặt phần mềm bằng lệnh:

  • sudo make install

Bạn có thể tìm thấy Nginx tùy chỉnh của bạn được cài đặt trong folder /usr/local/nginx . Để thuận tiện hơn nữa, hãy tạo hai softlink . Đầu tiên cho các file cấu hình:

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

Lệnh này sẽ cho phép bạn tìm các file cấu hình trong folder /etc/nginx/ nơi thường chứa các file cấu hình.

Bạn cũng nên tạo một softlink đến binary chính trong folder /usr/sbin/ để bạn có thể tìm thấy nó dễ dàng hơn và đưa nó vào tập lệnh khởi động. Điều này cũng cần thiết cho tập lệnh khởi động mà ta sẽ sử dụng sau này. Vì mục đích này, hãy chạy lệnh:

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

Bước 3 - Tạo tập lệnh khởi động

Quá trình cài đặt trước đó xử lý một số tác vụ thông thường như tạo user và group không ai cần thiết, theo đó Nginx sẽ chạy. Tuy nhiên, bạn vẫn phải tạo tập lệnh khởi động theo cách thủ công. May mắn là đối với Nginx trên CentOS 7 đã có sẵn một cái trên nginx.com .

Đầu tiên, tạo một file mới trong folder /etc/init.d/ :

  • sudo nano /etc/init.d/nginx

Sau đó, truy cập https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/ , sao chép tập lệnh và paste vào file mới này.

Cuối cùng, làm cho tập lệnh này có thể thực thi được bằng cách chạy lệnh:

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

Sau đó, bạn có thể khởi động Nginx lần đầu tiên bằng lệnh:

  • sudo service nginx start

Để đảm bảo Nginx bắt đầu và dừng mọi lúc với Server, hãy thêm nó vào runlevel mặc định bằng lệnh:

  • sudo chkconfig nginx on

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 nobody:nobody /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 server và lưu các 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 những dòng này vào bất kỳ đâu trong khối, 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 {     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 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" { }          location / {             root   html;             index  index.html index.htm;         } ... 

Ngoài ra, hãy đảm bảo thêm các dòng cấu hình tốc độ trang vào mọi file khối server bổ sung mà bạn có thể có.

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 đối số tùy chỉnh khác:

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

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 . Với nó, 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.

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 Ubuntu 14.04
2015-09-22
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