主要问题:在生产服务器上部署使用Git是一个好策略吗?
我看到的很多很多的部署策略围绕在服务器上进行Git(开发,分段和生产)。
对于部署到舞台/制作来说,这样的优点显而易见:
但是,我看到一些缺点:
git pull
可能会失败,如果在生产中有某种不确定的变化(也可以用-f超越) 部署为服务公司(例如Beanstalkapp.com,deployhq.com)使用FTP,SFTP或SSH。 Beanstalkapp特别擅长只修改基于git历史的文件(vs重新部署每个文件)。 这些服务不要求你在你的舞台/制作服务器上使用git(如果你通过SSH进行部署,则可以使用该策略)。
我发现我喜欢使用sftp:
在最佳实践和安全性方面,在生产服务器上使用git是否容易? 如果没有,那么在跳过持续集成工具的同时部署一个好的方法是什么?
(由于时间/预算/客户端的限制,我只会询问有关跳过CI工具的问题,因此无法在我的日常使用中使用)。
回答你的问题:是的,使用git(或任何其他版本控制软件)部署是一个很好的select,特别是当你的基础设施开始变得复杂/庞大时。
回答你的面子
安全必须分层次完成,即使git是一个真正的攻击媒介,有人仍然需要访问服务器来做到这一点。 有良好的服务器安全性,基于SSH密钥的身份validation和访问控制/日志logging,你将有非常低的风险。
如果你想写一个部署工具,当然你必须考虑一个回滚过程,以防代码更新失败。 好事是像capistrano(我更熟悉)的工具已经有了所有这些内置的步骤,你可以改变行为等等。
我认为最好的方式是使用像Capistrano这样的部署工具,或者使用部署者Vlad,甚至如果你已经有Chef(或者其他的configurationpipe理工具),Chef也会部署它。
例如,Capistrano默认情况下是针对导轨,但是您可以调整它来部署任何东西。 它会连接到你的服务器,更新代码(保留一些旧版本以防需要回滚到以前的版本),执行数据库迁移或清理等任务,然后根据需要重新启动服务。 你可以为你的环境量身定做,甚至可以有不同的环境(我曾经和生产合作过,还有另外3个人)。
所有其他的工具都可以让你做这样的事情,而且我认为花时间编写一个部署脚本只有在你的系统与'平常'系统完全不同时才有效。