Mnogi uporabljajo apache2 kot spletni strežnik. Vendar pa se redko kdo zamisli nad optimizacijo njegovega delovanja, kar neposredno vpliva na hitrost nalaganja spletnih strani, hitrost obdelave skript (zlasti php), ter povečano obremenitev CPU in povečanje porabe RAM-a.
Tako naj bi naslednji priročnik pomagal tako začetnikom (kot tudi drugim) uporabnikom.
Vsi spodaj navedeni primeri so bili uporabljeni na Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.
Torej, začnimo.
1. Onemogočanje nepotrebnih modulov
Prva metoda je preprosto onemogočanje modulov, ki jih ne uporabljate:
Seznam trenutno uporabljenih modulov lahko vidite s ukazom:
apache2ctl -MZa onemogočanje modula uporabite ukaz:
a2dismod *ime modula*Samo za vključitev modula uporabite ukaz:
a2enmod *ime modula*Upoštevajte, da pri uporabi a2dismod, je treba ime modula napisati brez besede modul.
Na primer, če ste v izhodu ukaza apache2ctl -M videli proxy_module, potem za njegovo onemogočanje uporabite ukaz — a2dismod proxy
Najbolj obremenjujoči moduli (po osebnih izkušnjah) so:
- PHP, Ruby, Perl in drugi moduli za različne skriptne jezike
- SSL
- Rewrite
- CGI
Tako da v tistih primerih, ko teh modulov ne potrebujete, priporočam, da te module onemogočite.
Poleg tega, po onemogočenju katerega koli modula, priporočam uporabo ukaza — apache2ctl configtest, ki preveri konfiguracijo uporabljenih spletnih mest in če je kateri od onemogočenih modulov potreboval za njih, bo izdal napako.
2. Menjava MPM (Multi-Processing Module) in uporaba php-fpm
Privzeto, po namestitvi, apache2 uporablja MPM Prefork (1 nit na 1 povezavo), kar znatno znižuje zmogljivost, hkrati pa izboljšuje stabilnost in varnost.
Za optimizacijo zmogljivosti priporočam uporabo MPM Worker, ki omogoča uporabo več niti na eno povezavo.
Za vključitev uporabite naslednje ukaze:
a2dismod mpm_prefork //Onemogočamo prefork
a2dismod php7.3 //Onemogočamo modul php, ki je odvisen od prefork
a2enmod mpm_worker //Vključujemo worker
Vendar pa se lahko pri uporabi Worker srečate z težavo, saj je modul php7.3 odvisen od modula Prefork.
Za rešitev tega problema bomo namestili modul php7.3-fpm, ki bo uporabljen za izvajanje php skript.
apt-get update && apt-get install php7.3-fpm // Namestitev
systemctl enable php7.3-fpm && systemctl start php7.3-fpm // Dodamo v avtomatski zagon in zaženemo
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf // Vklopimo modul in njegov konfiguracijski file
Opaziti je treba, da uporaba php-fpm tudi zmanjša količino RAM-a, ki ga uporablja proces apache2, in nekoliko pospeši izvajanje php skript.
3. Zaključek
Tako smo s temi preprostimi koraki uspeli optimizirati zmogljivost in zmanjšati obremenitev naprave (v tem primeru RPI3).
Seveda obstaja še stotine drugih možnosti optimizacije, kot so omogočanje stiskanja (kar je v resnici koristno, a je v večini primerov že privzeto vključeno), spreminjanje parametrov (konfiguracijskih datotek) MPM, onemogočanje HostnameLookups itd., vendar sem v tem članku želel izpostaviti predvsem tiste točke, ki so mi največ pomagale, in upam, da bodo pomagale tudi drugim.
Izvor: habr.com
