थ्रेड सुरक्षित PHP के साथ Ubuntu 14.04 पर MPM Apache 2.4 ईवेंट सक्षम करने के लिए कैसे?


25

मैं उबंटू सर्वर 14.04 में अपग्रेड किया गया था जो उम्मीद कर रहा था कि डिफ़ॉल्ट अपाचे इंस्टॉलेशन नए इवेंट एमपीएम का उपयोग करेगा, लेकिन इसके बजाय मुझे पुराने मेमोरी-ईटिंग प्रीफॉर्क मिलते हैं।

मैंने आर्क लिनक्स में ईवेंट एमपीएम को सफलतापूर्वक सेट किया है, लेकिन मैं उबंटू पर ऐसा करने में विफल रहा हूं। मैं मिलता रहा:

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

मैं पहले से ही स्थापित है php-fpm, और इसे उपयोग करने के लिए apache2 कॉन्फ़िगर किया गया है, लेकिन चूंकि apache2 के लिए कॉन्फ़िगर की गई फाइलें उबंटू पर अलग हैं, इसलिए मुझे यह बिल्कुल निश्चित नहीं है कि क्या मैं इसे सही जगह पर कर रहा हूं।

PHP थ्रेड को सुरक्षित बनाने के तरीके के बारे में कोई भी विचार इसलिए मैं apache2 event-mpm का उपयोग कर सकता हूं? (बेशक, मैन्युअल रूप से recompile php होने के बिना)

जवाबों:


39

अक्षम करने के लिए event MPM, आप कर सकते हैं sudo a2dismod mpm_eventऔर उसके बाद सक्षम करने के लिए prefork, आपको करना चाहिए sudo a2enmod mpm_prefork

अंत में पुनः आरंभ करें:

sudo service apache2 restart

3
आपको उत्तर सूची के शीर्ष पर ... वहाँ नहीं .. वहाँ ... होना चाहिए।
कर्मा

2
यह स्वीकृत उत्तर होना चाहिए! ऐसा करने के बाद अपाचे को पुनः आरंभ करना न भूलें:sudo service apache2 restart
Reeno

4
यह इस सवाल का जवाब कैसे देता है कि एमपीएम को कैसे सक्षम किया जाए, जैसे ओपी ने पूछा? आप यह बता रहे हैं कि ओपी ने जो मांगा था, उसके विपरीत कैसे किया जाए।
क्रेग

2
@ मेहरबान, ओपी ने शब्द "ईवेंट एमपीएम को कैसे सक्षम करें?" के लिए शब्द पूछा, और आपका जवाब है "बस एमपी ईवेंट को अक्षम करें"। यह एक स्वीकार्य उत्तर कैसे है?
निकोलस बोलियान

1
@ मेहरबान वह सवाल नहीं है जो हालांकि पूछा गया था, इसलिए Google से यहां आने वाले सभी ट्रैफ़िक को "X करने का सबसे अच्छा तरीका X नहीं है" बताया जा रहा है। यदि मैं चॉकलेट कुकीज़ बनाने का तरीका पूछता हूं, तो मुझे चॉकलेट कुकी बनाने की विधि की उम्मीद है।
निकोलस बूलियान

13

इसने मेरे लिए काम किया।

पहले जाँच लें कि क्या आपके पास यह पैकेज स्थापित है:

dpkg -l | grep libapache2-mod-php5

यदि आपके पास यह है तो इसे हटा दें:

apt-get remove libapache2-mod-php5

यह सही जवाब है!
DrSvanHay

6

आप समानांतर में PHP के साथ संवाद करने के लिए Apache के लिए कई तरीके स्थापित कर सकते हैं। हो सकता है कि आपके पास (अभी भी) पुराने mod_php स्थापित हो, इसके अलावा fastcgi / php-fpm।

आप देख सकते हैं कि अपाचे ने कौन से मॉड्यूल को रनटाइम पर लोड किया है

apache2ctl -M

यदि आवश्यक हो, तो sudoरूट विशेषाधिकार प्राप्त करने के लिए उपयोग करें। यदि आप php5_module (shared)अपने अपाचे के वर्तमान में उपयोग किए जा रहे मॉड्यूल के बीच देखते हैं , तो पुराने mod_php अभी भी स्थापित है और आपको उपयोग करने से रोकता है mpm_workerया mpm_event


5
यदि सर्वर प्रारंभ नहीं हो रहा है, sudo a2dismodतो mod प्राप्त करने के लिए उसे चला नहीं सकते, फिर कोशिश करें कि टैब सूची पर दो बार हिट करें यदि सूची को निष्क्रिय किया जा सकता है। यदि आप php5इसे व्यवहार्य देखते हैं ।
pferrel

2

मेरे लिए डेबियन पर पूरी तरह से काम करने के बाद:

  1. प्रीफ़ॉर्क अक्षम करें, ईवेंट सक्षम करें: a2dismod mpm_prefork && a2enmod mpm_event
  2. mod-php5 निकालें: aptitude remove libapache2-mod-php5
  3. इस बात से अवगत रहें कि आपके पास php_अपने VHost में प्रत्येक विकल्प को इनकैप्सुलेट करना है <IfModule mod_php5.c></IfModule>, अन्यथा अपाचे पुनः आरंभ नहीं होगा
  4. करना service apache2 restart

1

अपनी अपाचे कॉन्फ़िगरेशन फ़ाइल के लोड मॉड्यूल अनुभागों में निम्नलिखित को देखें:

LoadModule mpm_event_module modules/mod_mpm_event.so

और इसे निम्न मॉड्यूल से बदलें:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

नहीं, यह मत करो! अपाचे का निर्माण मॉड्यूलर है, इसलिए आपको किसी भी लोडमॉड्यूल-लाइन्स को अपने कॉन्फ़िगरेशन में बदलने की आवश्यकता नहीं है। ही करते हैं a2dismod mpm_prefork && a2enmod mpm_event। फिर अपनी अपाचे को पुनरारंभ करें, और आप कर रहे हैं।
सुथेर

0

php5 मॉड्यूल को prefork mpm की आवश्यकता है, और prefork को अक्षम करने के लिए, php5 को अक्षम करना होगा।

डेबियन के तहत, मैंने निम्नलिखित किया, जड़ के रूप में:

प्रीफ़ॉर्क mpm को अक्षम करें

a2dismod mpm_prefork

ईवेंट mpm या जो भी mpm आप पसंद कर सकते हैं सक्षम करें। ध्यान दें कि ईवेंट mpm को Apache 2.2 या उससे पहले के लिए अनुशंसित नहीं किया गया था

a2enmod mpm_event

php5 मॉड्यूल लोड को अक्षम करने के लिए, लेकिन स्थापना रद्द किए बिना।

a2dismod php5

परिणामी अपाचे विन्यास की समग्र शुद्धता का परीक्षण करने के लिए। उपरोक्त @ के उत्तर के अनुसार त्रुटियों का सामना करना पड़ेगा

apache2ctl -t

फिर से शुरू करें

systemctl restart apache2

अगर php को अभी भी जरूरत है, तो थ्रेडसेफ़ संस्करण को स्थापित किया जाना चाहिए। देखें: https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-freebsdd-0

सौभाग्य

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.