tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

PHP-FPM: Status-sivu

Sisällys

Kaikki prosessit vaativat seuraamista, oli kyse sitten webhotellista tai virtuaaliserveristä. Webhotellissa olevalle sivustolle riittää usein pelkästään tieto siitä, että sivusto on ylipäätään pystyssä. Riittävyys johtuu siitä, että oikeastaan mitään ei pysty eikä voi säätää itse. Virtuaalipalvelimella sen sijaan on syytä valvoa enemmän, koska on usempi asia, joka voi mennä rikki. Seurantaa kannattaa tehdä myös siksi, että saa perustietoa virityksiin. Viritykset eivät ole pelkkiä tuunauksia tuunauksen takia, vaan pyrkimystä saada sivustoille enemmän nopeutta, tehokkuutta sekä toimintavarmuutta.

Monit on ehdoton valinta. Ei pelkästään siksi, että se on ilmainen (joka on etu itsessäänkin), vaan koska se saa asetettua seuraamaan lähes mitä tahansa palvelimella pyörivää prosessia. Aina sekään ei riitä, vaan tarvittaisiin enemmän detaljeja.

Tarkemman datan lukeminen vaatii toki ymmärrystä siitä mitä numerot tarkoittavat sekä osaamista, että tietää mitä niiden perusteella olisi muutettava. Mutta se kuuluu oppimiskäyrään ja on oivallettava, että ilman dataa ei ole kannustetta opetella ja ottaa asioista selvää.

PHP-FPM on tyypillinen toiminto, joka vaatii muokkausta. Sen perusta, tavallinen PHP, ei koskaan toimi sellaisenaan pakasta vedettynä. On muutettava asetuksia ainakin sen verran, että sivustolle saa siirrettyä yli 2MB tiedostoja. PHP-FPM vaatii vastaavat säädöt, muuten sillä ei suuremmin verkkosivuston nopeutta ja tehoa paranneta.

Monit kertoo onko PHP-FPM toiminnassa ja paljonko se vie muistia. Oleellista, kun seurataan sivuston yleistä toimintaa. Jos PHP kaatuu, niin sivustotkin kaatuvat. Mutta Monit ei kerro käyttääkö PHP-FPM mitenkään järkevästi serverin resursseja. Tuhlaako se muistia varaamalla sitä kuitenkaan käyttämättä RAM:ia mihinkään. Vai onko se liian ahtaalla ja joutuu toimimaan kuin tehoton cache lopettaessaan prosesseja vain siksi, että sille on annettu tilaa liian vähän.

Tärkeimmät työkalut löytyvät toku Linuxin työkalupakista. Mutta kun tarvitaan nopea ja helposti luettava läpileikkaus, niin sitä et helpolla SSH:n kautta saavutakaan.

PHP-FPM tarjoaa siihen työkalun. Saat helpolla status-sivun – kunhan sinulla on serverinä Nginx. Status-sivun saa nykyään ilmeisesti toimimaan myös Apachen kautta, aiemmin se ei onnstunut. Mutta jos sinulla on verkkosivut Apachen takana, niin tulit valitettavasti väärään paikkaan ja joudut googlettamaan lisää. Minulla ei ole hajuakaan miten se onnistuisi. Mitä jos vaihtaisit Nginxiin? Siitä saisi paljonkin etua (rehellisesti sanottuna, molemmissa on puolensa).

Status

Avataan PHP-FPM:n www-poolin asetukset:

nano /etc/php/7.3/fpm/pool.d/www.conf

Scrollaa lähes alas asti ja poista puolipiste ; rivistä

;pm.status_path = /status

/status on se ”sivu”, jolla tilastoja näytetään. Se ehkä kannattaa muuttaa, koska osa yli-innokkaista hakkerin aluista kolkuttelee status sivua ehtiessään. Sivu itsessään ei paljasta kuin ehkä hieman ylipositiiviset selitykset omista kävijämääristä, mutta on kuitenkin hölmöä paljastaa enemmän tietoa kuin mitä muutoinkin näkyy.

Tallenna ja poistu.

Tuo ei vielä näytä selaimessa tai SSH:ssa curlilla mitään. Se täytyy kytkeä johonkin domainiin. Avaa Nginxissä haluamasi virtual hostin conf:

nano /etc/nginx/sites-available/domain.tld

Kopioi tämä server lohkoon, mielellään 443 osaan, niin saat SSL:n käyttöön, ja muuta tiedot, kuten äsken asetettu sivun nimi ja oma IP-osoitteesi;


location ~ /status {
   access_log off;
   allow 127.0.0.1;
   allow oma.ip.numero;
   deny all;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}

Nyt sivua ei saa auki kuin SSH:ssa localhostista ja selaimella omasta IP-osoitteestasi. Toki voit lisäturvan takia asettaa myös käyttäjätunnus/salasana-parin – googleta miten se tapahtuu, jos et tiedä. Itse tyydyn IP-rajoitukseen, koska sivu ei kuitenkaan paljasta mitään valtiosalaisuuksia ja tunnuksia on muutenkin liikaa muistettavaksi.

Anna selaimeen url:

https://www.domain.tld/status?html&all

niin saat hieman kuvakaappausta kauniimman layoutin.

Jos teet töitä komentorivipuolella, niin curl toimii vastaavasti.