如何最小化安装工作部署Django项目?
为了在服务器上用Python/Django/MySQL部署一个网站,我在RedHat Linux上需要做以下几件事:
- 安装MySQLPython
- 安装ModPython
- 安装Django(使用python setup.py install命令)
- 在httpd.conf文件中添加一些指令(或者使用.htaccess文件)
但是,当我用PHP(使用CodeIgniter框架)部署另一个网站时,我什么都不用做。在共享服务器上部署Django项目时,我遇到了一些问题。现在,我有几个问题:
- Django项目的部署过程能不能简单一些?
- 我是不是做得太多了?
- 有没有步骤可以省略掉?
- 在共享服务器上部署Django网站的最佳方法是什么?
7 个回答
Django的托管支持没有PHP那么普遍,但还是有一些不错的选择。我可以推荐WebFaction——他们提供一个简单易用的控制面板,可以选择不同版本的Django、Python,还有mod_python、mod_wsgi、MySQL、PostgreSQL等。价格也很实惠。如果你使用他们的服务,你可以通过SSH访问,但大部分设置都可以通过控制面板完成,除了实际上传你的项目文件夹。
免责声明:除了我是他们的满意客户外,我与他们没有其他关系。
为了方便Django的部署,我会做以下几步:
第一次服务器配置
- 安装 mod_wsgi,这个工具可以让你以 嵌入式 模式或 守护进程 模式运行。
- 安装Python和virtualenv。
在你的开发环境中
- 使用virtualenv。可以看看mod_wsgi和virtualenv的配置。
- 安装你需要的Django版本(使用python setup.py install)。
- 安装你的Python库。
- 开发你的项目。
每次你想要部署的时候
- 把你的虚拟环境复制到生产服务器上。
- 在你的httpd.conf文件中添加一个Include指令(或者使用.htaccess)来配置你项目的Apache。根据mod_wsgi与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>
自动化部署
- 我会考虑使用Fabric来自动化部署。
django项目的部署过程能不能简单点?
不能。如果你愿意,可以把其中一些步骤写成脚本来自动化。不过,你以后不会再重新安装MySQL、MySQLPython、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)。