要使用Python / Django / MySQL部署站点,我必须在服务器上执行这些操作(RedHat Linux):
但是,当我使用PHP部署另一个站点(使用CodeIgniter)时,我不得不做任何事情。在共享服务器上部署Django项目时遇到了一些问题。现在,我的问题是:
答案 0 :(得分:4)
为了实现简单的Django部署,我将采用以下方法:
Fisrt-time服务器配置
在您的开发环境中
每次要部署
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>
自动部署
答案 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,或任何其他复杂的框架),你必须自己设置一次堆栈,然后你就可以了。
但是,您还需要考虑部署后更新。如果这是您经常要做的事情,您可能还需要查看Fabric或Capistrano以帮助实现自动化。
P.S。我将推荐WebFaction推荐。它就像我见过的那样接近一键式安装。虽然我主要将它们用于测试站点和原型设计,但非常满意的客户。
答案 6 :(得分:0)
您可以使用Python virtualenv和pip(另请参阅“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')