Namestite Nginx z Ngx_Pagespeed (Optimizacija hitrosti) v Debian in Ubuntu
V našem zadnjem članku smo pokazali, kako pospešiti delovanje Nginxa z Ngx_Pagespeed na CentOS 7. V tej vadnici bomo razložili, kako namestiti Nginx z ngx_pagespeed v sistem Debian in Ubuntu za izboljšanje delovanja spletnih mest Nginx.
Nginx [engine x] je brezplačen in odprtokoden, priljubljen strežnik HTTP, ki poganja številna spletna mesta: znan po visoki zmogljivosti in stabilnosti. Deluje tudi kot povratni strežnik proxy, generična pošta in strežnik proxy TCP/UDP, poleg tega pa ga je mogoče uporabiti tudi kot izravnalnik obremenitve.
Ngx_pagespeed je brezplačen in odprtokodni modul Nginx, namenjen izboljšanju hitrosti spletnih mest in zmanjšanju časa nalaganja strani; drastično skrajša čas, potreben uporabnikom za ogled in interakcijo z vsebino na vašem spletnem mestu.
- Podpora HTTPS z nadzorom URL-jev.
- Optimizacija slike: odstranjevanje metapodatkov, dinamično spreminjanje velikosti, ponovno stiskanje.
- Minifikacija, združevanje, vstavljanje in orisanje CSS in JavaScript.
- Vstavljanje majhnih virov.
- Odložitev nalaganja slike in JavaScript.
- Prepis HTML.
- Podaljšanje življenjske dobe predpomnilnika.
- Omogoča konfiguriranje za več strežnikov in številne druge.
1. korak: Namestitev Nginxa iz vira
1. Če želite namestiti Nginx z ngx_pagespeed iz vira, morate v sistem namestiti naslednje pakete.
$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
2. Nato z ukazom wget prenesite izvorne datoteke najnovejše različice Nginxa (1.13.2 v času pisanja tega dokumenta) in izvlecite datoteke, kot je prikazano spodaj.
$ 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. Nato vzemite izvorne datoteke ngx_pagespeed in tako razpakirajte stisnjeno datoteko.
$ wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip $ unzip v1.12.34.2-stable.zip
4. Nato se premaknite v razpakiran imenik ngx_pagespeed in prenesite optimizacijske knjižnice PageSpeed za sestavljanje Nginxa, kot sledi.
$ 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
2. korak: Konfigurirajte in prevedite Nginx z Ngx_Pagespeed
5. Nato pojdite v imenik nginx-1.13.2 in konfigurirajte vir Nginx z naslednjimi ukazi.
$ 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. Nato zberite in namestite Nginx, kot sledi.
$ make $ sudo make install
7. Ko je postopek namestitve končan, zaženite spodnje ukaze, da ustvarite potrebne povezave za Nginx.
$ sudo ln -s /usr/local/nginx/conf/ /etc/nginx $ sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
3. korak: Ustvarjanje datoteke Nginx Unit za SystemD
8. Tukaj boste morali ročno ustvariti datoteko enote Nginx, saj je systemd sistem init v novejših različicah sistema Debian in Ubuntu
Fisrt, ustvarite datoteko /lib/systemd/system/nginx.service.
$ sudo vi /lib/systemd/system/nginx.service
Nato naložite datoteko storitve NGINX systemd, prilepite konfiguracijo datoteke enote v datoteko.
[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
Datoteko shranite in zaprite.
9. Zdaj zaženite storitev nginx in jo s spodnjimi ukazi omogočite ob zagonu sistema.
$ sudo systemctl start nginx $ sudo systemctl enable nginx
Pomembno: Po zagonu storitve Nginx boste morda videli napako, kot je prikazano na spodnjem posnetku zaslona.
systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory
Če jo želite rešiti, odprite datoteko za konfiguracijo Nginx /etc/nginx/nginx.conf in dodajte naslednjo vrstico.
#pid logs/nginx.pid; to pid /run/nginx.pid;
Končno znova zaženite storitev nginx.
$ sudo systemctl daemon-reload $ sudo systemctl start nginx $ sudo systemctl status nginx
4. korak: Konfigurirajte Nginx z modulom Pagespeed
10. Zdaj, ko je Nginx nameščen in zagnan v vašem sistemu, morate omogočiti modul Ngx_pagespeed. Najprej ustvarite imenik, v katerem bo modul predpomnil datoteke vašega spletnega mesta in za ta imenik določil ustrezna dovoljenja, kot sledi.
$ sudo mkdir -p /var/ngx_pagespeed_cache $ sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache
11. Če želite omogočiti modul Ngx_pagespeed, odprite konfiguracijsko datoteko Nginx.
$ sudo vi /etc/nginx/nginx.conf
V blok strežnika dodajte naslednje konfiguracijske vrstice Ngx_pagespeed.
# 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" { }
Opomba: Če ste na strežniku razporedili katere koli virtualne gostitelje nginx, dodajte zgornje direktive o hitrosti strani v vsak blok strežnika, da omogočite Ngx_pagespeed na vsakem spletnem mestu.
Sledi delovni primer konfiguracijske datoteke Nginx z omogočenim Ngx_pagespeed v privzetem navideznem gostitelju.
#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; # } #} }
Shranite in zaprite datoteko.
12. Nato z zagonom spodnjega ukaza preverite, ali je v sintaksi konfiguracijske datoteke Nginx brez napak, če je pravilna, boste videli izhod spodaj:
$ 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. Nato znova zaženite strežnik Nginx, da izvedete nedavne spremembe.
$ sudo systemctl restart nginx
5. korak: Testiranje Nginxa z Ngx_pagespeed
14. Zdaj s spodnjim ukazom cURL preizkusite, ali Ngx-pagespeed zdaj deluje skupaj z Nginxom.
$ curl -I -p http://localhost
Če zgornje glave niste videli, se vrnite na 10. korak in pozorno preglejte navodila, da omogočite Ngx-pagespeed z zaporednimi koraki.
Repozitorij Github Ngx-pagespeed: https://github.com/pagespeed/ngx_pagespeed
Če želite zavarovati spletni strežnik Nginx, vam predlagamo, da preberete to koristno vadnico: The Ultimate Guide to Secure, Harden and izboljšanje zmogljivosti Nginxa.
To je to! V tej vadnici smo razložili, kako namestiti Nginx z ngx_pagespeed v Debian in Ubuntu. Če imate kakršna koli vprašanja, nam pošljite spodnji obrazec za komentarje.