Uaktualniłem do Ubuntu Server 14.04, spodziewając się, że domyślna instalacja apache wykorzysta nowe zdarzenie MPM, ale zamiast tego znajduję starą wersję zajadającą pamięć.
Z powodzeniem skonfigurowałem zdarzenie MPM w Arch Linux, ale nie robię tego na Ubuntu. Ciągle otrzymuję:
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP
Już zainstalowałem php-fpm
i skonfigurowałem apache2, aby go używał, ale ponieważ pliki konfiguracyjne dla apache2 są inne w systemie Ubuntu, nie jestem pewien, czy robię to we właściwym miejscu.
Masz pomysł, jak zabezpieczyć wątek PHP, aby móc używać zdarzenia apache2 event-mpm? (oczywiście bez konieczności ręcznej ponownej kompilacji php)
sudo service apache2 restart
To zadziałało dla mnie.
Najpierw sprawdź, czy masz zainstalowany ten pakiet:
Jeśli go masz, po prostu go usuń:
źródło
Możesz zainstalować wiele sposobów równoległej komunikacji Apache z PHP. Może masz (nadal) zainstalowany stary mod_php, dodatkowo do fastcgi / php-fpm.
Możesz sprawdzić, które moduły załadował twój Apache w czasie wykonywania
W razie potrzeby użyj,
sudo
aby uzyskać uprawnienia roota. Jeśli widziszphp5_module (shared)
wśród modułów, których obecnie używa Apache, stary mod_php jest nadal zainstalowany i blokuje korzystanie zmpm_worker
lubmpm_event
.źródło
sudo a2dismod
następnie dwukrotnie nacisnąć znak tabulacji, aby zobaczyć listę modów, które można wyłączyć. Jeśli widziszphp5
to możliwe.Dla mnie następujące pełne prace nad Debianem:
a2dismod mpm_prefork && a2enmod mpm_event
aptitude remove libapache2-mod-php5
php_
opcję w VHost enkapsulowaną przez<IfModule mod_php5.c></IfModule>
, w przeciwnym razie apache nie uruchomi się ponownieservice apache2 restart
źródło
Poszukaj następujących informacji w sekcjach Ładowanie modułów pliku konfiguracyjnego apache:
I zamień go na następujący moduł:
źródło
a2dismod mpm_prefork && a2enmod mpm_event
. Następnie uruchom ponownie apache i gotowe.moduł php5 potrzebuje prefork mpm, a aby wyłączyć prefork, należy wyłączyć php5.
w ramach Debiana zrobiłem następujące, jako root:
wyłącz prefork mpm
włącz wydarzenie mpm lub dowolne preferowane mpm. Uwaga: znalazłem zdarzenie mpm nie było zalecane dla Apache 2.2 lub wcześniejszego
aby wyłączyć ładowanie modułu php5, ale bez dezinstalacji.
aby przetestować ogólną poprawność wynikowej konfiguracji apache. Błędy należałoby poradził sobie ze jak na odpowiedź z @sulther powyżej.
uruchom ponownie apache
w przypadku, gdy php jest nadal potrzebny, należy zainstalować wersję wątkowo bezpieczną. patrz: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0
powodzenia
źródło