Skompiluj Nginx z modułem ngx_pagespeed na serwerze Ubuntu
ngx_pagespeed to moduł Nginx typu open source, który automatycznie stosuje najlepsze praktyki w celu optymalizacji szybkości witryny. W tym samouczku omówimy, jak skompilować Nginx z modułem ngx_pagespeed na serwerze Ubuntu LTS.
Krok 1: Utwórz kopię zapasową plików konfiguracyjnych Nginx
Po skompilowaniu i zainstalowaniu Nginx oryginalne pliki konfiguracyjne Nginx zostaną nadpisane. Możesz użyć następującego polecenia, aby utworzyć kopię zapasową głównego pliku konfiguracyjnego i plików bloków serwera w katalogu domowym. Tylda (~) reprezentuje Twój katalog domowy.
cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~Krok 2: Dodaj oficjalne repozytorium Nginx
Samouczek zademonstruje kompilację najnowszej głównej wersji Nginx. Dodajemy oficjalne repozytorium Nginx, jak pokazano poniżej.
Najpierw pobierz klucz Nginx GPG i zaimportuj go do systemu serwerowego Ubuntu.
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.keyNastępnie utwórz plik listy źródeł dla Nginx.
sudo nano /etc/apt/sources.list.d/nginx.list
Dodaj następujące dwie linie do tego pliku. Linia deb-src pozwala nam pobrać pakiety źródłowe Nginx za pomocą polecenia apt source.
deb http://nginx.org/packages/mainline/ubuntu/ focal nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ focal nginxJeśli używasz Ubuntu 22.04, zamień focal na jammy.
Naciśnij Ctrl+O, aby zapisać plik. Naciśnij Ctrl+X, aby zamknąć plik. Następnie zaktualizuj indeks pakietu lokalnego.
sudo apt updateTeraz oficjalne repozytorium Nginx zostało dodane do serwera Ubuntu.
Krok 3: Pobierz pakiet źródłowy Nginx
Utworzymy katalog nginx w katalogu domowym do przechowywania źródeł Nginx, a następnie umieścimy CD w tym katalogu.
mkdir ~/nginx && cd ~/nginxZainstaluj dpkg-dev i pobierz pakiet źródłowy Nginx za pomocą poniższego polecenia:
sudo apt install dpkg-dev
sudo apt source nginxSprawdź pobrane pliki.
ls ~/nginx/Wyjście :
nginx-1.23.2 nginx_1.23.2-1~focal.dsc
nginx_1.23.2-1~focal.debian.tar.xz nginx_1.23.2.orig.tar.gzKrok 4: Pobierz pakiet źródłowy ngx_pagespeed
Aby skompilować Nginx z modułem ngx_pagespeed, potrzebujemy także pakietu źródłowego ngx_pagespeed. Przejdź do strony pobierania Github ngx_pagespeed. Pobierz najnowszą wersję beta do swojego katalogu domowego (wersja 1.13.35.2-beta w momencie pisania tego tekstu). Może być konieczna zmiana numeru wersji.
cd ~
wget https://codeload.github.com/pagespeed/ngx_pagespeed/zip/v1.13.35.2-betarozpakuj to:
sudo apt-get install unzip
unzip v1.13.35.2-beta
cd do nowo utworzonego katalogu:
cd incubator-pagespeed-ngx-1.13.35.2-beta/Musimy także pobrać bibliotekę PSOL. (Biblioteka optymalizacji PageSpeed) i wyodrębnij ją. Numer wersji odpowiada numerowi wersji PageSpeed.
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
tar xvf 1.13.35.2-x64.tar.gzUtworzy katalog psol w katalogu ~/incubator-pagespeed-ngx-1.13.35.2-beta i tam właśnie powinien się znaleźć.
Krok 5: Dodaj moduł ngx_pagespeed do reguł kompilacji Nginx
Edytuj plik reguł kompilacji Nginx.
sudo nano ~/nginx/nginx-1.23.2/debian/rulesNa końcu sekcji COMMON_CONFIGURE_ARGS dodaj następujący wiersz. Zastąp username swoją rzeczywistą nazwą użytkownika. Ta linia określa lokalizację modułu ngx_pagespeed.
--add-module=/home/username/ngx_pagespeed-1.13.35.2-betaTen samouczek pobiera stronę źródłową ngx_pagespeed do katalogu domowego. Jeśli używasz konta root, zamień /home/username na /root. ponieważ katalog domowy użytkownika root to /root.
Zauważ też, że musisz dodać ukośnik odwrotny w linii --with-ld-opt, jak na zrzucie ekranu poniżej. Jeśli tego nie zrobisz, dodana linia --add-module zostanie zignorowana podczas kompilacji Nginx.
Teraz zapisz i zamknij plik.
Krok 6: Rozpocznij kompilację
Upewnij się, że jesteś w katalogu źródłowym Nginx.
cd ~/nginx/nginx-1.23.2/
Zainstaluj wszystkie potrzebne zależności, aby zbudować nasz pakiet deb Nginx.
sudo apt build-dep nginxTeraz użyj następującego polecenia, aby zbudować pakiet deb.
sudo dpkg-buildpackage -bWeź filiżankę kawy i poczekaj kilka minut. Na jednordzeniowym serwerze VPS KVM proces kompilacji trwał około 10 minut. Kiedy to się skończy, w katalogu ~/nginx/ będzie 7 plików .deb. Musimy jedynie zainstalować pakiet nginx_1.11.1-1~xenial_amd64.deb lub nginx_1.11.1-1~xenial_i386.deb, w zależności od architektury systemu operacyjnego. Pozostałe to pakiet modułów dynamicznych Nginx i pakiet debugowania. Jeśli chcesz, możesz je również zainstalować.
Jeśli instalowałeś już Nginx, czas usunąć starą wersję, a następnie zainstalować nową.
sudo apt remove nginx nginx-common nginx-full
cd ~/nginx
sudo dpkg -i nginx_1.23.2-1~focal_amd64.debLub
sudo dpkg -i nginx_1.23.2-1~focal_i386.debTeraz uruchommy Nginx.
sudo systemctl start nginxJeśli zobaczysz następujący komunikat o błędzie.
Failed to start nginx.service: Unit nginx.service is masked.Następnie zdemaskuj Nginx i ponownie wydaj polecenie start.
sudo systemctl unmask nginxPamiętaj, że proces Nginx może działać jako użytkownik nginx lub www-data. Można to zmienić edytując pierwszą linię w pliku /etc/nginx/nginx.conf. Upewnij się tylko, że Nginx działa jako ten sam użytkownik z PHP-FPM.
Teraz sprawdź argumenty konfiguracyjne Nginx.
sudo nginx -VJeśli na końcu zobaczysz następujący wiersz, oznacza to, że moduł ngx_pagespeed został pomyślnie dodany do Nginx.
--add-module=/home/username/ngx_pagespeed-1.13.35.2-betaKrok 7: Włącz moduł ngx_pagespeed
PageSpeed jest instalowany razem z Nginx, ale domyślnie jest wyłączony. Przed włączeniem tej funkcji zalecamy przetestowanie szybkości witryny na pingdom.com lub webpagetest.org. Zwróć uwagę na rozmiar strony, liczbę żądań, czas ładowania strony itp. Po włączeniu PageSpeed wykonaj ponownie test, aby porównać oba wyniki.
Utwórz folder dla pamięci podręcznych Pagespeed i zmień jego właściciela na użytkownika Nginx (www-data lub nginx), aby mógł zostać zapisany przez Nginx.
sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R www-data:www-data /var/ngx_pagespeed_cacheTeraz edytuj plik konfiguracyjny bloku serwera Nginx.
sudo nano /etc/nginx/conf.d/your-domain.confDodaj następujące dyrektywy Pagespeed w sekcji serwera.
# enable pagespeed module on this server block
pagespeed on;
# Needs to exist and be writable by nginx. Use tmpfs for best performance.
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 ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
pagespeed RewriteLevel CoreFilters;Jeśli hostujesz wiele witryn internetowych na jednym serwerze, dodaj powyższe dyrektywy Pagespeed do każdego pliku konfiguracyjnego bloku serwera, aby włączyć Pagespeed na każdym z nich.
Ostatnia dyrektywa ustawiła CoreFilters jako poziom przepisywania. PageSpeed oferuje 3 poziomy przepisywania: CoreFilter, PassThrough i OptimizeForBandwidth. Wartość domyślna to CoreFilter, ponieważ zawiera filtry uważane za bezpieczne dla większości witryn.
CoreFilter zawiera następujące filtry.
add_head
combine_css
combine_javascript
convert_meta_tags
extend_cache
fallback_rewrite_css_urls
flatten_css_imports
inline_css
inline_import_to_link
inline_javascript
rewrite_css
rewrite_images
rewrite_javascript
rewrite_style_attributes_with_urlZapisz i zamknij plik konfiguracyjny bloku serwera. Następnie załaduj ponownie Nginx.
sudo systemctl reload nginx8. Sprawdź, czy PageSpeed działa
Przejdź do swojej witryny. Odśwież kilka razy, a następnie sprawdź źródło strony. Naciśnij klawisz Ctrl+F i wyszukaj opcję szybkość strony. Zobaczysz, że wiele zasobów Twojej witryny zostało przetworzonych przez pagespeed. Niektóre pliki css i pliki javascript są połączone w jeden plik. Jeśli korzystasz z przeglądarki Google Chrome, zobaczysz, że zdjęcia w Twojej witrynie zostały przekonwertowane do formatu webp. webp może znacznie zmniejszyć rozmiar pliku obrazu.
Działanie ngx_pagespeed możesz także sprawdzić, porównując test szybkości swojej witryny.
Również na swoim serwerze możesz wydać następujące polecenie:
curl -I -p http://your-domain.com| grep X-Page-SpeedZobaczysz X-Page-Speed i numer jego wersji.
X-Page-Speed: 1.13.35.2-74239. Powstrzymaj Nginx przed aktualizacją
Jeśli w repozytorium dostępna jest nowsza wersja Nginx, polecenie apt-get upgrade domyślnie zaktualizuje Nginx, a moduł ngx_pagespeed zniknie. Musimy więc uniemożliwić aktualizację Nginx. Można to osiągnąć za pomocą następującego polecenia:
sudo apt-mark hold nginxAby pokazać, jakie pakiety są przechowywane:
apt-mark showholdNiektóre dyrektywy dotyczące szybkości strony, które możesz chcieć dodać w plikach konfiguracyjnych bloków serwera Nginx, których nie ma w CoreFilters.
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters insert_dns_prefetch;Nie zapomnij ponownie załadować Nginx po zmodyfikowaniu plików konfiguracyjnych bloku serwera.
Aby uzyskać szczegółowe wyjaśnienie każdego filtra, przejdź do strony Filtr Google PageSpeed.
Komentarze, pytania lub sugestie są zawsze mile widziane. Jeśli ten post był dla Ciebie przydatny, 🙂 udostępnij go znajomym w mediach społecznościowych! Czekaj na więcej samouczków dotyczących Linuksa.

