Я установил 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 небольшое прибегание к поиску показывает следующее:
chkconfig --add httpd
Это немного варьируется от распределения к распространению, но идея обычно та же самая. По сути, все эти команды создают символическую ссылку из /etc/init.d/
в соответствующую папку уровня выполнения в /etc/
.
Вот что наконец-то сработало для меня. Это предполагает, что вы являетесь пользователем root.
Содержимое /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
Благодаря следующему:
Проверьте, есть ли у вас скрипт инициализации 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 с соответствующим каталогом init. Но не забудьте проверить точные требования вашей системы.
В Red Hat Linux есть полезная утилита ntsysv, которая позволяет вам выбрать, какие службы вы хотите запустить на текущем уровне запуска. Вы также указываете, какой уровень выполнения вы хотите редактировать при запуске утилиты, используя --level
.
Прокрутите вниз до httpd и нажмите Space таким образом, звезда появляется в левой части окна. затем Tab взял. Нажмите Return сохранить и вернуться в Shell.
Я обнаружил, что он устанавливается по умолчанию. Я никогда не был в положении, где он не был установлен.
Сначала вам нужно будет установить службу, скопировав сценарий службы в /etc/init.d, а затем запустить:
chkconfig --add <script name>
chkconfig --levels 345 httpd
запустит httpd на уровнях запуска 3,4,5.
chkconfig --list покажет все сервисы и их текущие уровни запуска. 345 типично для сетевого сервиса.
Это зависит от вашего вкуса Linux. Предполагая, что файл /etc/init.d/Apache2 был создан, попробуйте:
chkconfig -a Apache2
или
update-rc.d Apache2 defaults
Один из них должен работать.