Mnohí používajú apache2 ako webový server. Málokto však rozmýšľa o optimalizácii jeho výkonu, čo priamo ovplyvňuje rýchlosť načítania stránok webu, rýchlosť spracovania skriptov (najmä php) a taktiež zvyšuje zaťaženie CPU a zvyšuje objem využívanej RAM.
Tento manuál by mal pomôcť začiatočníkom (a nielen nim) používateľom.
Všetky nižšie uvedené príklady boli použité na Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Takže, začnime.
1. Deaktivácia nepoužívaných modulov
Prvou metódou je banálne vypnutie modulov, ktoré nepoužívate:
Zoznam aktuálne používaných modulov môžete získať príkazom:
apache2ctl -MNa deaktiváciu modulu sa používa príkaz:
a2dismod *názov modulu*Naopak, na aktiváciu modulu sa používa príkaz:
a2enmod *názov modulu*Všimnite si, že pri použití a2dismod, názov modulu je potrebné písať bez samotného slova modul.
Napríklad, ak ste vo výstupe príkazu apache2ctl -M videli proxy_module, tak na jeho deaktiváciu je potrebné použiť príkaz — a2dismod proxy
Najviac system zaťažujúcimi modulmi (z osobnej skúsenosti) sú:
- PHP, Ruby, Perl a iné moduly pre rôzne skriptovacie jazyky
- SSL
- Rewrite
- CGI
Takže v prípadoch, keď tieto moduly nepotrebujete, odporúčam ich vypnúť.
Taktiež, po deaktivácii akéhokoľvek modulu, odporúčam použiť príkaz — apache2ctl configtest, ktorý skontroluje konfiguráciu používaných stránok a ak bol niektorý z deaktivovaných modulov pre ne potrebný, vyhodí chybu.
2. Zmena MPM (Multi-Processing Module) a použitie php-fpm
Predvolene, po inštalácii, apache2 používa MPM Prefork (1 vlákno na 1 spojenie), čo výrazne znižuje výkon, ale zlepšuje stabilitu a bezpečnosť.
Pre optimalizáciu výkonu odporúčam používať MPM Worker, ktorý umožňuje používať súčasne viac vlákien na jedno spojenie.
Na jeho aktiváciu použijeme nasledujúce príkazy:
a2dismod mpm_prefork \/\/Deaktivujeme prefork
a2dismod php7.3 \/\/Deaktivujeme modul php, ktorý závisí od prefork
a2enmod mpm_worker \/\/Aktivujeme worker
Avšak pri použití Worker sa môžete stretnúť s problémom, pretože modul php7.3 závisí od modulu Prefork.
Aby sme vyriešili tento problém, nainštalujeme modul php7.3-fpm, ktorý bude slúžiť na spracovanie php skriptov:
apt-get update && apt-get install php7.3-fpm // Inštalujeme
systemctl enable php7.3-fpm && systemctl start php7.3-fpm // Pridávame do automatického spúšťania a spúšťame
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf // Aktivujeme modul a jeho konfiguráciu
Je potrebné poznamenať, že použitie php-fpm tiež zníži množstvo pamäte RAM používané procesom apache2 a trochu urýchli spracovanie php skriptov.
3. Záver
Takže takýmito jednoduchými krokmi sme dokázali optimalizovať výkon a znížiť záťaž na zariadení (v tomto prípade RPI3).
Samozrejme, existuje stovky ďalších možností optimalizácie, ako napríklad zapnutie kompresie (čo je naozaj užitočné, ale väčšinou už je predvolene zapnuté), zmenu parametrov (konfiguračných súborov) MPM, vypnutie HostnameLookups a podobne, ale v tomto článku som sa snažil zachytiť práve tie body, ktoré mi najviac pomohli, a dúfam, že pomôžu aj iným.
Zdroj: habr.com
