• PHP-FPM dla Apache w CentOS i nie tylko

    dodany przez Przemysław Sikora

    Nie chciałbym się zbytnio rozpisywać się o bezpieczeństwie usług hostingowych, ponieważ temat ten był niejednokrotnie poruszany. Wolałbym skupić się nad lepszym (wydajniejszym) rozwiązaniem niż FastCGI o zastosowaniu którego w przypadku serwera Apache, pisaliśmy jakiś czas temu.
    Mam tu na myśli PHP-FPM (FastCGI Process Manager). Dostarcza on dokładniejszych logów błędów niż zwykłe FCGI oraz zapewnia większą wydajność / responsywność szczególnie w przypadku bardziej obciążonych strony. Więcej szczegółów tutaj. Czas przystąpić do instalacji i konfiguracji. Zakładam, że mamy zainstalowanego Apacha.

    yum install mod_fastcgi fcgi php-fpm

    Następnie konfigurujemy php-fpm, poprzez edycję pliku www.conf.

    vim /etc/php-fpm.d/www.conf

    Poniżej przykładowa konfiguracja
    [www]
    listen = 127.0.0.1:9000
    listen.allowed_clients = 127.0.0.1
    user = apache
    group = apache
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on
    php_value[session.save_handler] = files
    php_value[session.save_path] = /var/lib/php/session

    Zamiast nasłuchiwania na porcie 9000, można zastosować sockety, co jest wydajniejszym rozwiązaniem np. “listen = /usr/nginx/socks/www”. Startujemy php-fpm

    service php-fpm start

    Pamiętajmy o wyłączeniu wrapera FCGI w pliku “/etc/httpd/conf.d/fastcgi.conf”, poprzez zmianę wpisu
    FastCgiWrapper On na FastCgiWrapper Off. Następnie konfigurujemy vhost dla Apacha. Oto przykładowy:

    DocumentRoot /www/nasza-strona.pl/html
    ServerName nasza-strona.pl
    ErrorLog logs/nasza-strona.pl-error_log
    CustomLog logs/nasza-strona.pl-access_log common

    AddHandler php-fpm .php
    Action php-fpm /php-fpm
    Alias /php-fpm /usr/sbin/php-fpm
    FastCgiExternalServer /usr/sbin/php-fpm -host 127.0.0.1:9000

    Oczywiście następnie restartujemy, ale najpierw sprawdzamy, czy nie popełniliśmy jakiegoś błędu w konfiguracji.

    httpd -t

     

    service httpd restart

    Dla przetestowania warto utworzyć sobie plik np. info.php i umieścić w “DocumentRoot”:

    Jeśli wyświetliła się nam “słynna” strona diagnostyczno-informacyjna php a w polu “Server API” widnieje wpis “FPM/FastCGI”, to znaczy, że zrobiliśmy wszystko dobrze. W razie problemów, proszę pisać.

Dodaj komentarz

Warto odwiedzić
Valid XHTML 1.0 Transitional centos.com.pl- mapa strony