मैं कैसे बताऊं कि यदि अपाचे चल रहा है (या चलाने के लिए कॉन्फ़िगर किया गया है) प्रीफ़ॉर्क या कार्यकर्ता के रूप में?
मैं कैसे बताऊं कि यदि अपाचे चल रहा है (या चलाने के लिए कॉन्फ़िगर किया गया है) प्रीफ़ॉर्क या कार्यकर्ता के रूप में?
जवाबों:
एमपीएम को संकलन समय पर कॉन्फ़िगर किया गया है। बाद में यह पता लगाने का एक तरीका मॉड्यूल में संकलित सूची है। उस सूची में चुने गए एमपीएम शामिल होंगे। लिस्टिंग को -l फ्लैग के साथ, अपाचे बाइनरी को पूरा करने के लिए पूरा किया जा सकता है।
andreas@halleck:~$ apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
andreas@halleck:~$
यहां हमें मॉड्यूल वर्करसी मिल गया है, इसलिए मैं वर्कर एमपीएम चला रहा हूं।
apache2ctl -Mसक्रिय मॉड्यूल को सूचीबद्ध करने के लिए उपयोग कर सकते हैं ।
Series8217 और एंडोल द्वारा दिए गए उत्तर दोनों गलत हैं।
सवाल था कि अगर अपाचे प्रीफ़ॉर्क या वर्कर चला रहे हैं तो कैसे बताएं । अन्य उत्तरों द्वारा दी गई सलाह केवल यह बताती है कि डिफ़ॉल्ट MPM क्या है (संकलित मॉड्यूल के आधार पर), यह नहीं कि क्या वर्तमान समय में डिफ़ॉल्ट या किसी अन्य विकल्प का उपयोग किया जा रहा है।
यदि httpd -Vप्रीफ़ॉर्क दिखाता है, तो इसका मतलब है कि प्रीफ़ॉर्क, संकलित-इन डिफ़ॉल्ट एमपीएम है। यह अपाचे कॉन्फ़िगरेशन फ़ाइल सेटिंग को बदलकर ओवरराइड किया जा सकता है, जैसा कि इस प्रक्रिया में दिखाया गया है:
/etc/sysconfig/httpdCentOS / RedHat पर)HTTPD=/usr/sbin/httpd.workerकौन सा MPM वास्तव में चल रहा है, इस प्रक्रिया का उपयोग करके दिखाया जा सकता है:
curl localhost/server-infohttpd -Vफिर से चलाएं - यह अभी भी पूर्वकर्म दिखाएगा, कार्यकर्ता नहींजमीनी स्तर:
httpd -V डिफ़ॉल्ट विकल्प दिखाता है, जो विकल्प वास्तव में उपयोग में नहीं हैकई पर जवाब हैं, कई वेब साइट कह रही हैं, यह httpd -Vबताने के लिए उपयोग करें कि क्या अपाचे प्रीफ़ॉर्क या कार्यकर्ता चला रहा है। वे सभी गलत हैं। अपने लिए देखने के लिए उपरोक्त प्रक्रिया आज़माएं।
उबंटू में 14.04
a2query -M
कहता है event, prefork,worker
आप के लिए सांकेतिक लिंक जोड़कर इसे बदल सकते हैं mpm_<chosen>से mods-availableकरने mods-enabledमें /etc/apache2।
एक समय में केवल एक की अनुमति है।
eventएम पी एम अपाचे की साइट, "केवल सक्रिय प्रसंस्करण के साथ कनेक्शन के लिए धागे लेने के लक्ष्य के साथ कार्यकर्ता एम पी एम का एक संस्करण" के अनुसार, है।
RedHat और व्युत्पन्न पर, बस लॉन्च करें topया ps auxhttpd प्रक्रिया नाम देखें:
httpd मतलब अपाचे प्रीफॉर्क के रूप में चल रहा हैhttpd.worker इसका मतलब है कि यह कार्यकर्ता के रूप में चल रहा हैRHEL / फेडोरा / आदि पर, चलाएं httpd -V। आपको कुछ आउटपुट मिलेंगे जिनमें निम्नलिखित शामिल हैं:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
यहाँ 'सर्वर MPM' 'Prefork' है, इसलिए मेरा सर्वर prefork MPM चला रहा है।
क्रिस जॉनसन सही है। Httpd.conf => पर जाएं इस पंक्ति को जोड़ें:
<Location /server-info>
SetHandler server-info
</Location>
पुनरारंभ करें अपाचे: /etc/init.d/httpd पुनरारंभ करें। फिर अपने ब्राउज़र द्वारा लोकलहोस्ट / सर्वर-इनफॉर्मेशन एक्सेस करें और एमपीएम नेम सेक्शन देखें ।
यहां एक और तरीका है जो मुझे उम्मीद है कि यह निर्धारित करने में विश्वसनीय होना चाहिए कि एमपीएम किस उपयोग में है। निम्नलिखित को अपने में जोड़ें httpd.conf:
<IfModule prefork.c>
Header append X-MPM prefork
</IfModule>
<IfModule worker.c>
Header append X-MPM worker
</IfModule>
फिर हेडर का उपयोग करके जांचें curl -I localhost | grep X-MPM।
सेंटो (या rhel) पर आप इस कमांड को चला सकते हैं:
ps -ef | grep httpd
यदि आप /usr/sbin/httpd.workerभागते हुए देखते हैं , तो यह कार्यकर्ता MPM का उपयोग कर रहा है। यदि आप /usr/sbin/httpdभागते हुए देखते हैं , तो यह प्रीफ़ॉर्क का उपयोग कर रहा है
क्रिस जॉनसन का जवाब सही है।
अपाचे प्रलेखन ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ) में प्रलेखित जानकारी मॉड्यूल को सक्षम करने के बाद , यह एक लाइनर आपके द्वारा उपयोग किए जा रहे एमपीएम को देगा:
links -dump http://localhost/server-info/?server | grep "MPM Name"