Каждый раз, когда я перезагружаю свой компьютер с Scientific Linux, у меня возникает проблема, заключающаяся в том, что он не запускает веб-сервер Apache (httpd
).
Я должен сделать это вручную с помощью этого кода:
[vagrant@magento ~]$ sudo service httpd restart
Stopping httpd: [FAILED]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
У меня есть аналогичная установка на Vagrant-боксе с сервером Ubuntu 12.04, который правильно запускал службы httpd, так в чем же ключ к тому, чтобы сервер Scientific Linux Apache автоматически загружал httpd?
Каждый раз я использую команду: vagrant reload
в моей командной строке веб-сервер не запускает службу httpd, и мне приходится использовать команду перезапуска (sudo service httpd restart
) чтобы получить это. Но я хочу, чтобы эта функция выполнялась автоматически, как на моем Ubuntu 12.04 раньше (precision64). Таким образом, решающим фактором является не граница между сообщениями Failed и OK, проблема в том, что они находятся в состоянии FAILED после перезагрузки.
Обновить: попробовал вашу красивую идею моментально! Но я определяю, что все 3 уровня выполнения (3,4,5) уже находятся в состоянии ВКЛ. Это мой текущий статус:
34 [vagrant@example ~]$ chkconfig --list
35 crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
36 htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off
37 httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
38 ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
39 iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
40 lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
41 mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
42 netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
43 netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
44 network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
45 postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
46 rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
47 rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
48 saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
49 sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
50 udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
51 vboxadd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
52 vboxadd-service 0:off 1:off 2:on 3:on 4:on 5:on 6:off
53 vboxadd-x11 0:off 1:off 2:off 3:on 4:off 5:on 6:off
54 [vagrant@magento ~]$ chkconfig --list | egrep '(apache|httpd)'
55 httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Я столкнулся с той же проблемой при настройке среды разработки с помощью vagrant.
Я думаю, что одна из ваших записей documentRoot находится на общем диске. Поскольку vagrant монтирует их после загрузки (и apache запускается раньше), служба apache не может запуститься (отсутствует корень документа)
Я смог решить эту проблему, используя этот учебник в сети. Лично я в конечном итоге использовал метод SysVInit, потому что не смог сделать это с выскочкой. Вы можете легко портировать его на SystemD Вам просто нужно изменить /etc/init.d/httpd [command]
к systemctl [command] http.service
Вы также можете уже использовать service httpd start
http://razius.com/articles/launching-services-after-vagrant-mount/
JeroenED
У нас такая же проблема. Для нас это вызвано тем, что Apache полагается на общие файлы, которые монтируются Vagrant. Это приводит к сбою Apache во время загрузки.
В предыдущих версиях Vagrant сценарии обеспечения всегда запускались при загрузке / перезагрузке, поэтому Apache перезапускался после подключения общих сетевых ресурсов.
Судя по звуку, проблема в том, что Apache не включается по умолчанию после того, как вы выполните «бродячую перезагрузку». Я считаю, что «бродячая перезагрузка» имитирует то, что произойдет, если вы «выключите и снова выключите» виртуальную машину. Похоже, вы хотите, чтобы демон Apache запускался после загрузки виртуальной машины.
Я зашел на сайт Scientific Linux. В нем указано, что основной дистрибутив основан на «Enterprise Linux». Обычно я интерпретирую это как «RedHat Enterprise Linux». Если это неверно, дайте мне знать.
Способ включения / выключения служб в зависимости от уровня запуска операционной системы обычно осуществляется через «chkconfig». Сначала я хотел бы подтвердить, какие услуги включены, а какие нет.
chkconfig --list
Вы должны получить массу вывода со строками, которые выглядят так:
gpm 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Первый столбец - это имя службы, а затем последующий столбец содержит пары значений, которые <runlevel>:<on|off>
. Итак, в строке выше gpm
служба отключена на всех уровнях запуска.
На вашем месте я бы отфильтровал вывод и поискал бы «httpd» или «apache» среди списка служб:
chkconfig --list | egrep '(apache|httpd)'
В моем поле RHEL я получаю следующее:
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Уровень запуска по умолчанию обычно равен «3». Затем я отключил бы эту услугу для этого уровня запуска 3, 4 и 5 следующим образом:
chkconfig --level 345 httpd on
Даже если это будет сделано, вам все равно придется перезапустить службу вручную, если она была отключена при запуске виртуальной машины:
service httpd start
В ServerName
предупреждение директивы может быть проигнорировано, но вам придется вручную указать IP-адрес, который вы указали для виртуальной машины при ее инициализации, если вы действительно хотите увидеть веб-контент, предоставляемый виртуальной машиной. Я бы проконсультировался с разделом «Частные сети» документации Vagrant.
Надеюсь это поможет!