Vyhledávání na webu

Nainstalujte Nginx s Ngx_Pagespeed (optimalizace rychlosti) na Debian a Ubuntu


V našem posledním článku jsme si ukázali, jak zrychlit výkon Nginx pomocí Ngx_Pagespeed na CentOS 7. V tomto tutoriálu vysvětlíme, jak nainstalovat Nginx s ngx_pagespeed na systém Debian a Ubuntu pro zlepšení výkonu webů Nginx.

Nginx [engine x] je bezplatný populární HTTP server s otevřeným zdrojovým kódem, který pohání mnoho webů na webu: dobře známý pro svůj vysoký výkon a stabilitu. Funguje také jako reverzní proxy, generická pošta a TCP/UDP proxy server a může být navíc nasazen jako load balancer.

Ngx_pagespeed je bezplatný modul Nginx s otevřeným zdrojovým kódem určený ke zlepšení rychlosti stránek a zkrácení doby načítání stránky; výrazně zkracuje dobu, kterou uživatelé potřebují k prohlížení obsahu na vašem webu a interakci s ním.

Doporučené čtení: Nainstalujte Mod_Pagespeed ke zlepšení výkonu serveru Apache

Funkce Ngx_pagespeed:

  • Podpora HTTPS s ovládáním URL.
  • Optimalizace obrazu: odstranění metadat, dynamická změna velikosti, rekomprese.
  • Minifikace, zřetězení, vkládání a obrysování CSS a JavaScriptu.
  • Vložení malého zdroje.
  • Odložení načítání obrázků a JavaScriptu.
  • přepisování HTML.
  • Prodloužení životnosti mezipaměti.
  • Umožňuje konfiguraci pro více serverů a mnoho dalších.

Krok 1: Instalace Nginx ze zdroje

1. Chcete-li nainstalovat Nginx pomocí ngx_pagespeed ze zdroje, je třeba nainstalovat do systému následující balíčky.

sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

2. Dále si stáhněte zdrojové soubory nejnovější verze Nginx (1.13.2 v době psaní tohoto článku) pomocí příkazu wget a extrahujte soubory, jak je uvedeno níže.

mkdir -p ~/make_nginx
cd ~/make_nginx
wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
tar -xzvf nginx-1.13.2.tar.gz

3. Dále získejte zdrojové soubory ngx_pagespeed a rozbalte komprimovaný soubor takto.

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip

4. Poté se přesuňte do rozbaleného adresáře ngx_pagespeed a stáhněte si optimalizační knihovny PageSpeed pro kompilaci Nginx následovně.

cd ngx_pagespeed-1.12.34.2-stable/
wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz

Krok 2: Nakonfigurujte a zkompilujte Nginx pomocí Ngx_Pagespeed

5. Dále se přesuňte do adresáře nginx-1.13.2 a nakonfigurujte zdroj Nginx pomocí následujících příkazů.

cd  ~/make_nginx/nginx-1.13.2
./configure --add-module=$HOME/make_nginx/ngx_pagespeed-1.12.34.2-stable/ ${PS_NGX_EXTRA_FLAGS}

6. Dále zkompilujte a nainstalujte Nginx následovně.

make
sudo make install

7. Po dokončení procesu instalace spusťte níže uvedené příkazy a vytvořte potřebné symbolické odkazy pro Nginx.

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

Krok 3: Vytvoření souboru jednotky Nginx pro SystemD

8. Zde budete muset ručně vytvořit soubor jednotky Nginx, protože systemd je init systém na novějších verzích systému Debian a Ubuntu

Nejprve vytvořte soubor /lib/systemd/system/nginx.service.


sudo vi /lib/systemd/system/nginx.service

Poté si stáhněte servisní soubor NGINX systemd a vložte konfiguraci souboru jednotky do souboru.

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Uložte soubor a zavřete jej.

9. Nyní prozatím spusťte službu nginx a povolte její spuštění při spouštění systému pomocí příkazů níže.

sudo systemctl start nginx
sudo systemctl enable nginx

Důležité: Po spuštění služby Nginx se může zobrazit chyba, jak je znázorněno na snímku obrazovky níže.

systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory 

Chcete-li to vyřešit, otevřete konfigurační soubor Nginx /etc/nginx/nginx.conf a připojte následující řádek.

#pid  logs/nginx.pid;
to
pid  /run/nginx.pid;

Nakonec znovu restartujte službu nginx.

sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl status nginx

Krok 4: Nakonfigurujte Nginx s modulem Pagespeed

10. Nyní, když je Nginx nainstalován a spuštěn ve vašem systému, musíte povolit modul Ngx_pagespeed. Nejprve vytvořte adresář, do kterého bude modul ukládat soubory pro váš web, a nastavte vhodná oprávnění pro tento adresář následovně.

sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache

11. Chcete-li povolit modul Ngx_pagespeed, otevřete konfigurační soubor Nginx.

sudo vi /etc/nginx/nginx.conf

Přidejte následující konfigurační řádky Ngx_pagespeed do bloku serveru.

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" { }

Poznámka: Pokud jste na server nasadili nějaké virtuální hostitele nginx, přidejte výše uvedené direktivy pagespeed do každého bloku serveru, abyste povolili Ngx_pagespeed na každém webu.

Níže je uveden funkční příklad konfiguračního souboru Nginx s povoleným Ngx_pagespeed ve výchozím virtuálním hostiteli.

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid   /run/nginx.pid;

events {
    worker_connections  1024;
}
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;
        }

        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

Uložte a zavřete soubor.

12. Poté zkontrolujte, zda je syntaxe konfiguračního souboru Nginx bezchybná, spuštěním příkazu níže, pokud je správný, zobrazí se výstup níže:

sudo nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

13. Poté restartujte server Nginx, aby se projevily poslední změny.

sudo systemctl restart nginx

Krok 5: Testování Nginx pomocí Ngx_pagespeed

14. Nyní otestujte, zda Ngx-pagespeed nyní funguje ve spojení s Nginx pomocí příkazu cURL níže.

curl -I -p http://localhost

Pokud se vám nepodařilo zobrazit výše uvedenou hlavičku, vraťte se ke kroku 10 a pozorně si projděte pokyny, abyste povolili Ngx-pagespeed s postupnými kroky.

Úložiště Github Ngx-pagespeed: https://github.com/pagespeed/ngx_pagespeed

Pokud chcete zabezpečit webový server Nginx, doporučujeme přečíst si tento užitečný tutoriál: The Ultimate Guide to Secure, Hardden and Improve Performance of Nginx.

To je ono! V tomto tutoriálu jsme vysvětlili, jak nainstalovat Nginx s ngx_pagespeed na Debian a Ubuntu. Pokud máte nějaké dotazy, pošlete nám je pomocí formuláře níže.