Hướng dẫn cài đặt ngx_pagespeed trên CentOS 7
Pagespeed là một module cho phép giảm thời gian tải trang, tăng tốc độ website phát triển bởi ông lớn "Google". Pagespeed có 2 phiên bản: mod_pagespeed tích hợp với Apache và ngx_pagespeed tích hợp với Nginx. Module này tự động chọn và apply các filter xử lý thích hợp nhất vào từng trang mà không cần thay đổi mã nguồn, tập trung vào tăng cường xử lý cho CSS, HTML, Javascript và caching các file tĩnh. Mời bạn đọc Bizfly Cloud cùng tìm hiểu thông tin về ngx_pagespeed trên CentOS 7 qua bài viết dưới đây.
Một số filter hay của ngx_pagespeed
- Collapse Whitespace: giảm băng thông sử dụng bằng cách thay thế nhiều khoảng trắng (whitespace) trong HTML bằng 1 khoảng trắng mà thôi.
- Canonicalize JavaScript Libraries: giảm băng thông sử dụng bằng cách tự động sử dụng các thư viện Javascript phổ biến trên server free (vd như của Google).
- Combine CSS: giảm số lượng HTTP requests bằng cách kết hợp nhiều file CSS thành một file.
- Combine JavaScript: giảm số lượng HTTP requests bằng cách kết hợp nhiều file JavaSript thành một file.
- Extend Cache: giảm băng thông sử dụng bằng cách tối ưu chức năng cache của browser.
- Flatten CSS Imports: giảm số lượng HTTP request bằng cách xóa @import trong file CSS.
- Lazyload Images: làm chậm lại việc load các hình ảnh ko được hiển trị trên trình duyệt người dùng.
- Minify JavaScript: giảm băng thông sử dụng bằng cách tối ưu kích thước file Javascript.
- Optimize Images: tối ưu hóa hình ảnh bằng cách sử dụng inline images, nén hình ảnh, hoặc convert GIF sang PNG.
- Pre-Resolve DNS: giảm thời gian phân giải DNS bằng cách phân giải trước DNS sử dụng HTML
Ngoài ra, bạn có thể xem toàn bộ filter và ví dụ tại PageSpeed Filter Examples.
Cài đặt ngx_pagespeed trên CentOS 7
Chúng ta không thể cài đặt ngx_pagespeed như một module riêng lẻ mà cần phải cài đặt bằng cách biên dịch lại Nginx từ mã nguồn ban đầu.
Bài viết được thực hiện trên server Centos 7.
1. Cài đặt các gói tin cần thiết
sudo yum update -y sudo yum install gcc cmake unzip wget gcc-c pcre-devel zlib-devel -y
2. Biên dịch lại nginx
Tải về máy source code của nginx và của ngx_pagespeed:
wget http://nginx.org/download/nginx-1.12.0.tar.gz wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
Giải nén các thư mục tar -xvzf nginx-1.12.0.tar.gz và unzip v1.12.34.2-stable.zip
Tải về thư viện tối ưu PageSpeed từ Google
cd ngx_pagespeed-1.12.34.2-stable wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz tar -xvzf 1.12.34.2-x64.tar.gz cd ..
Giờ chúng ta sẽ biên dịch nginx với Pagespeed module:
cd nginx-1.12.0 sudo ./configure --add-module=$HOME/ngx_pagespeed-1.12.34.2-stable --user=nobody --group=nobody --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS} sudo make sudo make install sudo ln -s /usr/local/nginx/conf/ /etc/nginx sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Create statup script:
sudo vim /etc/init.d/nginx
Thêm script sau vào file:
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: NGINX is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done fi } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
Save file và set quyền thực thi cho file:
sudo chmod x /etc/init.d/nginx
Khởi động nginx và cấu hình bật nginx khi khởi động:
sudo systemctl start nginx sudo systemctl enable nginx
3. Cấu hình nginx và ngx_pagespeed
Khi biên dịch xong nginx, mặc định ngx_pagespeed sẽ ở trạng thái disable. Trước khi enable pagespeed, cần tạo một thư mục cache cho pagespeed và gắn quyền truy cập cho nginx.
sudo mkdir -p /var/ngx_pagespeed_cache sudo chown -R nobody:nobody /var/ngx_pagespeed_cache
Chỉnh lại một số cầu hình trong nginx.conf:
sudo vim /etc/nginx/nginx.conf
Thêm các dòng sau vào block server:
# 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" { }
Lưu ý: Nếu bạn sử dụng virtual hosting, thêm config trên vào mỗi block server config để enable pagespeed trên mỗi website.
Check config nginx bằng câu lệnh:
sudo nginx -t
Khởi động lại nginx:
sudo systemctl restart nginx
4. Check ngx_pagespeed
Check ngx_pagespeed có hoạt động hay không bằng câu lệnh:
curl -I -p http://localhost HTTP/1.1 200 OK Server: nginx/1.12.0 Content-Type: text/html Connection: keep-alive Vary: Accept-Encoding Date: Wed, 21 Jun 2017 17:21:08 GMT X-Page-Speed: 1.12.34.2-0 Cache-Control: max-age=0, no-cache
Bạn sẽ thấy X-Page-Speed và version của nó. Điều này nghĩa là pagespeed đã được cài đặt thành công.
Nguồn: Bizfly Cloud chia sẻ
>> Có thể bạn quan tâm: Hướng dẫn cài đặt OpenVPN Client trên CentOS/ RHEL 7