动态部署django管理员应用程序

时间:2013-11-15 13:44:38

标签: python django

我最近开始了我的python / django演练,还有一个令我烦恼的问题:我没有找到一个真的简单,不显眼,无痛的方式来部署Django app =(。我只是看到mod_python,fastCGI,wsgi东西的教程 - 所有这些都是我创建的每个 webapp所必需的..

我已经习惯了Java web-apps(JSF + Tomcat),我习惯于将* war包放在webapps文件夹中。或者通过tomcat-manager上传* war。或者,更好的是,进行maven-hot-remote-deploy。而就我而言,简单的PHP应用程序也需要最少的配置(在设置apache2 conf之后,只需将php-webapp-folder转换为/ var / www /就可以了......)。我不相信Python缺乏这种功能=((

我的观点是:在安装干净的OS之后(让我们以JEE-VPS为例),我只需要设置一次我的Web服务器。如果我开发webapp01,我选择上面的一个选项来部署它。当我开发我的webapp02时,同样的事情 - 无需更改tomcat-some-conf.xml以在webapp01之后部署它。显然我只考虑小型的webapps,比如Django管理员。 =]

我的目标是设置一个Python / Django网络服务器并动态创建Django管理员webapp,自动将它们热部署到网络服务器。所以,我最初设置一次Web服务器并准备好http://myserver.com。当用户A生成webappA01时,它将在http://myserver.com/userA/webappA01中透明地显示。

有可能吗?

2 个答案:

答案 0 :(得分:1)

现代的方法是在Apache或NGINX上使用uwsgi(我推荐这个)。 我不知道一个可以自动部署Django应用程序的工具。有很多像Heroku这样的Web服务可以自动部署您的应用程序(您只提供VCS存储库)。

您可以通过编写一些脚本来半自动部署Django应用程序,这些脚本将同步您的代码库,为数据库应用迁移并重新加载Web服务器。查看fabricBuildbot

答案 1 :(得分:0)

首先,Python / Django本身不提供“插入式”部署功能,也不知道做任何与war包类似的方法。

有些服务可以提供像Heroku这样的简单部署方法,但我建议您为初学者阅读Django's official documentation about deploying

  

我的目标是设置Python / Django网络服务器并动态创建   Django管理webapp,自动将它们热部署到   网络服务器。所以,我最初设置一次Web服务器的东西   准备好http://myserver.com。当用户A生成webappA01时,它   将透明地提供   http://myserver.com/userA/webappA01

您可以使用custom AdminSite instances完成您想要做的事情。 基本上,您可以编写一个实例化名为“webapp”的AdminSite实例的视图(当然,您可以从URL中提取这些参数,并检查数据库中是否存在Web应用程序数据)。您需要从该视图或通过覆盖其 init 方法将所需的任何模型连接到AdminSite实例。 Django管理员的autodiscover功能可能不适用于自定义管理网站。