不同的方式来重新启动Apache?

我在这里有一个Apache的问题。

对于我作为开发人员的整个职业生涯,我已经像这样重新启动了Apache:

sudo /etc/init.d/apache2 restart 

我今天刚刚部署了我的第一个Rails应用程序,但是我很难让Apache在主机上重新启动。 当我尝试这种方式,Apache会尝试重新启动,但最终会挂起。

但是,这工作得很好:

 sudo apachectl restart 

这两种技术有什么区别? 我认为后者最好是第一个“语法糖”,但是事实肯定不是这样,因为后者是在前者没有的情况下工作的。

如果它是相关的(我怀疑它可能),这个Rails应用程序使用Phusion Passenger。 我以前的开发经验(以前的方法工作正常)主要是用PHP。 我很新的Rails。

有问题的服务器运行Ubuntu 11.04(Natty)。

 sudo /etc/init.d/apache2 restart 

此方法使用您的Linux发行版的init脚本来重新启动进程。 这些脚本在启动时运行以启动apache。

 sudo apachectl restart 

这个方法使用apachectl控制程序。 在几乎每一个场合我都会推荐使用apachectl来maniuplate apache守护进程。 您可以更好地控制进程如何重启(请参阅graceful vs. restart),configurationvalidation选项以及获取状态信息的方式。

使用init脚本重新启动apache和apachectl的主要区别在于,apachectl专门devise为允许pipe理员控制apache,而init脚本被devise为Unix的一种通用方式,在内核和init daeamon加载后启动进程。

编辑:不幸的是,我不知道如何解决您的问题与Rails或Phusion乘客。 尝试查看您的Apache日志寻找线索。