Konu güvenli PHP ile Ubuntu 14.04'teki olay MPM Apache 2.4 nasıl etkinleştirilir?


25

Varsayılan apache kurulumunun yeni olay MPM'sini kullanmasını umarak Ubuntu Server 14.04'e yükselttim, fakat bunun yerine eski bellek tüketen prefork'u buldum.

Arch MPM'de etkinlik MPM'yi başarıyla kurdum, ancak Ubuntu'da bunu yapamıyorum. Ben almaya devam ediyorum:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP

Zaten yükledim php-fpmve kullanmak için apache2'yi yapılandırdım, ancak apache2'nin yapılandırma dosyaları Ubuntu'da farklı olduğundan, doğru yerde yapıp yapmadığımdan emin değilim.

PHP iş parçacığı güvenli yapmak nasıl apache2 event-mpm kullanmak için herhangi bir fikir? (elbette php'yi elle tekrar derlemek zorunda kalmadan)

Yanıtlar:


39

Devre dışı bırakmak event MPMiçin yapabilirsiniz sudo a2dismod mpm_eventve bundan sonra etkinleştirmek için preforkyapmanız gerekir sudo a2enmod mpm_prefork.

Sonunda apache'yi yeniden başlatın:

sudo service apache2 restart

3
Orada olmalısın ... Burada değil .. orada ... Cevaplar listesinin üstünde.
Karma

2
Bu kabul edilen cevap olmalı! Bunu yaptıktan sonra sudo service apache2 restart
apache'yi

4
Bu, OP'nin sorduğu gibi MPM'nin nasıl etkinleştirileceği sorusuna nasıl cevap veriyor? OP'nin istediği şeyin tam tersini nasıl yapacağınızı açıklıyorsunuz.
Craig

2
@Mehraban, OP, "Etkinlik MPM'si nasıl etkinleştirilir?" Sözcüğü kelimesini sordu ve cevabınız "Etkinlik MPM'sini devre dışı bırak" dır. Bu nasıl kabul edilebilir bir cevap?
Nicolas Bouliane

1
@Mehraban Bu sorulan bir soru değil, bu yüzden Google’dan buraya gelen tüm trafik "X’in en iyi yolu X’e yapmaz" deniyor. Çikolatalı kurabiye yapmayı sorarsam, çikolatalı kurabiye tarifi bekliyorum.
Nicolas Bouliane

13

Bu benim için çalıştı.

Öncelikle bu paketin kurulu olup olmadığını kontrol edin:

dpkg -l | grep libapache2-mod-php5

Eğer varsa, sadece kaldırın:

apt-get remove libapache2-mod-php5

Bu doğru cevap!
DrSvanHay

6

Apache'nin PHP ile paralel olarak iletişim kurması için birçok yol kurabilirsiniz. Belki ek olarak fastcgi / php-fpm'ye eklenmiş eski mod_php (hala) vardır.

Apache'nizin çalışma zamanında hangi modülleri yüklediğini görebilirsiniz.

apache2ctl -M

Gerekirse, sudokök ayrıcalıklarını almak için kullanın . Eğer görürseniz php5_module (shared)Apache şu anda kullandığı modüller arasında, eski mod_php hala yüklü ve kullanmasını engeller sizi edilir mpm_workerveya mpm_event.


5
Sunucu başlatılamıyorsa mod almak için çalıştırılamıyor, sudo a2dismoddaha sonra devre dışı bırakılabilen modlar varsa listeyi görmek için sekme karakterine iki kez basın. Görüyorsanız, php5onu devre dışı bırakın.
pferrel

2

Benim için tamamen debian üzerinde çalışmaktan sonra:

  1. Önbeyi devre dışı bırak, etkinliği etkinleştir: a2dismod mpm_prefork && a2enmod mpm_event
  2. mod-php5'i kaldır: aptitude remove libapache2-mod-php5
  3. php_VHost cihazınızdaki her Seçeneğin tarafından bulunduğunu unutmayın <IfModule mod_php5.c></IfModule>; aksi halde apache yeniden başlatılmaz.
  4. yap service apache2 restart

1

Apache yapılandırma dosyanızın Load Modules bölümlerinde aşağıdakilere bakın:

LoadModule mpm_event_module modules/mod_mpm_event.so

Ve aşağıdaki modülle değiştirin:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

HAYIR, bunu yapma! Apache modüler bir yapıya sahiptir, dolayısıyla herhangi bir LoadModule Çizgisini konfigürasyonlarınızda değiştirmeniz gerekmez. Sadece yap a2dismod mpm_prefork && a2enmod mpm_event. Sonra apache'nizi yeniden başlatın, bitirdiniz.
suther

0

php5 modülü prefork mpm'ye ve prefork'u devre dışı bırakmak için php5'i devre dışı bırakmak zorunda.

debian altında, root olarak şunu yaptım:

prefork mpm'yi devre dışı bırak

a2dismod mpm_prefork

mpm olayını veya tercih ettiğiniz mpm'yi etkinleştirin. not mpm olayının apache 2.2 veya daha önceki sürümler için önerilmediğini öğrendim

a2enmod mpm_event

php5 modülü yükünü devre dışı bırakmak, ancak kaldırma işlemini kaldırmak için.

a2dismod php5

Elde edilen apache konfigürasyonunun genel doğruluğunu test etmek için. hataların yukarıda belirtilen cevaplara göre çözülmesi gerekir .

apache2ctl -t

apache'yi yeniden başlat

systemctl restart apache2

php hala gerekliyse, threadsafe sürümü kurulmalıdır. bakınız: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsd-12-0

iyi şanslar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.