首页 > 解决方案 > 如何通过jenkins build重启apache2服务

问题描述

在通过 jenkins 为我的 django 项目设置部署时,我陷入了必须重新启动 apache2 服务以将新更改反映到客户端的位置。我不确定如何在运行systemctl reload apache2.service命令后提供用户密码。

我尝试了以下选项,但没有运气。

1)systemctl reload apache2.service

结果:

Failed to reload apache2.service: Interactive authentication required.
See system logs and 'systemctl status apache2.service' for details.
Build step 'Execute shell' marked build as failure

2)sudo systemctl reload apache2.service

结果 :

sudo: no tty present and no askpass program specified
Build step 'Execute shell' marked build as failure 

3)也不确定sshpass在这种情况下是否有帮助

附上詹金斯工作的截图。

这是从詹金斯截取的截图

标签: pythondjangoapachejenkins

解决方案


如之前的评论中所述,您在此处遇到权限问题。

我假设您的 Jenkins 实例在用户“jenkins”下运行,该用户无法执行管理员(root)命令。因此,您需要通过 SSH 登录机器并确保用户“jenkins”可以使用sudo.

您可以在此处找到编辑sudoers文件的帮助:如何在 Ubuntu 和 CentOS 上编辑 Sudoers 文件。我建议您只允许某些命令。

如果您决定“jenkins”用户需要输入密码,请使用以下命令:

echo password | sudo -S systemctl reload apache2.service

当然,您应该以安全的方式存储该密码并将其隐藏在构建中。Jenkins Credentials Plugin可以帮助您解决这个问题。


推荐阅读