it-swarm-ru.tech

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

Я установил Apache 2 из исходного кода на моем компьютере с Linux. apachectl -k start прекрасно работает, но как мне заставить Apache запускаться во время загрузки?

Это в дистрибутиве Red Hat Linux:

Linux <hostname> 2.6.9-55.ELsmp # 1 SMP пт 20 апреля 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux

32
grieve

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

46
Evan Teran

Вот что наконец-то сработало для меня. Это предполагает, что вы являетесь пользователем 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/bash 
 # 
 # Скрипт запуска Apache2 для HTTP-сервера Apache 
 # 
 # chkconfig: 3 85 15 
 # description: Apache - сервер всемирной паутины. Он используется для обслуживания\
 # HTML-файлов и компьютерной графики. 
 
/Usr/local/Apache2/bin/apachectl $ @ 

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

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

26
grieve

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

chkconfig --level 345 httpd on

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

8
Viky

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

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

Образец цитирования: Документация 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. Но не забудьте проверить точные требования вашей системы.

4
Russell Heilling

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

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

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

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

chkconfig --add <script name>
1
Garry Harthill

chkconfig --levels 345 httpd

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

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

1
elint

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

chkconfig -a Apache2

или

update-rc.d Apache2 defaults

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

1
Neobyte