Я установил 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
Вы хотите добавить его сценарий инициализации на соответствующий уровень выполнения. Сценарий инициализации обычно /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 небольшой поиск в Google показывает это:
chkconfig --add httpd
Он немного варьируется от дистрибутива к дистрибутиву, но обычно идея одна и та же. По сути, все эти команды создают символическую ссылку из /etc/init.d/
в соответствующую папку уровня выполнения в /etc/
.
Вот что в итоге сработало для меня. Предполагается, что вы являетесь пользователем root.
Содержимое /etc/init.d/apache2:
#!/bin/bash # # apache2 Startup script for the Apache HTTP Server # # chkconfig: 3 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and 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)
Затем вы можете следовать процедурам, описанным в других сообщениях, для добавления ссылок для вызова сценария инициализации на правильных уровнях выполнения.
Цитата: Документация Apache. http://httpd.apache.org/docs/2.2/invoking.html
Запуск во время загрузки
Если вы хотите, чтобы ваш сервер продолжал работать после перезагрузки системы, вам следует добавить вызов apachectl в файлы запуска вашей системы (обычно rc.local или файл в каталоге rc.N). Это запустит Apache с правами root. Перед этим убедитесь, что ваш сервер правильно настроен для безопасности и ограничений доступа.
Сценарий apachectl разработан, чтобы действовать как стандартный сценарий инициализации SysV; он может принимать аргументы start, restart и stop и преобразовывать их в соответствующие сигналы для httpd. Таким образом, вы часто можете просто связать apachectl с соответствующим каталогом инициализации. Но не забудьте проверить точные требования вашей системы.
chkconfig - уровни 345 httpd
запустит httpd на уровнях выполнения 3,4,5.
chkconfig --list покажет все службы и их текущие уровни запуска. 345 типичен для сетевой службы.
В Red Hat Linux есть полезная утилита под названием ntsysv, которая позволяет вам выбирать, какие службы вы хотите запустить на текущем уровне выполнения. Вы также можете указать, какой уровень выполнения вы хотите редактировать, когда вы запускаете утилиту с помощью --level
.
Прокрутите вниз до httpd и нажмите Космос поэтому в левом поле появится звездочка. затем Вкладка взял. Нажмите Возвращение для сохранения и возврата в оболочку.
Я обнаружил, что он устанавливается по умолчанию. Я никогда не был в положении, когда его не устанавливали.
Вам нужно сначала установить службу, скопировав сценарий службы в /etc/init.d, а затем запустив:
chkconfig --add <script name>
Это зависит от вашего вкуса Linux. Предполагая, что файл /etc/init.d/apache2 был создан, попробуйте:
chkconfig -a apache2
или
update-rc.d apache2 defaults
Один из них должен работать.