Modul PageSpeed Google , také známý jako mod_PageSpeed, je open-source balíček Apache HTTP nebo Nginx na úrovni serveru s moduly, které pomáhají optimalizovat váš web pomocí různých filtrů na stránky, které optimalizují serverové styly, JavaScript a soubory HTML a obrázky prostřednictvím ukládání do mezipaměti a přepisování mezi nejlepšími. funkce.
V následujícím tutoriálu se naučíte, jak nainstalovat a provést základní nastavení s Nginx Pagespeed na Debian 11 Bullseye.
Aktualizujte systém Debian
Aktualizujte svůj Debian operační systém, abyste se ujistili, že všechny existující balíčky jsou aktuální:
sudo apt update && sudo apt upgrade -y
Instalovat závislosti
K instalaci nebo kontrole, zda jsou balíčky nainstalovány, použijte následující příkaz.
sudo apt install apt-transport-https unzip wget curl git dpkg-dev uuid-dev make build-essential gnupg2 ca-certificates lsb-release debian-archive-keyring -y
Instalovat nejnovější hlavní řadu Nginx nebo stabilní
Pro rychlost stránky budete muset zkompilovat zdroj Nginx, ale vzhledem k tomu, že se snažíte zlepšit rychlost svého webu, důrazně se doporučuje importovat a nainstalovat nejnovější verzi Nginx, která je k dispozici mezi hlavní nebo stabilní verzí.
Nginx doporučuje používat hlavní verzi, ale stabilní je stejně vhodná pro uživatele, kteří nechtějí tolik upgradovat.
IMPORTOVAT POUZE 1 ÚLOŽIŠTĚ, NE OBA.
Možnost 1 – Importovat hlavní řadu Nginx (doporučeno)
curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x
Možnost 2 – Import Nginx Stable
curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x
Dále spusťte aktualizaci apt update k synchronizaci.
sudo apt update
Nyní začněte instalovat Nginx; výukový program nainstaluje hlavní řadu nginx .
sudo apt install nginx-core nginx-common nginx nginx-full -y
Aktivujte službu pomocí následujícího příkazu.
sudo systemctl enable nginx --now
V importovaném úložišti si všimnete dalších modulů dostupných v této verzi, zejména podpory brotli, kterou můžete nainstalovat pomocí následujících kroků níže.
Otevřete soubor nginx.conf konfigurační soubor:
nano /etc/nginx/nginx.conf
Nyní přidejte další řádky dříve do HTTP{} sekce:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
Dále spusťte Nginx suchý běh.
sudo nginx -t
Výstupem by měl být příklad níže; pokud ne, opravte chybu, kterou jste udělali, a opravte ji.
Příklad:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Restartujte službu Nginx, aby se změny projevily.
sudo systemctl restart nginx
Stáhnout zdrojový balíček Nginx
Budete muset zkompilovat „modul ngx_pagespeed “ ze zdroje jako dynamický modul. Pokud jste to ještě neudělali, probereme, jak vytvořit adresář, který můžete zkompilovat pro tento modul dnes i v budoucnu. Pokaždé, když aktualizujete svůj Nginx prostřednictvím správce balíčků APT, musíte znovu stáhnout zdroj a znovu zkompilovat dynamické moduly.
Za prvé, ve výchozím nastavení deb-src úložiště není přidáno a povoleno. Toto je třeba naimportovat a přidat, než si budete moci stáhnout zdroj Nginx, jinak se získá nesprávná verze.
Možnost 1 – hlavní deb-zdroj Nginx
echo "deb-src https://packages.sury.org/nginx-mainline/ bullseye main
" | sudo tee -a /etc/apt/sources.list.d/nginx-mainline.list
Možnost 2 – Nginx Stable Deb-Source
echo "deb-src https://packages.sury.org/nginx-mainline/ bullseye main" | sudo tee -a /etc/apt/sources.list.d/nginx.list
Dále spusťte aktualizaci APT pro synchronizaci nového přírůstku.
sudo apt update
Vytvořte zdrojový adresář Nginx.
sudo mkdir -p /usr/local/src/nginx
Nyní přejděte do nově vytvořeného adresáře pomocí CD.
cd /usr/local/src/nginx
Dále si stáhněte zdrojový balíček Nginx podle níže uvedeného příkazu sudo.
sudo apt source nginx
Upozorňujeme, že se zobrazí zpráva zamítnuta. To lze ignorovat.
Příklad:
Dále zadejte následující příkaz pro potvrzení stažení zdroje.
ls -l
Výstup by měl být např.
Klonování úložiště ngx_pagespeed
V další části průvodce si budete muset stáhnout „ngx_pagespeed“ zdrojový balíček. Doporučuje se naklonovat zdroj pagespeed pomocí Git, protože později můžete snadno stáhnout aktualizace a v budoucnu znovu zkompilovat.
V této části máte aktuálně dvě možnosti v1.13.35.2-stabilní větev úložiště nebo v1.14.33.1-RC1 pre-release pobočky. Oba mají nyní problémy. Doporučujeme navštívit Git a přečíst si seznam aktuálních problémů abyste zjistili, zda by vás některý ovlivnil více než ten druhý.
Výukový program zjistil, že instalace předběžné verze fungovala nejlépe. Jakkoli vám stabilita může být prospěšnější, je to těžké.
Nejprve vložte CD do adresáře:
cd /usr/local/src
Nyní naklonujte zdroj git ngx_pagespeed:
sudo git clone https://github.com/apache/incubator-pagespeed-ngx.git
Další část lze provést dvěma různými způsoby, stabilně nebo před vydáním. Oba budou uvedeny níže.
Možnost 2. Stáhnout Stable ngx_pagespeed
CD do nově naklonovaného ngx_pagespeed zdroj, podívejte se na nejnovější stabilní větev.
cd incubator-pagespeed-ngx
Podívejte se na nejnovější verzi se stabilní rychlostí stránek.
sudo git checkout latest-stable
Nyní byste si všimli na konci výstupu “PSOL_BINARY_URL “ Vytisknout. Odkaz pro stažení PSOL URL je knihovna pro optimalizaci rychlosti stránek, kterou je třeba stáhnout z pobočky, kterou jste použili, z pokladny GIT.
Chcete-li najít adresu URL knihoven ke stažení, zadejte následující příkaz k odhalení.
Pomocí příkazu cat vyhledejte adresu URL:
cat PSOL_BINARY_URL
Příklad výstupu:
https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz
Všimněte si, že výstup má „$BIT_SIZE_NAME “ . V tomto případě bude většina lidí x64 .
Dále si stáhněte knihovny PageSpeed Optimization Libraries (PSOL) pokračovat.
sudo wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
Nyní rozbalte archiv. Tím se vytvoří “psol “ adresář automaticky a rozbalte soubory. Získáte výtisk s dlouhým seznamem, ale všechny knihovny jsou připraveny ke kompilaci jako dynamický modul s vaším zdrojem Nginx, jakmile bude hotovo.
sudo tar xvf 1.13.35.2-x64.tar.gz
Možnost 2. Stáhnout předběžnou verzi ngx_pagespeed
Proces používání modulu ngx_pagespeed před vydáním a knihoven PSOL zůstává stejný jako u stabilní větve. Takže vše, co uděláte, je změnit některé možnosti, jak je uvedeno níže.
CD do zdroje klonu ngx_pagespeed, podívejte se na nejnovější větev předběžného vydání. Všimněte si, že předběžná větev se s největší pravděpodobností v budoucnu změní.
Proto byste měli navštívit pobočky projektu Github a najít nejnovější. V současné době je větev 36 předběžnou větví s “v1.14.33.1-RC1 “ . Přeskočíme krok o klonování, vraťte se do „stabilní“, kde najdete pokyny.
cd incubator-pagespeed-ngx
Podívejte se na předběžnou verzi pagespeed s číslem 36:
sudo git checkout 36
Nyní byste si všimli na konci výstupu „PSOL_BINARY_URL “ Vytisknout. Odkaz pro stažení PSOL URL je knihovna pro optimalizaci rychlosti stránek, kterou je třeba stáhnout z pobočky, kterou jste použili, z pokladny GIT.
Chcete-li najít adresu URL knihoven ke stažení, zadejte následující příkaz k odhalení.
cat PSOL_BINARY_URL
Příklad výstupu:
https://dist.apache.org/repos/dist/release/incubator/pagespeed/1.14.36.1/x64/psol-1.14.36.1-apache-incubating-$BIT_SIZE_NAME.tar.gz
Všimněte si, že výstup má „$BIT_SIZE_NAME “ . V tomto případě bude většina lidí x64.
Dále si stáhněte knihovny PageSpeed Optimization Libraries (PSOL) pokračovat.
wget https://dist.apache.org/repos/dist/release/incubator/pagespeed/1.14.36.1/x64/psol-1.14.36.1-apache-incubating-$BIT_SIZE_NAME.tar.gz
Rozbalte archivy.
sudo tar xvf psol-1.14.36.1-apache-incubating-x64.tar.gz
Kompilace Nginx s modulem ngx_pagespeed
Dále zkompilujete zdrojový kód Nginx, který jste si stáhli pomocí modulu ngx_pagespeed, který jste si stáhli pomocí knihoven PSOL.
Nejprve vložte CD do zdrojového adresáře Nginx. Všimněte si, že číslo verze Nginx se může lišit.
Pouze příklad:
cd /usr/local/src/nginx/nginx-1.21.4/
Dále nainstalujte závislosti sestavení pro zdroj Nginx.
sudo apt build-dep nginx -y
Nyní zkompilujete modul ngx_pagespeed s příznakem „–with-compact “ . Tento proces učiní budoucí souborový modul “ngx_pagespeed.so “ kompatibilní s vaším aktivním serverem Nginx.
sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/incubator-pagespeed-ngx
Dále použijte příkaz make the modules . Tento proces bude trvat maximálně 1 minutu.
sudo make modules
Nyní zkopírujte nově vytvořený „ngx_pagespeed.so“ modul do vašeho aktivního adresáře serveru Nginx. Umístění se mohou lišit v závislosti na vaší instalaci, ale většina lidí by měla být stejná.
sudo cp objs/ngx_pagespeed.so /etc/nginx/modules/
Alternativa:
sudo cp objs/ngx_pagespeed.so /usr/share/nginx/modules/
Načíst modul ngx_pagespeed v Nginx
Nyní nastal čas načíst modul ngx_pagespeed v Nginx. Použijeme k tomu textový editor nano. Nejprve otevřete soubor “nginx.conf “ soubor.
sudo nano /etc/nginx/nginx.conf
Nyní přidejte následující řádek.
load_module modules/ngx_pagespeed.so; ##### insert with other modules ###
Příklad:
Chcete-li to dokončit, otestujte konfiguraci Nginx pomocí příkazu suchého spuštění a pokud je vše v pořádku, restartujte server Nginx.
sudo nginx -t
Příklad:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Pokud je syntaxe Nginx v pořádku, restartujte službu Nginx:
sudo systemctl restart nginx
Vytvořit mezipaměť PageSpeed
Před konfigurací filtrů musíte vytvořit adresář mezipaměti pro rychlost stránky Nginx pro ukládání souborů v mezipaměti a konverzí obrázků. Toto lze změnit na místo podle vašeho výběru; uděláme to však ve složce Nginx pro průvodce.
Vytvořte adresář mezipaměti:
sudo mkdir -p /etc/nginx/ngx_pagespeed_cache
Nastavit uživatele www-data jako vlastníka (důležité):
sudo chown -R www-data:www-data /etc/nginx/ngx_pagespeed_cache
Nastavení souborů PageSpeed
Nyní existuje několik způsobů, jak nastavit filtry rychlosti stránky, a žádný není správný nebo špatný. Tento příklad však vytvoří “pagespeed.conf“ konfigurační soubor pro tento tutoriál.
Důvodem je skutečnost, že konfigurace rychlosti stránky může být složitá a často může poškodit web. Pokud chcete moduly pagespeed rychle vrátit zpět, můžete přidat komentář proti zahrnutí pagespeed.conf řádek v bloku vašeho serveru.
Vytvořte soubor pagespeed.conf:
sudo nano /etc/nginx/modules-available/pagespeed.conf
Dále projdeme primární filtr nastavený jako bezpečný pro většinu webových stránek. To však lze v budoucnu změnit a upravit na velké množství různých možností, ale budete si to muset pečlivě prostudovat v dokumentaci.
###enable pagespeed on the server block###
pagespeed on;
pagespeed Domain https://www.example.com;
pagespeed Domain https://example.com;
###Add this line if your website runs on HTTPS###
pagespeed FetchHttps enable;
###Set up admin location###
admin console
pagespeed Statistics on;
pagespeed StatisticsLogging on;
pagespeed StatisticsLoggingIntervalMs 60000;
pagespeed StatisticsLoggingMaxFileSizeKb 1024;
pagespeed MessageBufferSize 100000;
pagespeed LogDir /var/log/pagespeed;
pagespeed AdminPath /pagespeed_admin;
###SECURE THE LOCATION FROM BAD BOTS AND MALICOUS ACTORS###
location ~ ^/pagespeed_admin {
allow 127.0.0.1;
allow your-own-IP-address;
deny all;
}
###Specify the file cache folder that you created earlier###
pagespeed FileCachePath /etc/nginx/ngx_pagespeed_cache;
###Set the cache settings, you can play around with these numbers###
pagespeed FileCacheSizeKb 102400;
pagespeed FileCacheCleanIntervalMs 3600000;
pagespeed FileCacheInodeLimit 500000;
pagespeed LRUCacheKbPerProcess 1024;
pagespeed LRUCacheByteLimit 16384;
###OPTIONAL: use Memcached to further increase performance of pagespeed###
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "localhost:11211";
###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 ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
###Set the most common safe filters###
pagespeed RewriteLevel CoreFilters;
Nyní jste si možná všimli, že jsme v nově vytvořeném adresáři pagespeed přejmenovali instalační soubor “pagespeed-example.com.conf .“ To bylo provedeno, jako byste hostovali více webových stránek na stejném serveru. Některé mohou vyžadovat jiné přizpůsobení rychlosti stránky, takže oddělením souborů nastavení zabráníte tomu, aby se vaše nastavení zamotalo.
Možnost filtru, která byla nastavena, byla „CoreFilters“ jako úroveň přepisování. Celkově nabízí PageSpeed tři úrovně přepisování:„CoreFilters, PassThrough,a OptimizeForBandwidth“ . Jak jste si mohli všimnout v původních komentářích, „CoreFilters“ je bezpečný pro většinu webových stránek a používá se jako výchozí pro testování.
Corefilters se skládá z:
- add_head – Přidá prvek v dokumentu, pokud ještě není přítomen.
- combine_css – Kombinuje více prvků CSS do jednoho.
- combine_javascript – Kombinuje více prvků skriptu do jednoho.
- convert_meta_tags – Přidá hlavičku odpovědi pro každou značku metadat s atributem http-equiv.
- extend_cache – Prodlužuje životnost mezipaměti zdrojů CSS, JS a obrázků, které jinak nebyly optimalizovány podepisováním adres URL pomocí hash obsahu.
- fallback_rewrite_css_urls – Přepíše zdroje odkazované v libovolném souboru CSS, které nelze jinak analyzovat a minifikovat.
- flatten_css_imports – Inline CSS sloučením všech pravidel @import.
- inline_css – Vloží malé soubory CSS do dokumentu HTML.
- inline_import_to_link – Řádky tagy obsahující pouze CSS @imports jejich převedením na ekvivalentní tagy.
- inline_javascript – Vloží malé soubory JS do dokumentu HTML.
- rewrite_css – Přepíše soubory CSS, aby odstranil přebytečné mezery a komentáře, a pokud je povoleno, přepíše obrázky nebo obrázky s rozšířením mezipaměti, na které odkazuje soubory CSS. V režimu OptimizeForBandwidth probíhá minifikace na místě beze změny adres URL.
- rewrite_images – Optimalizuje obrázky, překóduje je, odstraní přebytečné pixely a vloží malé obrázky. V režimu OptimizeForBandwidth dochází k minifikaci na místě beze změny adres URL.
- rewrite_javascript – Přepíše soubory JavaScript, aby se odstranily přebytečné mezery a komentáře. V režimu OptimizeForBandwidth dochází k minifikaci na místě beze změny adres URL.
- rewrite_style_attributes_with_url – Přepište CSS v atributech stylu, pokud obsahuje text „url(‘, tím, že na něj použijete nakonfigurovaný filtr rewrite_css.
Nyní můžete CoreFilters dále zvýšit přidáním ještě více filtrů. Doporučil bych však provést průzkum, protože více filtrů se rovná většímu riziku rozbití vašeho webu. Je uměním používat rychlost stránky google, příklad některých dalších možností níže.
###css optimization filters###
pagespeed EnableFilters outline_css;
pagespeed EnableFilters inline_google_font_css;
pagespeed EnableFilters move_css_above_scripts;
pagespeed EnableFilters move_css_to_head;
pagespeed EnableFilters prioritize_critical_css;
###html optimization filters###
pagespeed EnableFilters combine_heads;
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters convert_meta_tags;
pagespeed EnableFilters elide_attributes;
pagespeed EnableFilters pedantic;
pagespeed EnableFilters remove_comments;
pagespeed EnableFilters remove_quotes;
pagespeed EnableFilters trim_urls;
###javascript optimization filters###
pagespeed EnableFilters canonicalize_javascript_libraries;
pagespeed EnableFilters defer_javascript;
###image optimization filters###
pagespeed EnableFilters dedup_inlined_images;
pagespeed EnableFilters inline_preview_images;
pagespeed EnableFilters resize_mobile_images;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters strip_image_color_profile;
pagespeed EnableFilters strip_image_meta_data;
pagespeed EnableFilters jpeg_subsampling;
pagespeed EnableFilters convert_png_to_jpeg;
pagespeed EnableFilters resize_rendered_image_dimensions;
pagespeed EnableFilters insert_image_dimensions;
pagespeed NoTransformOptimizedImages on;
pagespeed EnableFilters sprite_images;
Po dokončení stiskněte CTRL+O pro uložení stiskněte CTRL + X pro ukončení.
Přidejte následující řádek, otestujte a po dokončení nastavení restartujte, abyste to zahrnuli do svého bloku serveru.
sudo nano /etc/nginx/sites-available/example.com.conf
Chcete-li zahrnout filtry, přidejte následující řádek:
include /etc/nginx/modules-available/pagespeed.conf;
Příklad:
Případně jej jednoduše propojte pomocí symbolu moduly-dostupné na podporované moduly , obě možnosti fungují v závislosti na tom, co preferujete.
Příklad:
sudo ln -s /etc/nginx/modules-available/pagespeed.conf /etc/nginx/modules-enabled/pagespeed.conf
PAMATUJTE, ŽE POUŽÍVÁTE POUZE JEDNU METODU.
Před restartováním otestujte svůj server Nginx:
sudo nginx -t
Pokud je vaše syntaxe Nginx v pořádku a nejsou zde žádné chyby, restartujte službu Nginx:
sudo systemctl restart nginx
Podpora převodu WebP
Chcete-li generovat obrazy WebP, nainstalujte do systému následující balíčky.
Podpora PHP 7.4 WebP:
sudo apt install imagemagick php7.4-imagick ffmpeg
Podpora PHP 8.0 WebP:
sudo apt install imagemagick php8.1-imagick ffmpeg
Podpora PHP 8.1 WebP:
sudo apt install imagemagick php8.1-imagick ffmpeg
Pro ty, kteří nemají PHP 8.0 nebo PHP 8.1, to znamená, že používáte standardní úložiště Debianu. To lze opravit importem nejnovějších PHP buildů pomocí následujícího příkazu.
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x
Dále spusťte aktualizaci APT pro synchronizaci nového přírůstku.
sudo apt update
Nyní znovu spusťte tyto příkazy, jak bylo zmíněno dříve. Pokud jste provedli významný upgrade PHP, nezapomeňte upravit všechna další nastavení.
Ověřte, zda je ngx_pagespeed funkční
Tvrdá práce se vyplatila. Nyní chcete zjistit, zda PageSpeed funguje. Uděláme to pomocí příkazu curl, jako v příkladu níže.
curl -I -p https://www.example.com
Ve výstupu byste měli vidět tuto část takto:
x-page-speed: 1.13.35.2-0
Přednačtení ngx_pagespeed
Modul ngx_pagespeed nemá funkci předběžného načítání, což může být frustrující, protože může trvat několik návštěv, než jsou položky adekvátně uloženy do mezipaměti a optimalizovány. To se může ještě zhoršit, pokud byste museli mezipaměť několikrát denně vyčistit, čímž jste nepřijatelně opustili úrovně optimalizace vašeho webu.
Pokud však máte nastavený ramdisk, zadáte následující příkaz pro předběžné načtení všech vašich webových stránek. Také to můžete nastavit na cronjob pro budoucnost, aby se dělal hodinu, denně nebo týdně.
Navštivte Crontab.guru pokud potřebujete pomoc s vytvářením časování cron.
Nastavení ramdisku pro rychlost stránky:
sudo wget -m -p -E -k -P /tmp/preload/ https://www.example.com/
Úloha Cronjob jednu hodinu:
00 */1 * * * wget -m -p -E -k -P /tmp/preload/ https://www.example.com/
Pro nové uživatele Linuxu a Debianu k otevření Cronu použijte následující příkaz.
sudo crontab -e
Zdroje komunity pro PageSpeed
- ModPageSpeed.com – Oficiální dokumentace a pravděpodobně první stránka, kterou byste měli navštívit pro pomoc.
- PageSpeedGuide.com – skvělý zdroj informací o PageSpeed a filtrech.
- ngx_pagespeed Google Group – skvělý komunitní chat Google na Nginx + PageSpeed