Apache เปิดใช้งานผู้ปฏิบัติงาน mpm


10

ฉันได้กำหนดค่า FastCGI และ PHP5-FPM ให้ทำงานบน Ubuntu ซึ่งทำงานได้ดี

แต่ฉันติดตั้งโมดูล"apache2 คนงาน mpm"และต้องการกำหนดค่าและแทนที่"prefork mpm"ซึ่งเป็นค่าเริ่มต้นใน apache2

ทั้งหมดที่ฉันพบคือใน CentOS ที่/etc/sysconfig/httpdเพิ่งวางHTTPD=/usr/sbin/httpd.workerจะเปิดใช้งาน"ผู้ปฏิบัติงาน mpm"

  1. เราจะเปิดใช้งาน "worker mpm" ใน Ubuntu ได้อย่างไร

  2. นอกจากนี้เมื่อฉันแสดงรายการโมดูลที่รวบรวมของ apache "/usr/sbin/apachectl -l"มันจะไม่แสดงรายการ"prefork.c"ซึ่งกล่าวว่าเป็นรายการตั้งแต่เราใช้ตามค่าเริ่มต้น แต่เมื่อฉัน"/usr/sbin/apache2 -V | grep MPM"แสดง"Server MPM: prefork"บางคนสามารถอธิบายเรื่องนี้ได้ไหม

$ / usr / sbin / apache2 -V | grep MPM

Server MPM:     prefork

phpinfo ();

Server API :    FPM/FastCGI

คำตอบ:


29

หลังจากเวลาทำงานฉันก็ทำเอง คุณสามารถค้นหาขั้นตอนด้านล่าง

ตรวจสอบ apache MPM ที่กำลังทำงานอยู่:

apachectl -V | grep -i mpm

Result:
Server MPM:     prefork

รายการโมดูล MPM ที่ใช้งานได้ (ต้องแน่ใจว่า mpm_worker อยู่ในรายการ)

ls /etc/apache2/mods-available/mpm*

Result:
/etc/apache2/mods-available/mpm_event.conf  /etc/apache2/mods-available/mpm_prefork.conf  /etc/apache2/mods-available/mpm_worker.conf
/etc/apache2/mods-available/mpm_event.load  /etc/apache2/mods-available/mpm_prefork.load  /etc/apache2/mods-available/mpm_worker.load

รายการโมดูล MPM ที่เปิดใช้งาน (หากไม่ได้เปิดใช้งาน mpm_worker เราควรเปิดใช้งานและปิดการใช้งานโมดูล mpm_prefork)

ls -l /etc/apache2/mods-enabled/mpm*

Result:
/etc/apache2/mods-enabled/mpm_prefork.conf -> ../mods-available/mpm_prefork.conf
/etc/apache2/mods-enabled/mpm_prefork.load -> ../mods-available/mpm_prefork.load

ปิดใช้งานโมดูล MPM_PREFORK

a2dismod mpm_prefork

เปิดใช้งานโมดูล MPM_WORKER

a2enmod mpm_worker

เพื่อตรวจสอบว่า Apache ทำงานบน MPM WORKER หรือไม่

apachectl -V | grep -i mpm

Result:
Server MPM:     worker

หากคุณได้รับข้อผิดพลาดนี้หลังจากดำเนินการคำสั่งเหล่านี้:

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

ลองลบแพ็คเกจ libapache2:

apt-get remove libapache2-mod-php5

2
ปฏิบัติตามคำสั่ง แต่รับสิ่งนี้: * การรีสตาร์ทเว็บเซิร์ฟเวอร์ apache2 [ล้มเหลว] * การทดสอบ apache2 ล้มเหลว เอาต์พุตของการทดสอบการกำหนดค่าคือ: AH00534: apache2: ข้อผิดพลาดการกำหนดค่า: โหลด MPM มากกว่าหนึ่งตัว การกระทำ 'configtest' ล้มเหลว บันทึกข้อผิดพลาด Apache อาจมีข้อมูลเพิ่มเติม
neobie

สมบูรณ์แบบ :) มันใช้งานได้สำหรับฉัน
chirag jagani

มันกำลังให้ข้อผิดพลาด "Apache กำลังใช้ MPM แบบเธรด แต่โมดูล PHP ของคุณไม่ได้รวบรวมเป็น threadsafe คุณต้องคอมไพล์ PHP ใหม่" และลบ libapache2-mod-php5 ไม่ได้ช่วยอะไรเช่นกัน
iCyborg

2

Apache กำลังใช้ MPM แบบเธรด แต่โมดูล PHP ของคุณไม่ได้รับการรวบรวมให้เป็น threadsafe คุณต้องคอมไพล์ PHP อีกครั้ง


0

หากคุณได้รับข้อผิดพลาดนี้หลังจากดำเนินการคำสั่งเหล่านี้:

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

ลองลบแพ็คเกจ libapache2:

apt-get remove libapache2-mod-php7.0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.