У меня установлен apache2 на Amazon Linux AMI выпуска 2012.03. Я могу запустить его вручную, без ошибок, используя /etc/init.d/httpd start
. Однако он не запускается автоматически при загрузке машины.
Похоже, что в моих каталогах rc * .d все настроено правильно. Вот результат find /etc/rc.d -name "*httpd*" | xargs ls -l
:
-rwxr-xr-x 1 root root 3371 Feb 16 2012 /etc/rc.d/init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc0.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc1.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc2.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc3.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc4.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc5.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 Apr 14 2012 /etc/rc.d/rc6.d/K15httpd -> ../init.d/httpd
Я понимаю, что могу поставить /etc/init.d/httpd start
командовать в /etc/rc.local
, но разве это не обходной путь? Почему он не запускается автоматически? Другие вещи в каталогах rc * .d запускаются при загрузке нормально (mongod, postfix и т. Д.). Спасибо!
Используйте chkconfig для управления уровнями выполнения, на которых вы хотите запускать эту службу.
Обычно chkconfig httpd на делает свою работу.
У вас нет S-ссылок. Все «К» отключены только. Добавьте ссылки с тем же именем, просто замените K на S.
«Как правило, система запускает команды, начинающиеся с буквы« S », и останавливает команды, начинающиеся с буквы« K ». Команды, начинающиеся с буквы« K », выполняются только тогда, когда система меняет уровни выполнения с более высокого на более низкий уровень. Команды, начинающиеся с буквы «S», выполняются во всех случаях ».
Если вы используете chkconfig, см. "Man chkconfig". Для вашего случая:
chkconfig --level 2345 httpd on
стоит сделать.