apache - 使用 Jenkins 或 Phing 重新启动 apache

标签 apache codeigniter continuous-integration hudson phing

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

编辑:

将 jenkins 添加到 sudoer 文件并执行服务 httpd restart 后,Jenkins 抛出:处理泄漏的文件描述符。下面是通过 Jenkins 输出的 Phing 的片段。它说解决方法是安装 daemonize。不知道这意味着什么...

...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

最佳答案

如果您使用的是 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,其他什么都不能。

关于apache - 使用 Jenkins 或 Phing 重新启动 apache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6896644/

相关文章:

java - 包含 Apache POI 时的 Android 重复类错误

apache - 禁止访问 您无权访问此服务器。 Centos 6/Laravel 4

apache - 学习 Apache 的最佳网站/书籍是什么?

php - 在 Codeigniter 中调用 bool 上的成员函数 escape_str()

build-process - 持续集成与夜间构建

javascript - AngularJS PHP CORS 不适用于 FireFox

javascript - 在 codeigniter 中使用 jquery 显示确认消息

javascript - Codeigniter PHP 自动完成

c# - 使用持续集成修改 .NET 项目文件

continuous-integration - 在已安装 GitLab 的服务器上设置 GitLab CI