GNU/Linux >> Belajar Linux >  >> Debian

Cara membuat nginx dengan modul Google PageSpeed ​​di Debian 8 (Jessie)

Penulis:Falko Timme, F4RR3LL | Sven

Tutorial ini menjelaskan cara membuat nginx dengan modul nginx_pagespeed versi terbaru di Debian Jessie. Modul PageSpeed ​​menerapkan praktik terbaik performa web ke halaman, dan aset terkait (CSS, JavaScript, gambar) sehingga mempercepat situs web Anda dan mengurangi waktu muat.

1 Membangun nginx Dengan PageSpeed

nginx tidak mendukung pemuatan modul secara dinamis, oleh karena itu kita harus membangunnya kembali dengan dukungan PageSpeed. Kami akan membangun nginx sebagai paket .deb sehingga kami dapat mengganti instalasi nginx yang ada dengannya (atau menginstalnya dengan mudah di sistem lain).

Buat direktori build terlebih dahulu:

cd /usr/src
mkdir nginx-pagespeed && cd nginx-pagespeed

Pastikan Anda memiliki baris deb dan deb-src untuk Jessie di /etc/apt/sources.list:

nano /etc/apt/sources.list
[...]
deb http://ftp.de.debian.org/debian jessie main contrib non-free
deb-src http://ftp.de.debian.org/debian jessie main contrib non-free
[...]

Perbarui daftar paket Anda dan instal beberapa prasyarat:

apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev

Unduh sumber nginx dan dependensi build:

apt-get source nginx
apt-get build-dep nginx

Mari kita periksa versi nginx kami:

ls -l
[email protected]:/usr/src/nginx-pagespeed# ls -l
insgesamt 1388
drwxr-xr-x 10 root root 4096 Apr 29 22:16 nginx-1.6.2
-rw-r–r– 1 root root 604568 Dez 1 12:51 nginx_1.6.2-5.debian.tar.xz
-rw-r–r– 1 root root 2827 Dez 1 12:51 nginx_1.6.2-5.dsc
-rw-r–r– 1 root root 804164 Sep 17 2014 nginx_1.6.2.orig.tar.gz

Versi nginx kami adalah 1.6.2. Mari kita pergi ke direktori debian/modules dari sumber nginx yang diunduh...

cd /usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/

... dan unduh sumber PageSpeed ​​(Anda dapat memeriksa rilis terbaru di halaman ini:https://github.com/pagespeed/ngx_pagespeed/releases - dalam contoh ini versinya adalah 1.9.32.3-beta; jika versi Anda berbeda , pastikan untuk menggantinya di sisa tutorial ini):

wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.3-beta.zip
unzip release-1.9.32.3-beta.zip
mv ngx_pagespeed-release-1.9.32.3-beta/ ngx_pagespeed
cd ngx_pagespeed/
wget https://dl.google.com/dl/page-speed/psol/1.9.32.3.tar.gz
tar -xzvf 1.9.32.3.tar.gz

Mari kita edit file debian/rules:

nano /usr/src/nginx-pagespeed/nginx-1.6.2/debian/rules

Dalam file tersebut Anda akan menemukan tiga configure_flags  bagian dengan baris:

–add-module=$(MODULESDIR)/ngx_pagespeed \ 

perlu ditambahkan:

di bagian light_configure_flags setelah –without-http_uwsgi_module ,
di bagian full_configure_flags setelah –with-mail_ssl_module,
di bagian extras_configure_flags setelah –add-module=$(MODULESDIR)/nginx-development-kit

File yang dihasilkan akan terlihat seperti di bawah ini (gunakan tombol tab untuk menambahkan spasi di depan baris).

#!/usr/bin/make -f
export DH_VERBOSE=1

debian_cflags:=$(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
debian_ldflags:=$(shell dpkg-buildflags --get LDFLAGS)

# export necessary perl hardenging flags
# see: src/http/modules/perl/Makefile.PL
DEBIAN_NGINX_PERL_LDFLAGS:= $(debian_ldflags)
export DEBIAN_NGINX_PERL_LDFLAGS

FLAVOURS := full light extras

MODULESDIR = $(CURDIR)/debian/modules
BASEDIR = $(CURDIR)
$(foreach flavour,$(FLAVOURS),$(eval BUILDDIR_$(flavour) = $(CURDIR)/debian/build-$(flavour)))

DEB_BUILD_ARCH ?=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
ifeq ($(DEB_BUILD_ARCH),sparc)
	debian_cflags += -m32 -mcpu=ultrasparc
endif

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	MAKEFLAGS += -j$(NUMJOBS)
endif

# configure flags
common_configure_flags := \
			--with-cc-opt="$(debian_cflags)" \
			--with-ld-opt="$(debian_ldflags)" \
			--prefix=/usr/share/nginx \
			--conf-path=/etc/nginx/nginx.conf \
			--http-log-path=/var/log/nginx/access.log \
			--error-log-path=/var/log/nginx/error.log \
			--lock-path=/var/lock/nginx.lock \
			--pid-path=/run/nginx.pid \
			--http-client-body-temp-path=/var/lib/nginx/body \
			--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
			--http-proxy-temp-path=/var/lib/nginx/proxy \
			--http-scgi-temp-path=/var/lib/nginx/scgi \
			--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
			--with-debug \
			--with-pcre-jit \
			--with-ipv6 \
			--with-http_ssl_module \
			--with-http_stub_status_module \
			--with-http_realip_module \
			--with-http_auth_request_module


light_configure_flags := \
			$(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)/ngx_pagespeed \
			--add-module=$(MODULESDIR)/nginx-echo

full_configure_flags := \
			$(common_configure_flags) \
			--with-http_addition_module \
			--with-http_dav_module \
			--with-http_geoip_module \
			--with-http_gzip_static_module \
			--with-http_image_filter_module \
			--with-http_spdy_module \
			--with-http_sub_module \
			--with-http_xslt_module \
			--with-mail \
			--with-mail_ssl_module \
			--add-module=$(MODULESDIR)/ngx_pagespeed \
			--add-module=$(MODULESDIR)/nginx-auth-pam \
			--add-module=$(MODULESDIR)/nginx-dav-ext-module \
			--add-module=$(MODULESDIR)/nginx-echo \
			--add-module=$(MODULESDIR)/nginx-upstream-fair \
			--add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module

extras_configure_flags := \
			$(common_configure_flags) \
			--with-http_addition_module \
			--with-http_dav_module \
			--with-http_flv_module \
			--with-http_geoip_module \
			--with-http_gzip_static_module \
			--with-http_image_filter_module \
			--with-http_mp4_module \
			--with-http_perl_module \
			--with-http_random_index_module \
			--with-http_secure_link_module \
			--with-http_spdy_module \
			--with-http_sub_module \
			--with-http_xslt_module \
			--with-mail \
			--with-mail_ssl_module \
			--add-module=$(MODULESDIR)/headers-more-nginx-module \
			--add-module=$(MODULESDIR)/nginx-auth-pam \
			--add-module=$(MODULESDIR)/nginx-cache-purge \
			--add-module=$(MODULESDIR)/nginx-dav-ext-module \
			--add-module=$(MODULESDIR)/nginx-development-kit \
			--add-module=$(MODULESDIR)/ngx_pagespeed \
			--add-module=$(MODULESDIR)/ngx-fancyindex \
			--add-module=$(MODULESDIR)/nginx-http-push \
			--add-module=$(MODULESDIR)/nginx-lua \
			--add-module=$(MODULESDIR)/nginx-upload-progress \
			--add-module=$(MODULESDIR)/nginx-upstream-fair \
			--add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module

%:
	dh [email protected] --with systemd

override_dh_auto_configure: $(foreach flavour,$(FLAVOURS),config.arch.$(flavour))
override_dh_auto_build:     $(foreach flavour,$(FLAVOURS),build.arch.$(flavour))
override_dh_strip:          $(foreach flavour,$(FLAVOURS),strip.arch.$(flavour))
override_dh_clean:          $(foreach flavour,$(FLAVOURS),clean.$(flavour))
	dh_clean

override_dh_installinit:
	dh_installinit --no-restart-on-upgrade --no-start --name=nginx

override_dh_systemd_enable:
	dh_systemd_enable --name=nginx

override_dh_installlogrotate:
	dh_installlogrotate --package nginx-common --name=nginx

build.arch.%:
	$(MAKE) -C $(BUILDDIR_$*) build

strip.arch.%:
	dh_strip --package=nginx-$(*) --dbg-package=nginx-$(*)-dbg

config.arch.%:
	dh_testdir
	mkdir -p $(BUILDDIR_$*)
	cp -Pa $(CURDIR)/auto $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/conf $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/configure $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/contrib $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/src $(BUILDDIR_$*)/
	cp -Pa $(CURDIR)/man $(BUILDDIR_$*)/
	cd $(BUILDDIR_$*) && ./configure $($*_configure_flags)

clean.%:
	rm -rf $(BUILDDIR_$*)

Kemudian jalankan:

cd /usr/src/nginx-pagespeed/nginx-1.6.2/ && dpkg-buildpackage -b

untuk membangun paket nginx .deb baru. Setelah itu, mari kita lihat paket yang dihasilkan:

cd /usr/src/nginx-pagespeed
ls -l
[email protected]:/usr/src/nginx-pagespeed# ls -l
insgesamt 99720
drwxr-xr-x 10 root root 4096 Apr 29 22:16 nginx-1.6.2
-rw-r–r– 1 root root 72086 Apr 29 23:06 nginx_1.6.2-5_all.deb
-rw-r–r– 1 root root 3961 Apr 29 23:08 nginx_1.6.2-5_amd64.changes
-rw-r–r– 1 root root 604568 Dez 1 12:51 nginx_1.6.2-5.debian.tar.xz
-rw-r–r– 1 root root 2827 Dez 1 12:51 nginx_1.6.2-5.dsc
-rw-r–r– 1 root root 804164 Sep 17 2014 nginx_1.6.2.orig.tar.gz
-rw-r–r– 1 root root 86540 Apr 29 23:06 nginx-common_1.6.2-5_all.deb
-rw-r–r– 1 root root 83716 Apr 29 23:06 nginx-doc_1.6.2-5_all.deb
-rw-r–r– 1 root root 3403690 Apr 29 23:08 nginx-extras_1.6.2-5_amd64.deb
-rw-r–r– 1 root root 31745456 Apr 29 23:08 nginx-extras-dbg_1.6.2-5_amd64.deb
-rw-r–r– 1 root root 3232788 Apr 29 23:07 nginx-full_1.6.2-5_amd64.deb
-rw-r–r– 1 root root 29932616 Apr 29 23:07 nginx-full-dbg_1.6.2-5_amd64.deb
-rw-r–r– 1 root root 3136400 Apr 29 23:07 nginx-light_1.6.2-5_amd64.deb
-rw-r–r– 1 root root 28975322 Apr 29 23:08 nginx-light-dbg_1.6.2-5_amd64.deb

Sekarang kita dapat menginstal nginx dengan dukungan PageSpeed ​​sebagai berikut:

dpkg --install nginx-common_1.6.2-5_all.deb nginx_1.6.2-5_all.deb nginx-full_1.6.2-5_amd64.deb

Kemudian mulai ulang nginx:

service nginx restart

Mari kita periksa apakah modul PageSpeed ​​berhasil dibuat:

nginx -V

Anda akan melihat modul ngx_pagespeed di output:

[email protected]:/usr/src/nginx-pagespeed# nginx -V
nginx version: nginx/1.6.2
TLS SNI support enabled
configure arguments: –with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' –with-ld-opt=-Wl,-z,relro –prefix=/usr/share/nginx –conf-path=/etc/nginx/nginx.conf –http-log-path=/var/log/nginx/access.log –error-log-path=/var/log/nginx/error.log –lock-path=/var/lock/nginx.lock –pid-path=/run/nginx.pid –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –with-debug –with-pcre-jit –with-ipv6 –with-http_ssl_module –with-http_stub_status_module –with-http_realip_module –with-http_auth_request_module –with-http_addition_module –with-http_dav_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_spdy_module –with-http_sub_module –with-http_xslt_module –with-mail –with-mail_ssl_module –add-module=/usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/ngx_pagespeed –add-module=/usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/nginx-auth-pam –add-module=/usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/nginx-dav-ext-module –add-module=/usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/nginx-echo –add-module=/usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/nginx-upstream-fair –add-module=/usr/src/nginx-pagespeed/nginx-1.6.2/debian/modules/ngx_http_substitutions_filter_module

2 Mengonfigurasi PageSpeed

Untuk mengaktifkan PageSpeed, buka /etc/nginx/nginx.conf...

nano /etc/nginx/nginx.conf

... dan tambahkan baris pada kecepatan halaman; dan kecepatan halaman FileCachePath /var/ngx_pagespeed_cache; sebelum vhost apa pun:

[...]
        pagespeed on;
        pagespeed FileCachePath /var/ngx_pagespeed_cache;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
[...]

Buat direktori cache dan muat ulang nginx:

mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
service nginx reload

Mari memuat halaman dan memeriksa apakah PageSpeed ​​disebutkan dalam output:

curl -I -p http://localhost|grep X-Page-Speed
[email protected]:/usr/src/nginx-pagespeed# curl -I -p http://localhost|grep X-Page-Speed
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
X-Page-Speed: 1.9.32.3-4448

Sekarang kita dapat mengonfigurasi PageSpeed ​​secara individual atau setiap vhost, mis. seperti ini:

nano /etc/nginx/sites-available/example.com.vhost
server {
[...]
  # let's speed up PageSpeed by storing it in the super duper fast memcached
  pagespeed MemcachedThreads 1;
  pagespeed MemcachedServers "localhost:11211";

  # Filter settings
  pagespeed RewriteLevel CoreFilters;
  pagespeed EnableFilters collapse_whitespace,remove_comments;

  #  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 /ngx_pagespeed_statistics {
    allow 127.0.0.1;
    deny all;
  }
  location /ngx_pagespeed_global_statistics {
    allow 127.0.0.1;
    deny all;
  }
  location /ngx_pagespeed_message {
    allow 127.0.0.1;
    deny all;
  }
  location /pagespeed_console {
    allow 127.0.0.1;
    deny all;
  }
[...]
}

Baris penting adalah baris EnableFilters kecepatan halaman yang memberi tahu PageSpeed ​​filter mana yang harus diterapkan. Anda dapat menemukan daftar semua filter di sini:http://ngxpagespeed.com/ngx_pagespeed_example/

Jangan lupa restart nginx setelahnya:

service nginx reload

Saat Anda membuka halaman sekarang dan melihat header (misalnya dengan add-on header Live HTTP untuk FireFox), Anda akan melihat garis x-page-speed. Anda juga dapat memeriksa sumber HTML halaman Anda untuk melihat apakah filter PageSpeed ​​berfungsi seperti yang diharapkan.

  • Blog Pengembang Google:http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
  • ngx_pagespeed:https://developers.google.com/speed/pagespeed/ngx
  • Membangun/menggunakan PageSpeed:https://github.com/pagespeed/ngx_pagespeed
  • Contoh Filter ngx_pagespeed:http://ngxpagespeed.com/ngx_pagespeed_example/


Debian
  1. Cara Menginstal Nginx dengan Google PageSpeed ​​di Ubuntu 20.04

  2. Cara menginstal WebDAV dengan Lighttpd di Debian 8 (Jessie)

  3. Cara Menginstal Ghost di Debian dengan Nginx

  1. Cara Membangun Nginx dari sumber di Debian 9

  2. Cara Menginstal Nginx di Debian 8 (Jessie)

  3. Cara Menginstal WonderCMS dengan Nginx di Debian 11

  1. Cara Menginstal WonderCMS dengan Nginx di Debian 9

  2. Cara Mengatur Nginx dengan Modul Google Pagespeed di Debian 11

  3. Menggunakan ngx_pagespeed Dengan nginx Di Debian Jessie/pengujian