Як змусити Apache до запуску під час завантаження в Linux?


32

Я встановив Apache 2 з джерела на моєму скриньці Linux. apachectl -k startпрацює чудово, але як змусити Apache запускатися під час завантаження?

Це в дистрибутиві Red Hat Linux:

Linux <ім'я> 2.6.9-55.ELsmp №1 SMP Пт 20 квіт. 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
Який розподіл?
аяз

Відповіді:


46

Ви хочете додати його сценарій init до відповідного рівня запуску. Сценарій init, як правило, /etc/init.d/apache2там, де ви могли вручну запустити, /etc/init.d/apache2 startщоб запустити його.

На Gentoo ви б написали:

rc-update add apache2 default

У Ubuntu / Debian це працює:

sudo update-rc.d apache2 defaults

У Red Hat Linux / Fedora / CentOS невеликий гугл показує це:

chkconfig --add httpd

Він дещо варіюється від розподілу до розповсюдження, але ідея зазвичай однакова. В основному всі ці команди створюють символічне посилання з /etc/init.d/відповідної папки рівня запуску в /etc/.


1
Дякую за відповідь, вона мене вказала в правильному напрямку. Я підсумував те, що робив нижче.
скорботи

Якщо ви створили apache з джерела, не буде жодного сценарію init, частина, яку ви охоплювали, - це лише конфігурація як сервіс після того, як у файлі /etc/init.d/ правильно встановлений скрипт init, і саме це не так t дійсно добре задокументовано для apache 2
Хайме Хаблутцель

26

Ось що, нарешті, працювало для мене. Це передбачає, що ви користувач root.

  1. vi /etc/init.d/apache2 (відредагуйте так, як показано нижче)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --add apache2
  4. chkconfig --list apache2 (щоб переконатися, що він працював)

Зміст /etc/init.d/apache2:

#! / бін / баш
#
# apache2 Сценарій запуску для HTTP-сервера Apache
#
# chkconfig: 3 85 15
# Опис: Apache - всесвітній веб-сервер. Він використовується для обслуговування \
# HTML-файли та CGI.

/ usr / local / apache2 / bin / apachectl $ @

Ви можете отримати рівень запуску, запустивши / sbin / runlevel, якого в моєму випадку було 3. І звичайно вам потрібно зателефонувати у вашу версію apachectl, яка в моєму випадку була / usr / local / apache2 / bin / apachectl

Завдяки наступному:


Я дуже ненавиджу приймати власну відповідь, але саме ця спрацювала.
скорботи

Це саме те, що мені було потрібно! (довелося перекомпілювати та встановити Apache 2.2.27 в / usr / local / apache2). Дуже дякую.
Крістоф Мюллер

цей рядок "/ usr / local / apache2 / bin / apachectl $ @" насправді починає httpd? вам потрібно оформити: sudo chkconfig apache2 start або sudo chkconfig apache2?
olala

8

Перевірте, чи є у вас каталог httpdскриптів init /etc/rc.d. Якщо так, то ви можете просто запустити таку команду, яка дозволяє послузі httpd запускатися під час завантаження.

chkconfig --level 345 httpd on

Якщо у вас немає сценарію init, просто додайте /etc/rc.localфайл apachectl -k start(команда для запуску Apache).


4

Оскільки ви встановили джерело, у директорії /etc/init.d/ не буде встановлений сценарій init. Бінарний апарат apachectl розроблений так, щоб бути сумісним зі стандартними параметрами сценарію init, тому ви, можливо, зможете просто посилатися на нього, а не створювати сценарій обгортки (наприклад, ln -s / usr / local / sbin / apachectl /etc/init.d/ апаш)

Потім ви можете дотримуватися процедур, викладених в інших публікаціях для додавання посилань, щоб викликати сценарій init на правильних рівнях.

Цитування: Документація Apache http://httpd.apache.org/docs/2.2/invoking.html

Починаючи з завантажувального часу

Якщо ви хочете, щоб ваш сервер продовжував працювати після перезавантаження системи, слід додати виклик apachectl до файлів запуску системи (як правило, rc.local або файл у каталозі rc.N). Це запустить Apache як root. Перш ніж це зробити, переконайтесь, що ваш сервер правильно налаштований на безпеку та обмеження доступу.

Сценарій apachectl розроблений так, щоб діяти як стандартний сценарій init SysV; він може взяти аргументи запуск, перезапуск та зупинку та переведення їх у відповідні сигнали до httpd. Таким чином, ви часто можете просто зв’язати apachectl у відповідний каталог init. Але не забудьте перевірити точні вимоги вашої системи.


Дякую за відповідь, вона мене вказала в правильному напрямку. Я підсумував те, що робив нижче.
скорботи

1

chkconfig --рівні 345 httpd

почне httpd у рівні запуску 3,4,5.

chkconfig --list покаже всі сервіси та поточний рівень запуску. 345 характерний для послуги мережі.


1
Це створює наступну помилку зі мною на CentOS 6: "для запиту chkconfig може бути вказаний лише один пробіг". Однак додавання "on" до кінця команди ("chkconfig - level 345 httpd on") спрацювало як шарм.
akame

1

У Red Hat Linux є корисна утиліта під назвою ntsysv, яка дозволяє вам вибрати, які сервіси ви хочете запустити на поточному рівні запуску. Ви також зазначаєте, який рівень запуску ви хочете редагувати під час запуску утиліти, що використовує --level.

Прокрутіть униз до httpd та натисніть, Spaceщоб у лівій частині вікна з’явилася зірка. Потім Tabдо ОК. Натисніть, Returnщоб зберегти та повернутися до оболонки.

Я виявив, що він встановлений за замовчуванням. Я ніколи не був у такому стані, де він не був встановлений.

Вам потрібно спочатку встановити службу, скопіювавши службовий скрипт у /etc/init.d, а потім виконавши:

chkconfig --add <script name>

1

Це залежить від вашого смаку Linux. Припускаючи, що файл /etc/init.d/apache2 створено, спробуйте:

chkconfig -a apache2

або

update-rc.d apache2 defaults

Один з них повинен працювати.


1
Відповідь chkconfig призначена для систем, схожих на Red-Hat (тобто CentOS), а update-rc.d - для Debian-подібних систем (тобто Ubuntu)
Кайл Брандт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.