我有兴趣找出在服务器上组织Django应用程序的最佳实践方法。
你在哪里放置Django代码? (旧的)Almanac说/home/django/domains/somesitename.com/但我也看到了/ opt / apps / somesitename /中的内容。我认为/ opt / idea听起来更好,因为它不是全球性的,但我之前没有看到过选择,并且可能更适合应用程序进入特定于站点的用户主页目录。
< / LI>您是否建议拥有一个全局部署用户,每个站点一个用户,或每个站点env一个(例如,sitenamelive,sitenamestaging)。我在想每个网站一个。
如何对配置文件进行版本控制?我目前将它们放在源控件顶级的/ etc /文件夹中。例如/etc/nginc/somesite-live.conf。
如何配置服务器并进行部署?多年来,我一直拒绝使用Chef和Puppet,希望能够使用基于Python的东西。 Silver Lining似乎尚未准备就绪,我对Patchwork(https://github.com/fabric/patchwork/)寄予厚望。目前我们只是使用一些自定义Fabric脚本进行部署,但“服务器配置”由bash脚本和一些用于添加密钥和创建用户的手动步骤处理。我即将调查Silk Deployment(https://bitbucket.org/btubbs/silk-deployment),因为它似乎最接近我们的设置。
谢谢!
答案 0 :(得分:1)
我认为必须有更多关于您正在部署的网站类型的信息:根据网站之间的关系存在差异,无论是以编程还是“合法”(如业务关系):
<强>织物强> 面料是惊人的 - 如果它的设置和配置适合你:
我们的代码布局
所以我们的代码库布局看起来有点像这样:
/ <-- folder containing readme file etc
/bin/ <-- folder containing nginx & uwsgi binaries (!)
/config/ <-- folder containing nginx config and pip list but also things like pep8 and pylint configs
/fabric/ <-- folder containing fabric deployment
/logs/ <-- holding folder that nginx logs get written into (but not committed)
/src/ <-- actual source is in here!
/thirdparty/ <-- third party libs that we didn't trust the hosting of for pip
可能有争议,因为我们将二进制文件加载到我们的仓库中,但这意味着如果我在盒子上升级nginx,并想要回滚,我只是通过操纵git来实现。我知道什么对构建什么有用。
我们的部署工作方式:
我们所有的源代码都托管在一个私人bitbucket repo上(我们有很多repos和一些用户,这就是为什么bitbucket对我们来说比github更好)。我们有一个'服务器'的用户帐户,它有自己的bitbucket的ssh密钥。
在Fabric中部署在每台服务器上执行以下操作:
“可用性测试”(认为单元测试,但针对实时服务器) - 点击“测试”帐户上的所有网页和API,以确保它在不影响实时统计数据的情况下获取合理的数据。
我们还有一个备份git服务,所以如果bitbucket关闭,它会优雅地落到那,我们甚至有jenkins集成,在提交到'deploy'分支时,它会导致部署通过
可怕的位
因为我们使用云计算并期望高吞吐量,所以我们的盒子会自动生成。这是一个默认图像,其中包含git repo等的副本,但总是会过时,所以这是一个启动脚本,它自己进行部署,这意味着添加到集群的新框会自动更新。