python - 如何通过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
在这种情况下是否有帮助
附上詹金斯工作的截图。
解决方案
如之前的评论中所述,您在此处遇到权限问题。
我假设您的 Jenkins 实例在用户“jenkins”下运行,该用户无法执行管理员(root)命令。因此,您需要通过 SSH 登录机器并确保用户“jenkins”可以使用sudo
.
您可以在此处找到编辑sudoers
文件的帮助:如何在 Ubuntu 和 CentOS 上编辑 Sudoers 文件。我建议您只允许某些命令。
如果您决定“jenkins”用户需要输入密码,请使用以下命令:
echo password | sudo -S systemctl reload apache2.service
当然,您应该以安全的方式存储该密码并将其隐藏在构建中。Jenkins Credentials Plugin可以帮助您解决这个问题。
推荐阅读
- kotlin - 将字符串转换为 ascii 的扩展函数
- windows - vssadmin 从 Cygwin shell 执行,类未注册
- c# - 绑定复杂对象中的某些参数字段
- html - 更改窗口大小时,文本超出了 div 的边界
- model-view-controller - 在 SearchModel 中搜索 primaryKey 失败
- python - 生成列表长度的重复索引
- iphone - 带有 arduino 或树莓派的 iPhone 5s 指纹传感器
- javascript - 来自数组 1 输出而不是 2 的随机输出
- javascript - 如何使用动态添加和删除行的引导程序形式将值从 javascript 传递到 PHP?
- java - Lucene 不断添加文档,而使用 updateDocument