当涉及到生产网络服务器之类的东西时,系统管理员和开发人员的职责的最佳实践是什么?具体来说,我正在考虑更新/安装软件。(据我所知,开发人员不应该在生产服务器上拥有 root 访问权限。)
生产网络服务器正在运行 Wordpress,需要将其更新到最新版本。谁负责保持其更新?
如果开发人员在应用程序上有自定义的破解插件或自定义的核心文件(在这个例子中是 WP)怎么办?
答案1
我发现在大多数情况下,如果您是物理服务器的负责人,最好不要向开发人员授予根访问权限。
这有点像一场“圣战”辩论,因为我相信你会找到持不同意见的开发人员。我个人在这场辩论中站在双方立场上。
我不向开发人员(即使是 100% 信任的开发人员)授予根访问权限的主要原因是,他们通常需要一些软件包才能使 XYZ 正常工作。他们会继续安装它...或重新配置已经存在的某些东西以使其正常工作...或者...好吧...你明白我的意思。
几个月过去了......服务器需要重新安装或重新创建......突然没人知道为什么“它在旧服务器上可以运行,但在新服务器上却不行”。
答案当然是,您正在查看的文档并不包括开发人员为使系统第一次运行而进行的所有小软件包和调整。
这对双方来说都是一件痛苦的事情......但如果系统管理员负责服务器、软件包和文档......而开发人员负责开发和软件......我想你最终会发现这是值得的。
如果开发人员需要自定义插件、模块、配置、调整……没问题……为他们做……但要记录下来,以便下次可以重现它。
答案2
黄金法则:不要让非管理员触碰任何你不想损坏的东西,否则你将承担责任。
开发人员应该有权访问测试环境。一旦他们的工作准备好投入生产机器,就应该将其移交给系统管理员。如果开发人员完成了他们的工作并正确记录了流程,那么一切都会顺利进行。如果没有,他们就会因为没有充分测试而受到惩罚。
答案3
我也曾经历过这种战斗。我的答案是,负责服务器正常运行的人应该负责所有更新、更改等。其他人不应该有能力在服务器上执行这些类型的功能。如果你的工作是确保服务器正常运行,如果老板要求你对服务器负责,那么维护和保护服务器就是你的责任。
大多数开发人员都会告诉你,他们需要管理员级别的服务器访问权限,而且大多数人都会不同意我的观点,但我却是那个在凌晨 2 点服务器挂断时必须重新启动服务器的人,在更新失败后必须重建服务器,停机费用由我的部门承担,等等。我必须向 CIO 汇报任何影响我们 SLA 的事情,因此我是唯一一个拥有管理员级别服务器访问权限的人,并且我负责所有组件、更新、更改等。
答案4
有一种趋势是模糊开发和运营之间的区别。让你的开发人员成为系统管理员,让你的系统管理员成为开发人员。
从这个意义上说,WordPress 可以从一些自动化(和程序化)博客配置工作中受益。许多 WordPress 用户维护多个 WP/WPMU 实例,及时更新它们至少很麻烦。
您可以在以下网址找到关于哲学的精彩(有趣)概述Agile 2009 中的敏捷基础设施幻灯片