我的系统上安装了 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 apache2
或service stop apache2
。 - Systemd 将会
systemctl start apache2
或者systemctl start apache2
也支持 Upstart 在 Debian/Ubuntu 系统上使用的方法。