使用git管理生产网站?

4
我有一个网站,在生产服务器上有大约15,000个文件。现在有一名远程开发人员正在网站上做大部分工作,但我偶尔也需要进行一些编辑。很明显我们需要一些版本控制,所以我正在尝试设置git。
我真的希望保持设置简单和直接。我们不需要任何集成器来查看我们的更改 - 我们都完全信任彼此可以将更改推送到生产网站。我也不认为有必要在将更改推送到生产服务器之前将它们推送到暂存服务器,因为我们可以在本地机器上测试的内容都可以在那里测试。我基本上只是想要一个可以防止我们互相覆盖文件的东西。这是我考虑的场景:
          Production Server
              ↗↙ ↖↘          
Developer1(LAMP)  Developer2(WAMP)

问题:

  1. 这个工作流程对于一个由两个开发人员组成的团队(其中一个只进行偶尔的编辑)是否有意义?还有更好的吗?

  2. 在开发人员和生产服务器之间添加staging server有任何优势吗?

  3. 我认为生产服务器应该是一个裸存储库,带有一个后置接收钩子指向webroot文件夹,我们会将其克隆到每个开发人员的机器上,然后git commit/git push启动将任何更改返回到生产环境中。是这样吗?

  4. 有没有简便的方法在生产服务器上创建一个裸存储库,然后将网站现有的15,000个文件添加到其中?或者我必须先将它们下载到本地工作站的克隆库中,然后执行git add/commit/push来将它们加载到生产服务器存储库中?(它们可能需要近13个小时才能上传。)

谢谢!

1个回答

3

工作流本身没有问题。但通常情况下,“规范”的存储库是单独的,您需要使用其他机制(例如rsync)在生产服务器上手动部署。这样做有以下好处:

  1. 您的生产服务器更新不会与开发工作流程绑定。如果您的生产服务器(曾经!)需要进行代码更改后的任何操作 - 重新启动Web服务器,刷新某些缓存,进行模式更改等 - 那么突然间,生产系统的问题会干扰您更新代码的能力,这很糟糕。

  2. 您不必担心意外泄露对 .git 目录的访问权限,并暴露所有源代码和开发历史记录。

  3. 需要两次意外才能使网站崩溃(损坏主分支并进行部署),而不仅仅是一次(损坏主分支)。

  4. 也许你们只是两个人,但是“更新网站”按钮具有不同于“更新代码”按钮的授权是有用的。

分段服务器存在的目的就是像生产环境一样容易出现故障。您只有两名开发人员,但已经在使用截然不同的操作系统;我相信至少有一个人的开发环境与生产环境不同。:)

否则,您无法向裸存储库添加文件。您需要使用工作副本才能处理工作树中的任何内容。


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