Как мне запустить Apache при загрузке в Linux?

Я установил 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

7 ответов

Решение

Вы хотите добавить его скрипт инициализации на соответствующий уровень выполнения. Скрипт инициализации обычно /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/,

Вот что наконец-то сработало для меня. Это предполагает, что вы являетесь пользователем 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:

#! / Bin / Баш
#
# apache2 Скрипт запуска для HTTP-сервера Apache
#
# chkconfig: 3 85 15
# описание: Apache - сервер World Wide Web. Используется для подачи \
#              HTML-файлы и CGI.

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

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

Благодаря следующему:

Проверьте, есть ли у вас httpd сценарий инициализации в /etc/rc.d каталог. Если да, то вы можете просто запустить следующую команду, которая позволяет службе httpd запускаться во время загрузки.

chkconfig --level 345 httpd on

Если у вас нет сценария инициализации, просто добавьте /etc/rc.local файл с apachectl -k start (команда для запуска Apache).

Поскольку вы установили источник, в каталоге /etc/init.d/ не будет установлен скрипт инициализации. Двоичный файл apachectl спроектирован так, чтобы быть совместимым со стандартными параметрами сценария инициализации, поэтому вы вполне можете просто ссылаться на него, а не создавать скрипт-обертку (например, ln -s / usr / local / sbin / apachectl /etc/init.d/ апач)

Затем вы можете следовать процедурам, описанным в других публикациях, для добавления ссылок для вызова сценария инициализации с правильными уровнями выполнения.

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

Начиная с начальной загрузки

Если вы хотите, чтобы ваш сервер продолжал работать после перезагрузки системы, вы должны добавить вызов apachectl в файлы запуска вашей системы (обычно это rc.local или файл в каталоге rc.N). Это запустит Apache от имени пользователя root. Перед этим убедитесь, что ваш сервер правильно настроен на безопасность и ограничения доступа.

Скрипт apachectl предназначен для работы как стандартный скрипт инициализации SysV; он может принимать аргументы start, restart и stop и переводить их в соответствующие сигналы для httpd. Поэтому вы часто можете просто связать apachectl с соответствующим каталогом init. Но не забудьте проверить точные требования вашей системы.

Это зависит от вашего вкуса Linux. Предполагая, что файл /etc/init.d/apache2 был создан, попробуйте:

chkconfig -a apache2

или же

update-rc.d apache2 defaults

Один из них должен работать.

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

Прокрутите вниз до httpd и нажмите пробел, чтобы в левой части окна появилась звезда. Затем нажмите на ОК. Нажмите Return, чтобы сохранить и вернуться в оболочку.

Я обнаружил, что он устанавливается по умолчанию. Я никогда не был в положении, где он не был установлен.

Сначала вам нужно будет установить службу, скопировав сценарий службы в /etc/init.d, а затем запустить:

chkconfig --add <script name>

chkconfig --levels 345 httpd

запустит httpd на уровнях запуска 3,4,5.

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

Другие вопросы по тегам