我这里有一个关于 Apache 的问题。
在我整个开发生涯中,我一直像这样重新启动 Apache:
sudo /etc/init.d/apache2 restart
我今天刚刚部署了我的第一个 Rails 应用程序,但在主机上重启 Apache 时遇到了问题。当我尝试这种方式时,Apache 会尝试重启,但最终会挂起。
然而,这个效果很好:
sudo apachectl restart
这两种技术之间有什么区别?我曾以为,后者充其量只是前者的“语法糖”,但事实并非如此,因为后者有效,而前者无效。
如果相关的话(我怀疑可能是相关的),这个 Rails 应用程序使用 Phusion Passenger。我之前的开发经验(前一种方法很好用)主要是使用 PHP。我对 Rails 还很陌生。
有问题的服务器运行的是 Ubuntu 11.04(Natty)。
答案1
sudo /etc/init.d/apache2 restart
此方法使用你的 Linux 发行版的启动脚本重新启动进程。这些脚本在启动时运行以启动 apache。
sudo apachectl restart
此方法使用apachectl控制程序。几乎在所有情况下,我都会建议使用 apachectl 来操作 apache 守护进程。您可以更精细地控制进程如何重新启动(请参阅优雅重新启动与重新启动)、配置验证选项以及获取状态信息的方式。
使用 init 脚本重新启动 apache 和 apachectl 之间的主要区别在于,apachectl 专门设计用于允许管理员控制 apache,而 init 脚本设计为 Unix 在内核和 init 守护进程加载后启动进程的通用方法。
编辑:不幸的是,我不知道如何解决您的 Rails 或 Phusion Passenger 问题。请尝试查看您的Apache 日志寻找线索。