如何以最少的安装工作部署Django项目?

时间:2009-08-21 20:11:33

标签: python django

要使用Python / Django / MySQL部署站点,我必须在服务器上执行这些操作(RedHat Linux):

  • 安装MySQLPython
  • 安装ModPython
  • 安装Django(使用 python setup.py install
  • 在httpd.conf文件中添加一些指令(或使用.htaccess)

但是,当我使用PHP部署另一个站点(使用CodeIgniter)时,我不得不做任何事情。在共享服务器上部署Django项目时遇到了一些问题。现在,我的问题是:

  • Django项目的部署过程能否变得更容易?
  • 我做得太多了吗?
  • 可以省略某些步骤吗?
  • 在共享服务器上部署django站点的最佳方法是什么?

7 个答案:

答案 0 :(得分:4)

为了实现简单的Django部署,我将采用以下方法:

Fisrt-time服务器配置

  • 安装mod_wsgi,允许您以嵌入式模式或守护程序模式运行。
  • 安装python和virtualenv

在您的开发环境中

每次要部署

  • 将虚拟环境复制到生产服务器
  • 只需在httpd.conf文件中添加Include指令(或使用.htaccess)到项目的apache配置即可。如mod_wsgi integration with django文档中所述,可以配置Apache包含文件的一个示例是:

Alias /media/ /usr/local/django/mysite/media/

<Directory /usr/local/django/mysite/media>
  Order deny,allow
  Allow from all
</Directory>

WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi

<Directory /usr/local/django/mysite/apache>
  Order deny,allow
  Allow from all
</Directory>

Alias /media/ /usr/local/django/mysite/media/ <Directory /usr/local/django/mysite/media> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi <Directory /usr/local/django/mysite/apache> Order deny,allow Allow from all </Directory>

自动部署

  • 我会考虑使用Fabric来自动部署

答案 1 :(得分:3)

django项目的部署过程能否变得更容易?

没有。如果需要,您可以编写其中一些脚本。但是,你永远不会再安装MySQL,MySQLPuthon,mod_wsgi(或mod_python)或Django。

但是,您会一直调整您的应用程序。

我做得太多了吗?

没有。 Python(和Django)不是Apache的一部分。 PHP嵌入在Apache中。 PHP与mod_python(或mod_wsgi)完全相同。只是一块馅饼。 (显然,有些主机为您处理PHP安装,但不处理mod_wsgi或mod_python安装。)

可以省略某些步骤吗?

没有。但是,你只做一次。

在共享服务器上部署django网站的最佳方式是什么?

你正确地做到了。

当我使用php部署其他网站时(使用CodeIgniter)我不得不做任何事情

当然是不公平的比较。显然,他们已经为你安装了PHP和数据库。他们很好。

此外,PHP不是Python。 PHP是Apache的插件。 Python只是一种编程语言,它需要一个单独的Apache插件(即mod_python或mod_wsgi)。

请参阅How nicely does Python 'flow' with HTML as compared to PHP?

答案 2 :(得分:2)

Django托管支持并不像PHP那样普遍,但有一些不错的选择。我可以推荐WebFaction - 它们提供了一个易于使用的控制面板,它提供了Django版本,Python版本,mod_python,mod_wsgi,MySQL,PostgreSQL等的各种组合。它们也具有成本效益。如果您使用他们的设置,您可以获得SSH访问权限,但除了实际上传项目文件夹之外,几乎所有设置都可以通过他们的控制面板完成。

免责声明:除了是一个快乐的客户,我与他们没有其他联系。

答案 3 :(得分:1)

部署PHP站点时您不必执行任何操作,因为您的托管服务提供商已经安装了它。支持Django的Web主机通常会为您安装和配置它。

答案 4 :(得分:1)

如果您允许在虚拟机上运行映像,则只需安装此已创建的solution。我可以想象将来安装将以这种方式完成,因为复杂的安全配置可以自动完成。

答案 5 :(得分:0)

大多数共享主机站点运行LAMP(Linux,Apache,MySQL,PHP)堆栈,因此部署只需复制一些文件。如果你正在使用像CakePHP这样的PHP框架之一或者没有安装服务的东西(比如成像库),你也会经历额外的部署步骤。

使用Django(或Rails,或任何其他复杂的框架),你必须自己设置一次堆栈,然后你就可以了。

但是,您还需要考虑部署后更新。如果这是您经常要做的事情,您可能还需要查看FabricCapistrano以帮助实现自动化。

P.S。我将推荐WebFaction推荐。它就像我见过的那样接近一键式安装。虽然我主要将它们用于测试站点和原型设计,但非常满意的客户。

答案 6 :(得分:0)

您可以使用Python virtualenvpip(另请参阅“Tools of the Modern Python Hacker: Virtualenv, Fabric and Pip”)。我在虚拟环境中开发了我的Django项目。我在部署应用程序时将虚拟环境文件复制到生产计算机。我使用mod_wsgi。您必须在mod_wsig文件中写下:

import site  
site.addsitedir('C:\PythonVirtualEnv\IntegralEnv\Lib\site-packages')