如何重新启动Apache?

我从SLES切换到Ubuntu,现在我想重新启动我的本地服务器。 在SLES中,我使用的是:
rcapache2 restart

但是在Ubuntu上似乎不起作用。
我该如何重新启动Apache?

apache2旁边还有service apache-sp restart - Avatar
13个回答

sudo service apache2 restart 借用自 Red Hat 的方式。


1我认为“service”是LSB的方式,而且应该在大多数发行版中都可以使用,现在Debian和Ubuntu终于拥有了它。 - Marius Gedminas
11sudo restart apache2在Ubuntu 12.04上无效。对其他Ubuntu版本不确定。 - saji89
2@saji89 你需要执行 sudo service apache2 restart,然后它就会正常工作。 - Kevdog777
9sudo restart apache2 在 Ubuntu 14.04 中无法工作。然而,sudo service apache2 restart 是有效的。 - toesslab
sudo service apache2 reload在某些情况下有效。 - Shurvir Mori
也可以是 service apache2 restart - Avatar

你想要重新启动 Apache,还是你想要优雅地重新加载它的配置?

每个人都在回答第一个问题;你可以用以下方法回答第二个问题

sudo service apache2 reload

优雅地重新加载速度稍快,并且没有停机时间。
有一个注意事项:如果您的Apache配置文件中包含错误(例如,在不存在的目录中配置日志文件),服务器可能会在不打印任何错误消息到控制台的情况下静默退出。大多数其他错误都会被apache2ctl configtest捕获,这是在使用apache2ctl graceful进行实际重新加载之前由service apache2 reload运行的。

1是的!如果你想重新启动而不让你的网站观众掉线,使用优雅重启会更好! - tommed
我发现 restart 的一个优点是,如果 Apache 没有运行,它会自动 _start_。那么 reload 也会 start 它吗? - Torben Gundtofte-Bruun
我不这么认为——更糟糕的是,如果在配置文件中出现语法错误,重新加载将会停止正在运行的Apache。 - Marius Gedminas
3在执行优雅重启之前,始终运行sudo apache2ctl configtest命令。如果配置文件存在语法错误,优雅重启将失败并导致Apache停止运行。 - Mikko Rantalainen
@MikkoRantalainen:谢谢,我已经编辑了答案,删除了原始的apache2ctl graceful,而是建议只使用service apache2 reload,它在graceful之前运行configtest - Marius Gedminas

在Ubuntu下启动/停止服务(不仅限于Apache)的推荐方法是使用start/stop/reload命令(实际上是initctl程序的符号链接,该程序是upstart的一部分)。
对于使用传统的/etc/init.d脚本的服务,将调用相应的脚本并传递正确的参数;对于使用upstart基础设施的服务,将通过initctlupstart守护进程发送适当的事件转换信号。
因此,在Ubuntu上启动/停止/重新加载/重启Apache,您可以使用以下命令:
sudo start apache2
sudo stop apache2
sudo reload apache2
sudo restart apache2

sudo /etc/init.d/apache2 restart

当然,你可以将restart替换为stopstart和(我想)reload

2在最近的Ubuntu下进行此操作时,您会收到有关以新方式执行操作的消息,尽管它仍然会执行您所期望的命令。 - jfmessier
我没意识到Apache已经转向Upstart了。 - Oli
1我再也看不到那条信息了。 - Tim

Ubuntu的方式:

重启:
sudo service apache2 restart|stop|start
停止:
sudo service apache2 stop
启动:
sudo service apache2 start

如Marius所说,"graceful" 应该用于重新启动的情况。
sudo apache2ctl graceful

或者

sudo apache2ctl graceful-stop

停止Apache的优雅方式。
这些命令会等待所有网页请求被处理完毕后再重新启动/停止Web服务器,以确保用户不会看到不完整的网页。

首先,你可以使用这个命令来检查你的状态。
sudo service apache2 status

然后停止运行的服务
sudo service apache2 stop

然后使用这个指令:
sudo /opt/lampp/lampp start

这个解决方案对我来说有效。

你可以使用systemctl命令来重新启动Apache服务;这个命令控制着systemd系统服务管理器使用systemctl命令重新启动Apache:
sudo systemctl restart apache2.service

如果在重新启动时遇到挂起或无响应的情况,您可以使用systemctl stop命令停止服务,然后使用systemctl start命令启动。命令如下: 停止Apache服务的systemctl命令:
sudo systemctl stop apache2.service

使用systemctl命令启动Apache:

sudo systemctl start apache2.service

你还可以使用reload命令来重新加载apache服务。
使用systemctl命令重新加载Apache的方法如下:
sudo systemctl reload apache2.service

最好的重启Apache服务器的方法是使用以下命令:
$ sudo service apache2 restart

你可以使用以下命令进行修改:
$ sudo /etc/init.d/apache2 restart

1命令来源:在Ubuntu上重新启动Apache - Razor Rassh

如果您在系统中安装了Apache 2.4版本,想要在本地系统上启动、重启或停止Apache服务器,那么您应该运行以下命令。
./apachectl start

或者您可以根据您的需求使用重新启动停止等功能。 这是经过测试的代码。