मैं कैसे बताऊं कि अपाचे प्रीफ़ॉर्क या कार्यकर्ता के रूप में चल रहे हैं?


40

मैं कैसे बताऊं कि यदि अपाचे चल रहा है (या चलाने के लिए कॉन्फ़िगर किया गया है) प्रीफ़ॉर्क या कार्यकर्ता के रूप में?


2
या अधिक तकनीकी रूप से 'के रूप में चलाने के लिए संकलित'

जवाबों:


37

एमपीएम को संकलन समय पर कॉन्फ़िगर किया गया है। बाद में यह पता लगाने का एक तरीका मॉड्यूल में संकलित सूची है। उस सूची में चुने गए एमपीएम शामिल होंगे। लिस्टिंग को -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:~$ 

यहां हमें मॉड्यूल वर्करसी मिल गया है, इसलिए मैं वर्कर एमपीएम चला रहा हूं।


4
यह उत्तर गलत है। मेरा जवाब देखिए।
क्रिस जॉनसन

1
हम्म, जब मैं ऐसा करता हूं तो न तो मेरे पास कोई कार्यकर्ता होता है और न ही प्रीफ़ॉर्क सूचीबद्ध होता है ...
mlissner

2
उबंटू पर आप apache2ctl -Mसक्रिय मॉड्यूल को सूचीबद्ध करने के लिए उपयोग कर सकते हैं ।
स्टेफनीनेलसन

53

Series8217 और एंडोल द्वारा दिए गए उत्तर दोनों गलत हैं।

सवाल था कि अगर अपाचे प्रीफ़ॉर्क या वर्कर चला रहे हैं तो कैसे बताएं । अन्य उत्तरों द्वारा दी गई सलाह केवल यह बताती है कि डिफ़ॉल्ट MPM क्या है (संकलित मॉड्यूल के आधार पर), यह नहीं कि क्या वर्तमान समय में डिफ़ॉल्ट या किसी अन्य विकल्प का उपयोग किया जा रहा है।

यदि httpd -Vप्रीफ़ॉर्क दिखाता है, तो इसका मतलब है कि प्रीफ़ॉर्क, संकलित-इन डिफ़ॉल्ट एमपीएम है। यह अपाचे कॉन्फ़िगरेशन फ़ाइल सेटिंग को बदलकर ओवरराइड किया जा सकता है, जैसा कि इस प्रक्रिया में दिखाया गया है:

  1. कॉन्फ़िगरेशन फ़ाइल संपादित करें (जैसे /etc/sysconfig/httpdCentOS / RedHat पर)
  2. इस पंक्ति को जोड़ें या न जोड़ें: HTTPD=/usr/sbin/httpd.worker
  3. अपाचे को फिर से शुरू करें

कौन सा MPM वास्तव में चल रहा है, इस प्रक्रिया का उपयोग करके दिखाया जा सकता है:

  1. Apache mod_info सक्षम करें
  2. आमतौर पर mod_info url को क्वेरी करें curl localhost/server-info
  3. "सर्वर सेटिंग्स" अनुभाग "एमपीएम नाम: कार्यकर्ता" दिखाएगा
  4. httpd -Vफिर से चलाएं - यह अभी भी पूर्वकर्म दिखाएगा, कार्यकर्ता नहीं

जमीनी स्तर:

  • httpd -V डिफ़ॉल्ट विकल्प दिखाता है, जो विकल्प वास्तव में उपयोग में नहीं है

कई पर जवाब हैं, कई वेब साइट कह रही हैं, यह httpd -Vबताने के लिए उपयोग करें कि क्या अपाचे प्रीफ़ॉर्क या कार्यकर्ता चला रहा है। वे सभी गलत हैं। अपने लिए देखने के लिए उपरोक्त प्रक्रिया आज़माएं।


FYI करें, httpd.apache.org/docs/trunk/mpm.html के अनुसार, एमपीएम सभी प्लेटफार्मों पर एक स्थिर मॉड्यूल हो सकता है, या एक डीएसओ (यूनिक्स पर) के रूप में बनाया जा सकता है। जब इसे एक स्थिर मॉड्यूल के रूप में बनाया जाता है, "MPM को बदलने के लिए सर्वर को फिर से बनाया जाना चाहिए।" सर्वर के पुनर्निर्माण को छोड़कर स्थैतिक मॉड्यूल एमपीएम अपरिवर्तनीय होने के बारे में अपाचे दस्तावेज गलत है?
स्टीवन टी। स्नाइडर

यह बहुत कुछ विशिष्ट की तरह लगता है विशिष्ट, एक उच्च स्तर आवरण के साथ चारों ओर?
औरोल

2
CentOS पर 6.6 / usr / sbin / httpd, /usr/sbin/httpd.event और /usr/sbin/httpd.worker सभी अलग-अलग बायनेरिज़ हैं, जिनका संकलन समय (प्रीफ़ॉर्क, इवेंट और वर्कर) में अलग-अलग एमपीएम कॉन्फ़िगर किया गया है। HTTPD की सेटिंग को / etc / sysconfig / httpd में बदलने से यह नियंत्रित होता है कि कौन सा बाइनरी इनिट स्क्रिप्ट द्वारा चलाया जाता है।
पॉल हैल्डेन

मुझे Ubuntu-16.04 LTS पर httpd -V के बजाय apache2 -V चलाना पड़ा
cnizzardini

41

उबंटू में 14.04

a2query -M

कहता है event, prefork,worker

आप के लिए सांकेतिक लिंक जोड़कर इसे बदल सकते हैं mpm_<chosen>से mods-availableकरने mods-enabledमें /etc/apache2

एक समय में केवल एक की अनुमति है।


2
यह स्वीकृत उत्तर होना चाहिए।

हाँ, बहुत अच्छा जवाब! सरल और रिटर्न की जरूरत है
फ्लैश थंडर

मेरे लिए सबसे अच्छा काम किया, धन्यवाद (Apache 2.4 पर काम किया .... ऐसा लगता है कि यह Apache 2.2 पर काम नहीं करता है)
dmikam

eventएम पी एम अपाचे की साइट, "केवल सक्रिय प्रसंस्करण के साथ कनेक्शन के लिए धागे लेने के लक्ष्य के साथ कार्यकर्ता एम पी एम का एक संस्करण" के अनुसार, है।
जोनाथन बर्जर

7

RedHat और व्युत्पन्न पर, बस लॉन्च करें topया ps auxhttpd प्रक्रिया नाम देखें:

  • httpd मतलब अपाचे प्रीफॉर्क के रूप में चल रहा है
  • httpd.worker इसका मतलब है कि यह कार्यकर्ता के रूप में चल रहा है

4

RHEL / फेडोरा / आदि पर, चलाएं httpd -V। आपको कुछ आउटपुट मिलेंगे जिनमें निम्नलिखित शामिल हैं:

Server version: Apache/2.2.21 (Unix)
     ...
Architecture:   64-bit
Server MPM:     Prefork
     ...

यहाँ 'सर्वर MPM' 'Prefork' है, इसलिए मेरा सर्वर prefork MPM चला रहा है।


यह उत्तर गलत है। मेरा जवाब देखिए।
क्रिस जॉनसन

@ChrisJohnson, दिलचस्प खोज ... मेरी समझ यह थी कि MPM को केवल संकलन द्वारा विन्यास से नहीं बदला जा सकता है। ऐसा लगता है कि ओपी ने भी ऐसा ही सोचा था, क्योंकि उन्होंने अपने सवाल पर टिप्पणी की थी "या अधिक तकनीकी रूप से 'के रूप में चलाने के लिए संकलित"। मैं आपके उत्तर को पुन: प्रस्तुत करने पर गौर करूँगा और एक बार पुष्टि कर लेने के बाद मैं इसे वापस ले लूंगा।
स्टीवन टी। स्नाइडर

मैंने httpd.apache.org/docs/trunk/mpm.html पर अपाचे प्रलेखन के माध्यम से पुष्टि की कि एमपीएम को डीएसओ मॉड्यूल के रूप में बनाया जा सकता है और "यूनिक्स और इसी तरह के प्लेटफार्मों" पर लोडमोड्यूल निर्देश के साथ गतिशील रूप से लोड किया जा सकता है। तो MPM को वास्तव में कुछ परिस्थितियों में लोड समय पर बदला जा सकता है (जो इन दिनों सबसे आम विन्यास हो सकता है ..)
स्टीवन टी। स्नाइडर

4

क्रिस जॉनसन सही है। Httpd.conf => पर जाएं इस पंक्ति को जोड़ें:

<Location /server-info>
SetHandler server-info
</Location>

पुनरारंभ करें अपाचे: /etc/init.d/httpd पुनरारंभ करें। फिर अपने ब्राउज़र द्वारा लोकलहोस्ट / सर्वर-इनफॉर्मेशन एक्सेस करें और एमपीएम नेम सेक्शन देखें


यहां तक ​​कि अच्छे के लिए, <ifModule info_module> </ IfModule>
Lexib0y

3

यहां एक और तरीका है जो मुझे उम्मीद है कि यह निर्धारित करने में विश्वसनीय होना चाहिए कि एमपीएम किस उपयोग में है। निम्नलिखित को अपने में जोड़ें 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


3

सेंटो (या rhel) पर आप इस कमांड को चला सकते हैं:

ps -ef | grep httpd

यदि आप /usr/sbin/httpd.workerभागते हुए देखते हैं , तो यह कार्यकर्ता MPM का उपयोग कर रहा है। यदि आप /usr/sbin/httpdभागते हुए देखते हैं , तो यह प्रीफ़ॉर्क का उपयोग कर रहा है


2

क्रिस जॉनसन का जवाब सही है।

अपाचे प्रलेखन ( http://httpd.apache.org/docs/2.2/mod/mod_info.html ) में प्रलेखित जानकारी मॉड्यूल को सक्षम करने के बाद , यह एक लाइनर आपके द्वारा उपयोग किए जा रहे एमपीएम को देगा:

links -dump http://localhost/server-info/?server | grep "MPM Name"

2

एक तरीका यह है कि मैं इसे डिबियन में डिस्ट्रोस की तरह समझ रहा हूं, यह चल रहा है:

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