部署 Python Web 应用程序时,使用以下方法部署应用程序的优缺点是什么:
- 使用 VCS 在服务器上进行结帐
- 使用 FTP/SSH/rsync 传输本地结帐的副本
- 创建适当的包并将其传输到服务器
(注 1 - 我目前使用方法 1。但是我的存储库可能包含许多其他与项目相关的工件以及实际应用程序,因此这似乎最适合 SVN,在那里我可以只签出相关文件夹 - 使用 DVCS 全有或全无方法,这看起来不是一个好主意)。 (注 2 - 我目前正在切换到 DVCS)
答案1
我选择 4:在服务器上进行克隆,然后对其进行存档并部署(如我的git push 部署工具,Giddyup)。
根据我的经验,其他方法存在的问题是:
- VCS 签出:您的签出包括版本控制元数据,如果您忽视使用 Web 服务器配置对其进行适当保护,则可能会将您的源代码暴露给攻击者或好奇的人。
- FTP/rsync:这种方法没有什么特别的问题,尽管一个简单的实现(FTP,或 rsync 到空目录)需要更多的时间和带宽来传输所有内容。还有一个令人不快的习惯,就是部署未签入的内容(诊断总是一场冒险那一),因为它只是放在你的本地工作副本中。(你可以解决这个问题,但它们大多归结为“进行本地签出”,这演变为 (1)。
- 虽然我是一个包装螺母,我发现打包大多数(TM)webapps都是小题大做——它们是数据,而不是程序(从服务器的角度来看),因此将其包装在包中最终是不必要的(假设您有一个良好的部署机制,包括记录您的部署,详尽的修订控制它们,等等)。