Opisałem już jak postawić serwer WWW (Apache2, MySQL, phpMyAdmin), jak zamienić PHP-MOD na PHP-FPM, oraz jak uruchomić serwer WWW oparty o Nginx (z PHP-FPM).

Opisałem też jak uruchomić stronę z wbudowanymi statystykami dla serwera Apache2, oraz Nginx. I tak dziś mnie naszło, że chyba zapomniałem o jeszcze jednej stronie tego typu – stronie ze statystykami serwera PHP-FPM, co zamierzam właśnie nadrobić…

PHP: Parametry pracy usługi

W tym poradniku postaram się w prosty i przystępny sposób (czyli jak zwykle ;-)) opisać, jak uruchomić standardową (wbudowaną) w PHP-FPM stronę ze statusem pracy usługi dla webserwerów Apache2 i Nginx.

Konfiguracja PHP-FPM

Zacznę od tego, co jest wspólne dla tych 2 webserwerów, czyli aktywacja odpowiedniej opcji w ustawieniach PHP-FPM:

sudo nano /etc/php5/fpm/pool.d/www.conf

W tym pliku szukamy:

;pm.status_path = /status

Następnie usuwamy znak średnika, tak by odkomentować:

pm.status_path = /status

Możecie od razu zmienić adres URL z „status”, na jakiś inny, tak by nie kolidowało z innymi stronami statusów (np. Apache2 czy Nginx). Na potrzeby tego poradnika niech to będzie:

pm.status_path = /status-php

Zapisujemy, i restartujemy usługę:

sudo service php5-fpm restart

Połowa pracy przed nami, teraz musimy jeszcze skonfigurować nasz webserwer:

Konfiguracja Apache2

Jeśli korzystamy z Apache2, to przystępujemy do edycji pliku strefy naszego serwera (plik w którym definiujemy parametry strony/domeny), np.:

sudo nano /etc/apache2/sites-available/000-default.conf

I między:

<VirtualHost *:80>

i

</VirtualHost>

dodajemy:

<LocationMatch /status-php>
SetHandler php5-fcgi-virt
Action php5-fcgi-virt /php5-fcgi virtual
Deny from all
Allow from 127.0.0.1
Allow from [KOLEJNY UPRAWNIONY ADRES IP]
</LocationMatch>

Zapisujemy, i restartujemy Apache2:

sudo service apache2 restart

Lub tylko odświeżamy konfigurację:

sudo service apache2 reload

Strona ze statusem usługi powinna w tym momencie działać pod adresem:

http://[domena lub adres IP]/status-php

Jeśli otrzymujecie błąd 403 (odmowa dostępu), sprawdźcie, czy na liście dozwolonych adresów znajduje się Wasz adres IP, gdyż ze względów bezpieczeństwa blokujemy dostęp do statystyk z nieautoryzowanych adresów IP (nie jest to jakieś specjalnie duże zagrożenie, ale dobrą praktyką jest przekazywanie na zewnątrz do publicznego odczytu jak najmniej informacji, bo nigdy nie wiadomo jaka przyda się atakującemu).

Konfiguracja Nginx

Jeśli korzystamy z Nginx, to i tym razem przystępujemy edycji pliku strefy naszego serwera (plik w którym definiujemy parametry strony/domeny), np.:

/etc/nginx/sites-enabled/default
Ze względu na zmianę w konfiguracji FastCGI/PHP w nowych wersjach webserwera Nginx dokonałem aktualizacji tego wpisu – komentując wpis dla Nginx 1.2.1 (np. Debian 7 Wheezy), i dodając wpis dla Nginx 1.6.1+ (Debian 8 Jessie).

Pamiętaj by wybrać wpis odpowiedni dla swojej konfiguracji – więcej na ten temat w tym wpisie…

I między:

server {

i

}

dodajemy:

location /php-status {
access_log off;
allow 127.0.0.1;
allow [KOLEJNY UPRAWNIONY ADRES IP]
deny all;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
# Nginx 1.2.1:
#include fastcgi_params;
# Nginx 1.6.1+:
include fastcgi.conf;
# Więcej informacji w tabelce w tym wpisie
}

Zapisujemy, i restartujemy Nginx:

sudo service nginx restart

Lub tylko odświeżamy konfigurację:

sudo service nginx reload

Strona ze statusem usługi powinna w tym momencie działać pod adresem:

http://[domena lub adres IP]/ping-php

Przykładowa strona z parametrami pracy usługi:

pool: www
process manager: xxx
start time: 06/Nov/2015:08:07:46 +0100
start since: xxx
accepted conn: yyy
listen queue: x
max listen queue: x
listen queue len: x
idle processes: x
active processes: x
total processes: x
max active processes: x
max children reached: x
slow requests: x

Jeśli otrzymujecie błąd 403 (odmowa dostępu), sprawdźcie, czy na liście dozwolonych adresów znajduje się Wasz adres IP, gdyż ze względów bezpieczeństwa blokujemy dostęp do statystyk z nieautoryzowanych adresów IP (nie jest to jakieś specjalnie duże zagrożenie, ale dobrą praktyką jest przekazywanie na zewnątrz do publicznego odczytu jak najmniej informacji, bo nigdy nie wiadomo jaka przyda się atakującemu).

PHP-FPM: Status pracy usługi (ping-pong)

A skoro przy stronie z parametrami pracy usługi PHP-FPM jesteśmy, to warto przedstawić jeszcze jedną funkcję z tym związaną, dzięki której wprawdzie nie otrzymamy żadnych szczegółowych informacji, ale za każdym razem, gdy wywołamy stronę otrzymamy ten sam tekst (pong), który świadczy o tym, że nasz webserwer (w tym PHP) działa – idealne do zdalnego i automatycznego monitorowania pracy serwera.

Z racji tego, że konfiguracja jest bardzo (naprawdę bardzo) podobna, możecie mieć miejscami wrażenie, że już to czytaliście ;-)

Konfiguracja PHP-FPM

Ponownie zacznę od tego, co jest wspólne dla tych 2 webserwerów, czyli aktywacja odpowiedniej opcji w ustawieniach PHP-FPM:

sudo nano /etc/php5/fpm/pool.d/www.conf

W tym pliku szukamy:

;ping_path = /ping

Następnie usuwamy znak średnika, tak by odkomentować:

ping_path = /ping

Możecie od razu zmienić adres URL z „status”, na jakiś inny, tak by nie kolidowało z innymi stronami statusów (np. Apache2 czy Nginx). Na potrzeby tego poradnika niech to będzie:

ping_path = /ping-php

Jeśli chcecie zmienić również odpowiedź (wyświetlany tekst) wystarczy zmodyfikować parametr:

;ping.response = pong

na:

ping.response = webinsider

Zapisujemy, i restartujemy usługę:

sudo service php5-fpm restart

Połowa pracy przed nami, teraz musimy jeszcze skonfigurować nasz webserwer:

Konfiguracja Apache2

Jeśli korzystamy z Apache2, to przystępujemy do edycji pliku strefy naszego serwera (plik w którym definiujemy parametry strony/domeny), np.:

sudo nano /etc/apache2/sites-available/000-default.conf

I między:

<VirtualHost *:80>

i

</VirtualHost>

dodajemy:

<LocationMatch /ping-php>
SetHandler php5-fcgi-virt
Action php5-fcgi-virt /php5-fcgi virtual
Allow from all
#Deny from all
#Allow from 127.0.0.1
#Allow from [KOLEJNY UPRAWNIONY ADRES IP]
</LocationMatch>

Zapisujemy, i restartujemy Apache2:

sudo service apache2 restart

Lub tylko odświeżamy konfigurację:

sudo service apache2 reload

Strona ze statusem usługi powinna w tym momencie działać pod adresem:

http://[domena lub adres IP]/ping-php

W przeglądarce – jeśli wszystko działa poprawnie – zobaczycie tekst:

pong

Z racji tego, że w tym przypadku właściwie nie przesyłamy żadnych informacji poza tym, że strona działa – ustawiłem stronę jako dostępną dla każdego, z dowolnego adresu IP, dzięki czemu możecie wykorzystać ją do sprawdzania/monitorowania pracy Waszego serwera (oczywiście w każdej chwili możecie to zmienić, jako komentarze zostawiłem odpowiednie opcje).

Konfiguracja Nginx

Jeśli korzystamy z Nginx, to również tym razem przystępujemy edycji pliku strefy naszego serwera (plik w którym definiujemy parametry strony/domeny), np.:

/etc/nginx/sites-enabled/default

I między:

server {

i

}

dodajemy:

location /ping-php {
access_log off;
allow all;
#allow 127.0.0.1;
#allow [KOLEJNY UPRAWNIONY ADRES IP]
#deny all;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
# Nginx 1.2.1:
#include fastcgi_params;
# Nginx 1.6.1+:
include fastcgi.conf;
# Więcej informacji w tabelce w tym wpisie
}

Zapisujemy, i restartujemy Nginx:

sudo service nginx restart

Lub tylko odświeżamy konfigurację:

sudo service nginx reload

Strona ze statusem usługi powinna w tym momencie działać pod adresem:

http://[domena lub adres IP]/ping-php

W przeglądarce – jeśli wszystko działa poprawnie – zobaczycie tekst:

pong

Z racji tego, że w tym przypadku właściwie nie przesyłamy żadnych informacji poza tym, że strona działa – ustawiłem stronę jako dostępną dla każdego, z dowolnego adresu IP, dzięki czemu możecie wykorzystać ją do sprawdzania/monitorowania pracy Waszego serwera (oczywiście w każdej chwili możecie to zmienić, jako komentarze zostawiłem odpowiednie opcje).

PS. Można skonfigurować obie strony za pomocą wspólnego wpisu, ale ze względu na rożne uprawnienia dostępu dla rożnych informacji zazwyczaj korzystam z nich tak jak w tym poradniku, czyli rozdzielnie.

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk