Asenna Nginx ja Ngx_Pagespeed (nopeuden optimointi) Debianiin ja Ubuntuun


Edellisessä artikkelissamme osoitimme, kuinka Nginxin suorituskykyä voidaan nopeuttaa Ngx_Pagespeedillä CentOS 7:ssä. Tässä opetusohjelmassa selitämme, kuinka Nginx asennetaan ngx_pagespeedillä Debian- ja Ubuntu-järjestelmiin Nginx-sivustojen suorituskyvyn parantamiseksi.

Nginx [engine x] on ilmainen ja avoimen lähdekoodin suosittu HTTP-palvelin, joka toimii useilla sivustoilla verkossa: tunnettu korkeasta suorituskyvystään ja vakaudestaan. Se toimii myös käänteisenä välityspalvelimena, yleisenä sähköpostina ja TCP/UDP-välityspalvelimena, ja sitä voidaan lisäksi ottaa käyttöön kuormituksen tasapainottajana.

Ngx_pagespeed on ilmainen ja avoimen lähdekoodin Nginx-moduuli, joka on tarkoitettu parantamaan sivustojen nopeutta ja lyhentämään sivujen latausaikaa. se lyhentää huomattavasti aikaa, joka kuluu käyttäjiltä sivustosi sisällön katseluun ja vuorovaikutukseen sen kanssa.

Suositeltu luku: Asenna Mod_Pagespeed parantaaksesi Apache-palvelimen suorituskykyä

Ngx_pagespeed-ominaisuudet:

  • HTTPS-tuki URL-ohjauksella.
  • Kuvan optimointi: metatietojen poistaminen, dynaaminen koon muuttaminen, uudelleenpakkaus.
  • CSS- ja JavaScript-pienennys, ketjutus, rivitys ja ääriviivat.
  • Pieni resurssi inline.
  • Kuvan ja JavaScriptin latausta lykätään.
  • HTML:n uudelleenkirjoitus.
  • Välimuistin käyttöiän pidentäminen.
  • Mahdollistaa konfiguroinnin useille palvelimille ja monille muille.

Vaihe 1: Nginx-asennus lähteestä

1. Jotta voit asentaa Nginxin ja ngx_pagespeed lähteestä, järjestelmään on asennettava seuraavat paketit.

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

2. Lataa seuraavaksi Nginxin uusimman version lähdetiedostot (1.13.2 tätä kirjoitettaessa) wget-komennolla ja pura tiedostot alla kuvatulla tavalla.

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. Hanki seuraavaksi ngx_pagespeed-lähdetiedostot ja pura pakattu tiedosto tällä tavalla.

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

4. Siirry sitten purettuun ngx_pagespeed-hakemistoon ja lataa PageSpeed-optimointikirjastot Nginxin kääntämiseksi seuraavasti.

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

Vaihe 2: Määritä ja käännä Nginx Ngx_Pagespeedillä

5. Siirry seuraavaksi hakemistoon nginx-1.13.2 ja määritä Nginx-lähde käyttämällä seuraavia komentoja.

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. Käännä ja asenna seuraavaksi Nginx seuraavasti.

make
sudo make install

7. Kun asennus on valmis, suorita alla olevat komennot luodaksesi tarvittavat symbolilinkit Nginxille.

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

Vaihe 3: Nginx-yksikkötiedoston luominen SystemD:lle

8. Tässä sinun on luotava Nginx-yksikkötiedosto manuaalisesti, koska systemd on aloitusjärjestelmä uudemmissa Debian- ja Ubuntu-versioissa.

Luo ensin tiedosto /lib/systemd/system/nginx.service.


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

Lataa sitten NGINX systemd -palvelutiedosto ja liitä yksikkötiedoston kokoonpano tiedostoon.

[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

Tallenna tiedosto ja sulje se.

9. Käynnistä nyt nginx-palvelu toistaiseksi ja ota se käyttöön järjestelmän käynnistyksen yhteydessä alla olevien komentojen avulla.

sudo systemctl start nginx
sudo systemctl enable nginx

Tärkeää: Nginx-palvelun käynnistämisen jälkeen saatat nähdä alla olevassa kuvakaappauksessa näkyvän virheen.

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

Ratkaise se avaamalla Nginx-määritystiedosto /etc/nginx/nginx.conf ja liittämällä seuraava rivi.

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

Lopuksi käynnistä nginx-palvelu uudelleen.

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

Vaihe 4: Määritä Nginx Pagespeed-moduulilla

10. Nyt kun Nginx on asennettu ja käynnissä järjestelmässäsi, sinun on otettava käyttöön Ngx_pagespeed-moduuli. Luo ensin hakemisto, johon moduuli tallentaa verkkosivustosi tiedostot välimuistiin ja aseta sopivat käyttöoikeudet tälle hakemistolle seuraavasti.

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

11. Ota Ngx_pagespeed-moduuli käyttöön avaamalla Nginx-määritystiedosto.

sudo vi /etc/nginx/nginx.conf

Lisää seuraavat Ngx_pagespeed-määritysrivit palvelinlohkoon.

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

Huomaa: jos olet ottanut käyttöön nginx-virtuaaliisäntiä palvelimella, lisää yllä olevat pagespeed-ohjeet jokaiseen palvelinlohkoon ottaaksesi Ngx_pagespeedin käyttöön jokaisessa sivustossa.

Seuraavassa on toimiva esimerkki Nginx-määritystiedostosta, jossa Ngx_pagespeed on käytössä oletusvirtuaalisessa isännässä.

#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;
    #    }
    #}
}

Tallenna ja sulje tiedosto.

12. Tarkista sitten, onko Nginx-määritystiedoston syntaksi virheetön suorittamalla alla oleva komento. Jos se on oikein, näet tulosteen alla:

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. Käynnistä Nginx-palvelin sen jälkeen uudelleen tehdäksesi viimeisimmät muutokset.

sudo systemctl restart nginx

Vaihe 5: Nginxin testaus Ngx_pagespeedillä

14. Testaa nyt, toimiiko Ngx-pagespeed nyt yhdessä Nginxin kanssa käyttämällä alla olevaa cURL-komentoa.

curl -I -p http://localhost

Jos et näe yllä olevaa otsikkoa, palaa vaiheeseen 10 ja käy huolellisesti läpi ohjeet ottaaksesi Ngx-pagespeed käyttöön seuraavilla vaiheilla.

Ngx-pagespeed Githubin arkisto: https://github.com/pagespeed/ngx_pagespeed

Jos haluat suojata Nginx-verkkopalvelimen, suosittelemme lukemaan tämän hyödyllisen opetusohjelman: Ultimate Guide to Secure, Harden and Improve Performance of Nginx.

Se on siinä! Tässä opetusohjelmassa selitimme, kuinka Nginx asennetaan ngx_pagespeedillä Debianiin ja Ubuntuun. Jos sinulla on kysyttävää, lähetä meille alla olevalla kommenttilomakkeellamme.