在OSX上运行django

时间:2009-05-12 23:29:12

标签: python django macos

我刚刚完成了非常好的django教程,一切都顺其自然。本教程的第一部分之一就是说它不会在生产中使用他们的示例服务器,我在教程之后的第一个行为是尝试在apache上运行我的应用程序。

我正在运行OSX 10.5并且有标准的apache(拒绝运行python)和MAMP(它不情愿地允许它在cgi-bin中)。问题是我不知道要调用哪个脚本,在教程中它始终是localhost:8000 / polls但我不知道这是如何映射到特定文件的。

我是否遗漏了一些明显有关如何处理.htaccess文件的内容,或者教程没有真正解释如何在其他地方使用它?

4 个答案:

答案 0 :(得分:5)

使用.htaccess通过Apache配置Django可能不会有太多的乐趣(虽然我承认如果你足够坚定,你可能会这样做...但是对于生产我怀疑它会更复杂比必要的)。我在OS X中开发和运行Django,它可以非常无缝地工作。

秘诀是你必须配置httpd.conf以通过三个选项之一将请求传递给Django:mod_wsgi(最现代的方法),mod_python(第二好,但工作正常在OS X的Python 2.5)上,fastcgi(嗯......如果你必须匹配你的生产环境)。

Django的deployment docs对这三个选项都有很好的建议和指导。

如果您使用默认的OS X apache安装,请使用上面Django文档中的指令编辑/etc/apache2/httpd.conf。我不能代表MAMP,但是如果你从源代码构建Apache(在OS X上这么容易,我想知道为什么有人对MAMP感到困扰......我的不安全感正在显示),编辑/usr/local/apache2/conf/httpd.conf

答案 1 :(得分:5)

除非您打算使用OS X进行制作,否则您可能不想打扰。如果必须这样做,请直接转到mod_wsgi。不要打扰mod_python或更旧的解决方案。我在Apache上做了mod_python,虽然它现在运行得很好,但它花了不少时间来设置。

另外,只是为了澄清一些基于你所说的内容:你不会在url路径(比如/ polls)和被调用的脚本之间找到一个映射。 Django并不像那样工作。使用Django,您的应用程序将加载到内存中等待请求。一旦请求进入,它将通过您在urls.py中创建的url映射进行调度。归结为代码中的某个函数调用。

这就是为什么对于像Apache这样的网络服务器,你需要一个像mod_wsgi这样的模块,它可以让你的应用程序在内存中占有一席之地。与CGI之类的东西相比较,其中网络服务器在url和文件系统之间物理映射的位置按需执行特定脚本。

我希望这有用,而不是告诉你一些你已经知道的事情。 :)

答案 2 :(得分:3)

如果您计划将其用于生产(或非开发)模式,则另一个选择是取消Apache并使用像nginx这样轻量级的东西。但是如果您正在进行开发工作,那么您将需要坚持使用Eclipse中的内置服务器和PyDev。在Eclipse调试器中逐行浏览服务器代码要容易得多。

nginx / Django的安装说明:http://snippets.dzone.com/tag/nginx

答案 3 :(得分:2)

另一种选择是考虑使用虚拟机进行开发。您可以安装生产服务器将运行的任何操作系统的完整版本 - 比如Debian - 并在VM中运行Apache和DB。

您可以在Finder中连接到虚拟磁盘,这样您仍然可以在OSX上使用TextMate(或其他)进行编辑。

通过VMWare Fusion我有很好的经验。