我可以在重启(启动)apache webserver时执行shell脚本

时间:2012-01-20 14:14:59

标签: apache shell webserver restart

我有一个具有缓存后端的应用程序,我想在重新启动Web服务器时清除缓存。

是否有apache配置指令或任何其他方式在webserver(re)启动时执行shell脚本?

谢谢, 菲尔

添加更多信息,正如一些答案所说:

  • 基本系统基于Linux,在这种情况下:CentOs
  • 遗憾的是,修改启动脚本没有其中一条评论所指出的选项,因为它不是相应RPM软件包中的配置文件,因此更新被替换。另外我认为修改启动脚本通常是件坏事
  • 我知道,实际上连接“重新启动网络服务器”和“清除我的应用缓存”并不是应该捆绑在一起的。我会考虑其他选择
  • 我的情况如下:我可以定义虚拟主机配置的外观,但我无法定义其余服务器配置的外观。
  • 该应用程序实际上是基于PHP的(并在symfony框架上运行)。 Symfony根据它在静态配置文件中找到的内容,将大量内容预编译成动态php文件。我们通过RPM部署我们的应用程序,部署之后,实际上已经启动了Web服务器重启,所以我认为将缓存清理绑定到它可能是有意义的。但我想在收到您的所有反馈后,将缓存清理过程本身放入安装过程本身似乎更好。

3 个答案:

答案 0 :(得分:2)

你这里没有提供很多细节,所以很难给出具体的答案,但我建议你最好的选择是编写一个处理重启apache并清除缓存的脚本。它看起来像这样:

#!/bin/sh

# restart apache
/etc/init.d/httpd graceful

# whatever needs to be done to clear cache
rm -rf /my/cache/dir

Ramy建议修改Apache的系统启动脚本 - 这是一个坏主意!如果您在服务器上更新Apache,则很可能会丢失您的更改。

Dirk表示你想要做的事情可能是错误的,我认为他是对的。您还没有告诉我们您正在运行什么平台,但我可以想到一些情况,重新启动您的网络服务器和清除缓存实际上需要一起发生。

答案 1 :(得分:1)

您可以在 /etc/init.d/httpd 中修改Apache Web服务器的启动脚本,并在其中编写自己的语法。

chattr + i /etc/init.d/httpd

答案 2 :(得分:0)

如果您有(root)访问服务器的权限,您可以通过shell脚本执行此操作,但我会考虑是否是依赖apache重启的最佳缓存管理方式。