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.

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 ustawieniemDeflateCompressionLevel(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!

Dzięki za odpowiedź, wszystko jasne :)

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.030
BTC 67462.12
ETH 2623.62
USDT 1.00
SBD 2.67