【问题标题】:Restarting apache with Jenkins or Phing使用 Jenkins 或 Phing 重新启动 apache
【发布时间】:2013-01-03 06:44:53
【问题描述】:

我目前正在使用 Phing 和 Jenkins 为我的 CodeIgniter 应用程序自动构建和部署。我遇到的一个问题是重新启动 apache 服务。我在 Phing 中尝试过,但没有足够的权限。重新启动的最佳方式是什么?

编辑:

在 sudoer 文件中添加 jenkins 并执行服务 httpd 重启后,Jenkins 抛出:处理泄漏的文件描述符。下面是通过 Jenkins 的 Phing 输出的 sn-p。它说解决方法是安装守护进程。不知道这意味着什么……

...Build_test > compress:

     [echo] YUI Compression started
     [echo] Replacing normal JS with compressed files.
     [echo] Replacing normal CSS with compressed files.
     [echo] chmoding assets
     [echo] YUI Compression ended

Build_test > pdepend:


Build_test > httpd_restart:

     [echo] Stopping httpd: [  OK  ]
     [echo] Starting httpd: [  OK  ]


BUILD FINISHED

Total time: 13.1424 seconds

Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
[JDepend] JDepend plugin is ready
[JDepend] Found 68 classes in 1 packages
Finished: SUCCESS

【问题讨论】:

  • 在 Jenkins 中生成新进程存在问题。我猜重新启动 apache 属于这一类,因为将创建一个新的进程 ID。您是否尝试将重新启动添加到构建后任务?我只是想知道为什么您在执行压缩和 phpdepend 任务之后要重新启动 Apache?你是在重建虚拟主机配置还是什么?
  • 我正在使用 APC。如果我不重新启动,有时我会出现白屏死机。如果您知道 APC 解决该问题的方法,请告诉我 :) 但是他们是否有一个插件用于重新启动 apache 作为构建后任务?
  • 其实我刚刚找到了这个插件,谢谢你的提示!但是,如果我可以在不重新启动 apache 的情况下解决白屏死机问题,那就太好了!
  • 从未遇到过该 APC 问题,但我会调查它并尝试修复它,而不是在 apache 重新启动时围绕它编写代码。祝你好运!

标签: apache codeigniter continuous-integration hudson phing


【解决方案1】:

如果您在 Linux 上,您可以使用 sudo 命令运行 Phing,以允许它有足够的权限来重新启动 apache。

sudo phing restartapache

假设restartapache 是一个调用apache restart 命令的exec 任务。例如:

<target name="restartapache" description="Restarts the web server">
    <exec command="/etc/init.d/apache2 restart" />
</target>  

为避免 sudo 命令提示输入密码,您可以为运行构建的任何用户帐户更新 sudo 权限(此示例演示关闭 jenkins 用户的 sudo 密码提示):

sudo visudo

然后添加以下行:

Defaults:jenkins !requiretty,!lecture
jenkins ALL=NOPASSWD:/etc/init.d/apache2

以上内容已根据this answer 进行了编辑以提高安全性,因此 Jenkins 只允许在没有密码的情况下重新启动 apache。

【讨论】:

  • 让它在一些例外情况下工作。查看新信息的说明。
  • 授予 jenkins 运行 anything 的一揽子权限是个坏主意。请参阅 this answer here 了解如何改进您的解决方案。
  • 谢谢。我已经用您改进的解决方案更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多