跟踪已部署应用程序的文件

3
你们用什么来部署应用程序并跟踪它们在生产环境中的文件?我的意思是,如果文件没有直接在服务器上更改,如何进行跟踪?谢谢。

2
你需要查找生产环境中的文件是否已更改,或者给定一组文件最初来自哪里吗? - Thorbjørn Ravn Andersen
1
我需要知道是否有文件在正式部署过程之外被更改了。例如:如果使用 RPM 部署软件,则可以检查在安装 RPM 后已部署的文件是否已更改。 - hgf
2个回答

1

我已经使用Git追踪HPC生产集群上的/usr/local已经3年了。

对于2.2G的文件(主要是二进制文件),使用git log -n 1; git status命令需要1分钟的时间才能在NFS上检查文件是否在部署后被修改。如果在本地磁盘上进行扫描,只需要几秒钟的时间。如果发生更改,我可以看到哪些文件以及它们的差异(如果不是二进制文件)。


+1. 当时我并没有将Git视为一个有效的解决方案,但你可以在http://serverfault.com/questions/3852/what-tool-do-you-recommend-to-track-changes-on-a-linux-unix-server上看到讨论的替代方案,其中排名靠前的解决方案之一(etckeeper http://joey.kitenet.net/code/etckeeper/)是基于分布式版本控制系统的。因此,只要不滥用它(例如用于部署),它似乎是一个很好的解决方案。 - VonC

0

我不会通过服务器上的版本控制系统来跟踪这些文件。
通常情况下(除了简单的Web应用程序部署),在生产服务器上,您不需要任何“不必要”的工具,只需要运行应用程序所需的工具即可(例如:肯定不需要版本控制系统)。

版本控制系统存在于预生产环境中,供您获取特定标签以进行部署。
但是,一旦使用该标签获取文件,则会进行部署过程:

  • 将通用配置文件中的变量替换为生产特定值
  • 停止生产进程
  • 复制并部署文件到生产服务器
  • 重新启动
  • 监视...

因此,我会设置一个外部作业(即不直接由版本控制系统管理)来比较版本化文件和相应的部署文件。


部署二进制文件(WAR、EAR、本地文件)怎么样? - hgf
@HGF:这些文件无论如何都不在版本控制系统中,并且是通过发布和部署管理流程生成/部署的。一个监视它们完整性的系统(即“它们是否在服务器上被更改?”)可能会比较服务器上发布的那些文件的SHA1 / MD5密钥和像Nexus这样的工件库中存储和引用的二进制文件(存储时自动生成SHA1 / MD5密钥)。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接