重启Apache的不同方法?

Chr*_*ane 12 ruby-on-rails phusion-passenger apache-2.2

我在这里有一个 Apache 问题。

在我作为开发人员的整个职业生涯中,我一直像这样重新启动 Apache:

sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

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

然而,这工作得很好:

sudo apachectl restart
Run Code Online (Sandbox Code Playgroud)

这两种技术有什么区别?我曾假设后者充其量只是第一个的“语法糖”,但事实并非如此,因为后者有效而前者无效。

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

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

小智 6

sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

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

sudo apachectl restart
Run Code Online (Sandbox Code Playgroud)

该方法使用apachectl控制程序。几乎在每个场合,我都会推荐使用 apachectl 来操作 apache 守护进程。您可以更精细地控制进程如何重新启动(请参阅优雅与重新启动)、配置验证选项和获取状态信息的方法。

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

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

  • 当您的操作系统重新启动并且您的服务 apache2 启动不起作用时,您究竟认为您的操作系统会做什么?使用 apachectl 可以很好地进行测试和开发工作,但运行会导致问题的服务器。将其粘贴在 rc.local 中也不是解决方案。 (2认同)