我正在构建一个基于Web2Py的Web应用程序,并且正在远程EC2开发服务器上进行大部分开发。我想版本控制整个系统,包括所有python模块,网页和Apache配置文件。这些文件显然分散在我的Linux机器上,但我希望能够使用单个命令检出/提交。我在命令行上对SVN不熟悉 - 有没有办法使用带有sym链接的某种虚拟目录来执行此操作?
欢迎任何想法。感谢。
答案 0 :(得分:3)
如果您已经开始开发,那么简单的方法就是组织一个SVN树,然后sym链接模块和httpd.conf。您也可以使用virtualenv并仅检查virtualenv配置。
答案 1 :(得分:3)
对于单个开发人员,Git(book)更适合方便。您可以非常轻松地在本地“提交”,并将更改推送到远程服务器(可能是您的EC2实例),它只需要SSH连接即可工作。但我可能会使用托管解决方案,如GitHub或任何其他具有SSH和安装Git的托管解决方案。我为我的“私人”项目使用GitHub作为我的public projects和DreamHost。
您可以将所有文件放在一个目录结构中,然后使用一些自动过程部署它们。对于Python,我建议像distutils甚至easy_install这样的Python标准。对于更复杂的环境,您需要考虑Chef之类的内容,如果您开始扩展到多个EC2实例,这将非常重要。即使没有多服务器需求,像Chef这样的可重复自动化部署也是一个高效的开发人员所做的事情。
只是不要试图编写一个“快速而肮脏”的shell脚本来进行部署,它们很脆弱且非常难以维护。如果你不喜欢厨师,研究替代品并花时间学习一个。花费的时间将用于弥补。
答案 2 :(得分:1)
像模糊lolipop一样,我也强烈建议使用git。特别是因为它的低污染足迹。 SVN会在您的repo的每个子文件夹中留下.svn
个文件夹,如果您的自动脚本会复制/粘贴它们,这会花费很多。
我建议你有一个中央git repo和一个发布脚本来检出版本,然后将文件复制到它们的位置。
<强>替代地强>
您可以将您的仓库分段并使用符号链接连接您的网站,但是将生产源指向仓库可能是不好的做法,我仍然会利用复制脚本上面列出的方法。
答案 3 :(得分:1)
我个人使用git来管理网站和配置文件。
我不确定我是否会在相同的回购中混合使用apache配置和网站,但如果我采用这种方法,我会在不同的分支中进行,并适当地设置遥控器。
根据你运行的操作系统,etckeeper很好,并且与基于debian / apt的系统很好地集成。
答案 4 :(得分:0)
有没有想过将虚拟机重命名为S3?它几乎就像“可怜的勒芒版本控制”的云版本。
我已经完成了符号链接,尽管这是一个很好的解决方案但最初并不是最容易使用的。