为什么我们不需要像在 Windows 中一样在 Ubuntu 上启动 Apache 服务器?

为什么我们不需要像在 Windows 中一样在 Ubuntu 上启动 Apache 服务器?

我的系统上安装了 LAMP 服务器,它运行正常。但是,我很好奇为什么我们不需要在 LAMP 中启动 Apache 服务器。相反,当我们在 Windows 上使用 WAMP 时,我们必须启动它并激活 Apache 和 MySQL。Apache 是在启动 Ubuntu 时启动的(即它始终在后台运行),还是在我们打开本地主机时启动的?

这个问题的答案是“手动启动LAMP服务器“描述如何手动启动 LAMP,但没有描述其内部如何自动启动 LAMP。

答案1

一般来说,Linux,以及 Ubuntu,都有一些目录,您可以在其中放置启动/停止/重新启动/重新加载服务(或该服务可以提供的任何操作)的脚本:/etc/init.d/(=旧但仍然经常使用)。

/etc/init.d 是所有传统 sysvinit 脚本和 upstart 的向后兼容脚本的存放位置。向后兼容脚本基本上是运行的,service myservice start而不是自己做任何事情。有些只是显示使用该service命令的通知。

/etc/init.d$ ls
apache2             glibc.sh               mysql          screen-cleanup
apparmor            halt                   mysql-ndb      sendsigs
...

举个例子,脚本的开头apache2(其他的脚本风格都类似):

$ more apache2
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          apache2
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop apache2 web server
### END INIT INFO
#
# apache2               This init.d script is used to start apache2.
#                       It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

...


还有/etc/init(=upstart):

/etc/init 是 upstart init 配置所在的位置。虽然它们本身不是脚本,但它们本质上会执行替换 sysvinit 脚本所需的任何操作。

cups - CUPS Printing spooler and server

description     "CUPS printing spooler/server"
author          "Michael Sweet <[email protected]>"

start on (filesystem
          and (started dbus or runlevel [2345]))
stop on runlevel [016]

respawn
respawn limit 3 12

因此基本上在这些脚本/配置中,说明了在启动此服务之前需要启动哪些其他服务,以及在停止此服务之前需要停止哪些服务。

Apache 是否会在我们启动 Ubuntu 时启动(即,它始终在后台运行)还是在我们打开 localhost 时启动?

当您安装像 apache(或 mysql(数据库服务器)或 cups(打印服务器))这样的服务时,它通常还包括一个启动脚本并且该脚本也会被激活(因为假设是:如果安装了,您希望它运行)。

所以答案是:它始终在运行,而不是在您访问 URL 时启动(即。http://本地主机)。

顺便说一下,也可以停止一项服务,删除自动启动功能/etc/init.d/,然后手动启动该服务。

有 2 个会话管理器负责处理这个问题:旧版 Ubuntu(即 <15.10)使用upstart。新版 Ubuntu(>15.10)使用systemd

  • Upstart 将会是service start apache2service stop apache2
  • Systemd 将会systemctl start apache2或者systemctl start apache2也支持 Upstart 在 Debian/Ubuntu 系统上使用的方法。

相关内容