Linux Tutorial: Kompresja danych na serwerze Apache z mod_deflate

in #polish7 years ago

network-2402637_640.jpg

Wstęp

Mod_deflate to moduł pozwalający na zmniejszenie rozmiaru danych na serwerze Apache nim zostaną one wysłane do klienta. Dzięki zastosowaniu mod_deflate, wydajność dowolnego serwisu internetowego działającego na serwerze Apache może zostać znacznie zwiększona. Informacje na temat kondycji serwisu www można uzyskać za pomocą narzędzia PageSpeed, znajdującego się pod adresem: https://developers.google.com/speed/pagespeed/insights/.

Czego nauczę się w tym poradniku?

  • Jak włączyć i skonfigurować moduł mod_deflate

Wymagania

  • System operacyjny z rodziny UNIX/Linux
  • Działający serwer Apache
  • Plik tekstowy do przetestowania działania kompresji

Poziom trudności

  • Łatwy

Jak włączyć i skonfigurować moduł mod_deflate?

Informacja: W niniejszym poradniku polecenia testowano w systemie operacyjnym Ubuntu 16.04.

Włączanie mod_deflate

Lista aktualnie włączonych modułów Apache może zostać wyświetlona za pomocą polecenia apachectl.

$ sudo apachectl -t -D DUMP_MODULES

Screen Shot 2018-03-09 at 11.29.46.png

W celu sprawdzenia czy moduł mod_deflate jest aktywny, należy zawęzić wyniki poprzedniego polecenia, stosując komendę grep.

$ sudo apachectl -t -D DUMP_MODULES | grep deflate

W otrzymanej informacji zwrotnej znajdować się będzie deflate_module (shared) jeżeli mod_deflate jest aktywny.

Screen Shot 2018-03-09 at 11.31.40.png

W sytuacji gdy moduł mod_deflate jest nieaktywny, należy w pierwszej kolejności upewnić się, że jest on dostępny.

$ ls /etc/apache2/mods-available | grep deflate

Screen Shot 2018-03-09 at 11.54.10.png

Dodatkowo koniecznym jest sprawdzenie czy w pliku /etc/apache2/mods-available/deflate.load linia:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

nie zawiera znaku # na jej początku. Jeżeli tak, powinien on zostać usunięty.

Aby aktywować moduł mod_deflate należy skorzystać z polecenia a2enmod.

$ sudo a2enmod deflate

Następnie należy przeładować konfigurację Apache.

$ sudo service apache2 reload

Konfiguracja

Konfiguracja modułu mod_deflate znajduje się w pliku /etc/apache2/mods-available/deflate.conf.

Przykład domyślnej konfiguracji znajduje się poniżej.



<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
        # these are known to be safe with MSIE 6
        AddOutputFilterByType DEFLATE text/html text/plain text/xml
        # everything else may cause problems with MSIE 6
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/xml
    </IfModule>
</IfModule>

Testowanie

Działanie kompresji możemy przetestować za pomocą narzędzia wget.

Jeżeli narzędzie nie jest dostępne w systemie, na którym przeprowadzamy testy, można je zainstalować (w systemie Debian/Ubuntu) za pomocą polecenia:

$ sudo apt-get install wget

Informacja: Na serwerze Apache, na którym została włączona kompresja potrzebny będzie przykładowy plik przy zastosowaniu, którego będzie możliwe sprawdzenie jej działania.

Aby sprawdzić rozmiar pliku bez kompresji, należy go pobrać z zastosowaniem narzędzia wget.

$ wget http://mydomain.com/myfile.txt

Screen Shot 2018-03-09 at 13.16.13.png

Rozmiar pliku może zostać wyświetlony za pomocą polecenia ls.

$ ls -lah

Screen Shot 2018-03-09 at 13.16.31.png

Jak widać na powyższym zrzucie ekranu, rozmiar pobranego, przykładowego pliku (bez kompresji) to ~ 60KB.

By sprawdzić rozmiar skompresowanego pliku, należy do polecenia wget dodać nagłówek Accept-Encoding: gzip.

$ wget --header="Accept-Encoding: gzip" http://mydomain.com/myfile.txt

Screen Shot 2018-03-09 at 13.16.52.png

W rezultacie, rozmiar skompresowanego pliku to ~ 17KB.

Screen Shot 2018-03-09 at 13.17.08.png

Moje inne publikacje

Szczegółowe prawa dostępu z ACL
Wysyłka poczty z narzędziem Sendmail
Synchronizacja danych z narzędziem Rsync
Zarządzanie zaporą sieciową z narzędziem UFW
Podtrzymywanie procesów z narzędziem Supervisor

Sort:  

Czy włączenie tego modułu mocno spowalnia samo działanie serwera? Mam na myśli to, że jak Apache2 dostaje zapytanie to musi skompresować każdy plik który zostanie odesłany.

DeflateCompressionLevel(w pliku konfiguracyjnym deflate.conf) na niższą wartość (gdzie 1 oznacza najniższy poziom kompresji), aby znaleźć balans pomiędzy kompresją, a obciążeniem procesora. Mam nadzieję, że to pomoże :) Pozdrawiam!Cześć @jarric, włączenie mod_deflate może obciążyć procesor i to całkiem mocno. Dodatkowo, domyślnie poziom kompresji ustawiony jest na wartość maksymalną (9). W celu optymalizacji działania serwera można poeksperymentować z ustawieniem

Dzięki za odpowiedź, wszystko jasne :)