लिनक्स पर बूटाइम में स्टार्टअप पर अपाचे कैसे प्राप्त करूं?


32

मैंने अपने लिनक्स बॉक्स पर स्रोत से अपाचे 2 स्थापित किया है। apachectl -k startठीक काम करता है, लेकिन मैं अपाचे को बूट समय पर कैसे शुरू करूं?

यह Red Hat Linux वितरण पर है:

लिनक्स <होस्टनाम> 2.6.9-55.ELsmp # 1 एसएमपी शुक्र अप्रैल 20 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
कौन सा वितरण?
अयज

जवाबों:


46

आप इसकी init स्क्रिप्ट को उपयुक्त रन स्तर पर जोड़ना चाहते हैं। इनिट स्क्रिप्ट आमतौर पर है /etc/init.d/apache2जहाँ आप /etc/init.d/apache2 startइसे शुरू करने के लिए मैन्युअल रूप से चला सकते हैं ।

Gentoo पर आप लिखेंगे:

rc-update add apache2 default

उबंटू / डेबियन पर यह काम करता है:

sudo update-rc.d apache2 defaults

Red Hat Linux / Fedora / CentOS पर थोड़ा सा googling यह दिखाता है:

chkconfig --add httpd

यह वितरण से वितरण में थोड़ा भिन्न होता है, लेकिन विचार आमतौर पर समान होता है। मूल रूप से, ये सभी कमांड /etc/init.d/उपयुक्त रन-लेवल फ़ोल्डर में से एक प्रतीकात्मक लिंक बनाते हैं /etc/


1
उत्तर के लिए धन्यवाद, यह मुझे सही दिशा में इंगित करता है। मैंने संक्षेप में बताया कि मैंने नीचे क्या किया।
शोक करें

यदि आपने स्रोत से अपाचे का निर्माण किया है, तो कोई भी init स्क्रिप्ट नहीं होगी, आपके द्वारा कवर किया गया भाग केवल एक सेवा के रूप में कॉन्फ़िगरेशन है जब आपके पास एक init स्क्रिप्ट सही ढंग से /etc/init.d/ में सेट हो जाती है और ठीक वही है जो isn ' टी वास्तव में अच्छी तरह से अपाचे 2 के लिए प्रलेखित
Jaime Hablutzel

26

यहाँ है क्या अंत में मेरे लिए काम किया। यह मानता है कि आप मूल उपयोगकर्ता हैं।

  1. vi /etc/init.d/apache2 (इसे नीचे दिखाए अनुसार संपादित करें)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig - एडड apache2
  4. chkconfig - सूची apache2 (यह सत्यापित करने के लिए कि यह काम किया है)

/Etc/init.d/apache2 की सामग्री:

#! / Bin / bash
#
Apache HTTP सर्वर के लिए # apache2 स्टार्टअप स्क्रिप्ट
#
# chkconfig: 3 85 15
# विवरण: अपाचे एक वर्ल्ड वाइड वेब सर्वर है। यह सेवा करने के लिए प्रयोग किया जाता है \
# HTML फाइलें और सीजीआई।

/ usr / स्थानीय / apache2 / bin / apachectl $ @

आप रनवे को रनिंग / sbin / रनलेवल के द्वारा प्राप्त कर सकते हैं, जो कि मेरे मामले में था। 3. और निश्चित रूप से आपको अपाचेक्टल के अपने संस्करण को कॉल करने की आवश्यकता है, जो मेरे मामले में / usr / स्थानीय / apache2 / bin / aplectl था।

निम्नलिखित के लिए धन्यवाद:


मैं वास्तव में अपने स्वयं के उत्तर को स्वीकार करने से नफरत करता हूं, लेकिन यह वह है जिसने काम किया है।
शोक करें

यह वही था जो मुझे चाहिए था! (recompile और 2.2.27 अपाचे को / usr / लोकल / अपाचे 2 में स्थापित करना था)। बहुत बहुत धन्यवाद।
क्रिस्टोफ़ मुलर

क्या यह लाइन "/ usr / स्थानीय / apache2 / bin / apachectl $ @" वास्तव में httpd शुरू होती है? क्या आपको जारी करने की आवश्यकता है: sudo chkconfig apache2 start या sudo chkconfig apache2 on?
ओला

8

जाँचें कि क्या आपके पास निर्देशिका httpdमें init स्क्रिप्ट है /etc/rc.d। यदि हाँ, तो आप बस निम्नलिखित कमांड चला सकते हैं जो httpd सेवा को बूट समय पर शुरू करने में सक्षम बनाता है ।

chkconfig --level 345 httpd on

यदि आपके पास init स्क्रिप्ट नहीं है, तो बस /etc/rc.localफ़ाइल को apachectl -k startअपाचे (कमांड को शुरू करने के लिए) के साथ जोड़ें।


4

जैसा कि आपने स्रोत द्वारा स्थापित किया है, वहां /etc/init.d/ निर्देशिका में एक init स्क्रिप्ट स्थापित नहीं होगी। Apachectl बाइनरी को मानक init स्क्रिप्ट विकल्पों के साथ संगत करने के लिए डिज़ाइन किया गया है ताकि आप अच्छी तरह से एक आवरण स्क्रिप्ट बनाने के बजाय इसे केवल सहानुभूति देने में सक्षम हो सकें (जैसे ln -s / usr / local / sbin / apachectl/nit.d/ अमरीका की एक मूल जनजाति)

फिर आप सही रनलेवल पर init स्क्रिप्ट को लिंक करने के लिए लिंक जोड़ने के लिए अन्य पदों में उल्लिखित प्रक्रियाओं का पालन कर सकते हैं।

उद्धरण: अपाचे प्रलेखन http://httpd.apache.org/docs/2.2/invoking.html

बूट-टाइम से शुरू

यदि आप चाहते हैं कि आपका सर्वर सिस्टम रिबूट के बाद भी चलता रहे, तो आपको अपने सिस्टम स्टार्टअप फाइलों (आमतौर पर rc.local या rc.N निर्देशिका में एक फाइल) में अपाचेक्टल में कॉल जोड़ना चाहिए। यह अपाचे को रूट के रूप में शुरू करेगा। ऐसा करने से पहले यह सुनिश्चित करें कि आपका सर्वर सुरक्षा और एक्सेस प्रतिबंधों के लिए ठीक से कॉन्फ़िगर किया गया है।

Apachectl स्क्रिप्ट को मानक SysV init स्क्रिप्ट की तरह काम करने के लिए डिज़ाइन किया गया है; यह तर्कों को शुरू, पुनरारंभ, और रोक सकता है और उन्हें httpd के लिए उपयुक्त संकेतों में अनुवाद कर सकता है। इसलिए आप अक्सर अपाचेक्टल को उचित इनिट डायरेक्टरी में लिंक कर सकते हैं। लेकिन अपने सिस्टम की सटीक आवश्यकताओं की जांच करना सुनिश्चित करें।


उत्तर के लिए धन्यवाद, यह मुझे सही दिशा में इंगित करता है। मैंने संक्षेप में बताया कि मैंने नीचे क्या किया।
शोक करें

1

chkconfig --levels 345 httpd

3,4,5 रनवे में httpd शुरू करेंगे।

chkconfig --list सभी सेवाओं और उनके वर्तमान स्टार्टअप रनलेवल को दिखाएगा। 345 एक नेटवर्क सेवा के लिए विशिष्ट है।


1
यह CentOS 6 पर मेरे साथ निम्नलिखित त्रुटि उत्पन्न करता है: "केवल एक रनवे को एक चकोन्फिग क्वेरी के लिए निर्दिष्ट किया जा सकता है"। हालाँकि, कमांड के अंत में "पर" जोड़ना ("chkconfig --levels 345 httpd on") एक आकर्षण की तरह काम करता था।
एकम

1

Red Hat Linux पर एक उपयोगी उपयोगिता है जिसे ntsysv कहा जाता है जो आपको यह चुनने देता है कि आप अपने वर्तमान रन स्तर में कौन सी सेवाएँ शुरू करना चाहते हैं। आप यह भी निर्दिष्ट करते हैं कि उपयोगिता का उपयोग करते समय आप किस रन स्तर को संपादित करना चाहते हैं --level

Httpd पर नीचे स्क्रॉल करें और Spaceबाएं हाथ के बॉक्स में एक स्टार दिखाई दे। फिर Tabठीक है। Returnबचाने के लिए दबाएँ और शेल पर वापस जाएँ।

मैंने पाया है कि यह डिफ़ॉल्ट रूप से बहुत स्थापित करता है। मैं कभी भी ऐसी स्थिति में नहीं रहा जहाँ इसे स्थापित नहीं किया गया।

आपको सर्विस स्क्रिप्ट को पहले /etc/init.d पर फिर कॉपी करके सर्विस को इंस्टॉल करना होगा।

chkconfig --add <script name>

1

यह आपके लिनक्स के स्वाद पर निर्भर करता है। मान लें कि फ़ाइल /etc/init.d/apache2 बनाई गई है, आज़माएँ:

chkconfig -a apache2

या

update-rc.d apache2 defaults

उनमें से एक को काम करना चाहिए।


1
Chkconfig का उत्तर Red-Hat जैसे सिस्टम (जैसे CentOS) और अपडेट-rdd के लिए है डेबियन जैसे सिस्टम (यानी Ubuntu) के लिए है
काइल ब्रांट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.