Как мне запустить Apache при загрузке в Linux?
Я установил Apache 2 из исходного кода на моем компьютере с Linux. apachectl -k start
работает просто отлично, но как мне заставить Apache запускаться во время загрузки?
Это в дистрибутиве Red Hat Linux:
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.
- vi /etc/init.d/apache2 (отредактируйте его, как показано ниже)
- chmod 755 /etc/init.d/apache2
- chkconfig --add apache2
- 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
Благодаря следующему:
- Ответ от Evan Teran +1 за помощь
- Ответ от Russell Heilling + 1 за помощь
- man chkconfig
- Эта ссылка от sysdigg, которая содержит информацию об уровне запуска.
Проверьте, есть ли у вас 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 типично для сетевого сервиса.