快速答案
如果你不确定你的系统使用哪个初始化系统,可以先用下面的命令检查,然后选择对应的操作。

对于使用 systemd 的现代系统 (如 CentOS 7+, Ubuntu 16.04+, Debian 8+)
# 重启 Apache 服务 sudo systemctl restart httpd # 或者 sudo systemctl restart apache2 # 在 Debian/Ubuntu 上,服务名通常是 apache2
对于使用 SysVinit 的传统系统 (如 CentOS 6, Ubuntu 14.04 及更早版本)
# 重启 Apache 服务 sudo service httpd restart # 或者 sudo /etc/init.d/httpd restart
详细说明与相关操作
检查你的系统类型 (重要)
在执行命令前,最好先确认你的系统使用的是 systemd 还是 SysVinit。
# 检查当前系统的初始化系统 ps -p 1 -o comm=
- 如果输出是
systemd,请使用systemctl命令。 - 如果输出是
init,请使用service命令。
使用 systemctl (推荐,现代系统)
systemctl 是 systemd 的命令行工具,功能强大且统一。
| 命令 | 作用 | 示例 |
|---|---|---|
sudo systemctl restart httpd |
立即重启 httpd 服务。 |
sudo systemctl restart httpd |
sudo systemctl start httpd |
启动 httpd 服务(如果未运行)。 |
sudo systemctl start httpd |
sudo systemctl stop httpd |
停止 httpd 服务。 |
sudo systemctl stop httpd |
sudo systemctl reload httpd |
优雅地重载配置文件,这会让服务在不中断现有连接的情况下应用新配置。通常这是比 restart 更好的选择。 |
sudo systemctl reload httpd |
sudo systemctl status httpd |
查看 httpd 服务的当前状态、运行情况及最近的日志。 |
sudo systemctl status httpd |
sudo systemctl enable httpd |
设置 httpd 服务为开机自启。 |
sudo systemctl enable httpd |
sudo systemctl disable httpd |
禁止 httpd 服务开机自启。 |
sudo systemctl disable httpd |
使用 service (传统系统)
service 命令是 SysVinit 和 Upstart 系统中用于管理服务的传统工具。
| 命令 | 作用 | 示例 |
|---|---|---|
sudo service httpd restart |
立即重启 httpd 服务。 |
sudo service httpd restart |
sudo service httpd start |
启动 httpd 服务。 |
sudo service httpd start |
sudo service httpd stop |
停止 httpd 服务。 |
sudo service httpd stop |
sudo service httpd reload |
优雅地重载配置文件,效果同上。 | sudo service httpd reload |
sudo service httpd status |
查看 httpd 服务的状态。 |
sudo service httpd status |
sudo chkconfig httpd on |
设置 httpd 服务为开机自启。 |
sudo chkconfig httpd on |
sudo chkconfig httpd off |
禁止 httpd 服务开机自启。 |
sudo chkconfig httpd off |
常见问题与排错 (Troubleshooting)
Q: 为什么重启后服务还是启动不起来?
这通常意味着 httpd 服务本身有问题,你可以通过查看日志来定位原因。

对于 systemd 系统:
# 查看实时日志流,按 Ctrl+C 退出 sudo journalctl -u httpd -f # 或者查看最新的错误日志 sudo journalctl -u httpd --no-pager -n 20
对于 SysVinit 系统:
Apache 的日志通常位于 /var/log/ 目录下,你可以直接查看错误日志。
# 查看错误日志 sudo tail -f /var/log/httpd/error_log # 或者查看访问日志 sudo tail -f /var/log/httpd/access_log
Q: restart 和 reload 有什么区别?
-
restart(重启):
(图片来源网络,侵删)- 过程: 先执行
stop停止服务,然后再执行start启动服务。 - 影响: 在这个过程中,所有正在处理的 HTTP 请求都会被中断,所有与客户端的连接都会被关闭,网站会有一小段时间无法访问。
- 过程: 先执行
-
reload(重载):- 过程: Apache 主进程会读取新的配置文件,然后启动一个新的子进程(工作进程)来处理新请求,同时优雅地关闭旧的子进程,让它们完成当前正在处理的请求后再退出。
- 影响: 不会中断现有的连接,网站可以持续提供服务,这是更新配置文件后最推荐的方式。
- 修改了配置文件:首选
sudo systemctl reload httpd。 - 更新了二进制文件(如升级了 Apache)或遇到了无法解决的问题:使用
sudo systemctl restart httpd。 - 不确定时:使用
restart总是能解决问题,但会造成短暂的服务中断。
