【问题标题】:Can I execute a shell script when restarting (starting) apache webserver重新启动(启动)apache网络服务器时我可以执行shell脚本吗
【发布时间】:2012-01-20 14:14:59
【问题描述】:

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

是否有 apache 配置指令或任何其他方式在网络服务器(重新)启动时执行 shell 脚本?

谢谢, 菲尔

添加一些更多信息,正如一些答案已经提出的那样:

  • 基础系统是基于ofc linux的,在这种情况下:CentOs
  • 遗憾的是,正如其中一个 cmets 所指出的那样,修改启动脚本不是选项,因为它不是相应 RPM 包中的配置文件,因此被更新所取代。另外我认为修改启动脚本通常是一件坏事
  • 我明白了,实际上将“重新启动网络服务器”和“清除我的应用程序缓存”这两个链接并不完全应该捆绑在一起。我会考虑其他替代方案
  • 我的情况如下:我可以定义虚拟主机配置的样子,但我无法定义其余服务器配置的样子。
  • 该应用程序实际上是基于 PHP 的(并在 symfony 框架上运行)。 Symfony 将很多东西从它在静态配置文件中找到的东西预编译到动态 php 文件中。我们通过 RPM 部署我们的应用程序,在部署之后,实际上已经启动了 web 服务器重启,所以我认为将缓存清理与它联系起来可能是有意义的。但是我觉得在得到大家的反馈之后,看起来还是把缓存清理过程放到安装过程本身比较好。

【问题讨论】:

    标签: apache shell webserver restart


    【解决方案1】:

    您在这里没有提供很多细节,因此很难给出具体答案,但我建议您最好的选择是编写一个脚本来处理重新启动 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 认为您正在尝试做的事情可能是错误的,我认为他是对的。您还没有告诉我们您正在运行什么平台,但我可以想到一些需要同时重新启动网络服务器和清除缓存的情况。

    【讨论】:

      【解决方案2】:

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

      chattr +i /etc/init.d/httpd

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2016-09-05
          • 1970-01-01
          • 1970-01-01
          • 2021-03-24
          • 1970-01-01
          • 2021-12-16
          • 2020-05-27
          • 2022-01-20
          • 2021-11-15
          相关资源
          最近更新 更多