Scientific Linux Vagrant Box 重启后 Apache 不会自动启动

Scientific Linux Vagrant Box 重启后 Apache 不会自动启动

每次我重新启动 Scientific Linux 机器时,我都会遇到无法启动 Apache Web 服务器(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  ]

我在装有 Ubuntu 12.04 Server 的 Vagrant 盒上进行了类似的设置,可以正确启动 httpd 服务,那么让 Scientific Linux Apache 服务器自动启动 httpd 的线索是什么呢?

每次我在命令提示符中使用命令:时vagrant reload,Web 服务器都不会启动 httpd 服务,我必须使用重新启动命令 ( sudo service httpd restart) 来启动它。但我希望该功能像我之前的 Ubuntu 12.04 (precise64) 一样自动运行。因此,决定性因素不是失败和正常消息之间的界线,问题在于它在重新启动后处于失败状态。

更新:立即尝试了您的好主意!但我确定所有 3 个运行级别 (3、4、5) 都已处于 ON 状态。这是我的当前状态:

   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

答案1

我们也遇到了同样的问题。对我们来说,这是由于 Apache 依赖于 Vagrant 挂载的共享文件造成的。这导致 Apache 在加载过程中失败。

在以前版本的 Vagrant 中,配置脚本总是在启动/重启时运行,因此在连接网络共享后 Apache 就会重新启动。

答案2

我在使用 vagrant 设置开发环境时也遇到了同样的问题。

我认为您的 documentRoot 条目之一位于共享驱动器上。由于 vagrant 在启动后挂载这些条目(而 apache 是在启动之前启动的),因此 apache 服务无法启动(缺少文档根目录)

我能够使用网上的这个教程来解决这个问题。就我个人而言,我最终使用了 SysVInit 方法,因为我无法使用 upstart 来做到这一点。你可以轻松地将其移植到 SystemD 你只需要更改/etc/init.d/httpd [command]systemctl [command] http.service你也可以使用service httpd start

http://razius.com/articles/launching-services-after-vagrant-mount/

杰伦·埃德

答案3

听起来,问题在于执行“vagrant reload”后,Apache 默认不会“打开”。我相信“vagrant reload”模拟了“关闭电源循环”虚拟机时发生的情况。听起来你希望在虚拟机启动后运行 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可以忽略,但如果您想实际查看 VM 提供的 Web 内容,您最终必须手动指定在配置 VM 时为其指定的 IP 地址。我会查阅 Vagrant 文档的“私有网络”部分。

希望这可以帮助!

相关内容