在OSX上运行Django

1 投票
4 回答
1625 浏览
提问于 2025-04-15 11:33

我刚刚完成了一个非常不错的Django教程,整个过程非常顺利。教程的一开始就提到,不要在生产环境中使用他们的示例服务器,所以我在完成教程后,第一件事就是尝试在Apache上运行我的应用。

我使用的是OSX 10.5,装的是标准的Apache(它不支持运行Python)和MAMP(它勉强允许在cgi-bin中运行)。问题是,我不知道该调用哪个脚本。在教程中,访问地址总是localhost:8000/polls,但我不知道这个地址应该对应哪个具体的文件。

我是不是漏掉了关于如何使用.htaccess文件的明显信息,或者教程里根本没有解释如何使用它呢?

4 个回答

3

如果你打算把它用在生产环境(或者非开发环境),那么可以考虑不使用Apache,换成一个更轻量级的服务器,比如nginx。不过如果你是在做开发工作,建议还是使用内置的服务器和Eclipse里的PyDev。这样在Eclipse的调试工具里逐行查看服务器代码会简单很多。

关于nginx和Django的安装说明可以在这里找到:http://snippets.dzone.com/tag/nginx

5

除非你打算在 OS X 上正式使用,否则可能没必要去折腾这个。如果你真的需要这样做,直接使用 mod_wsgi 就行了。别去碰 mod_python 或者其他老旧的解决方案。我之前在 Apache 上用过 mod_python,虽然现在运行得很好,但花了我无数的时间来设置。

另外,想澄清一下你提到的事情:你不会找到一个直接把网址路径(比如 /polls)和被调用的脚本对应起来的映射关系。Django 不是这样工作的。在 Django 中,你的应用程序会被加载到内存中,随时等待请求。一旦有请求进来,它会通过你在 urls.py 中创建的网址映射来处理。这实际上就是在你代码中的某个地方调用一个函数。

这就是为什么像 Apache 这样的网络服务器需要像 mod_wsgi 这样的模块,它为你的应用程序在内存中提供一个位置。和 CGI 比较一下,CGI 是网络服务器根据需要在一个特定的脚本上执行,而这个脚本的位置是通过网址和文件系统之间的物理映射来确定的。

希望这些信息对你有帮助,不会是你已经知道的内容。:)

5

你可能会发现用 .htaccess 来通过 Apache 配置 Django 并不是一件愉快的事情(虽然我承认如果你够决心,还是可以做到的……但在生产环境中,我觉得这会比必要的复杂得多)。我在 OS X 上开发和运行 Django,感觉非常顺畅。

关键在于,你必须配置 httpd.conf,通过以下三种方式之一将请求传递给 Django:mod_wsgi(这是最现代的方法),mod_python(第二好,但在 OS X 的 Python 2.5 上运行得很好),fastcgi(如果你必须和你的生产环境匹配的话)。

Django 的 部署文档 对这三种方法都有很好的建议和指导。

如果你使用的是默认的 OS X Apache 安装,编辑 /etc/apache2/httpd.conf,按照上面 Django 文档中的指示进行设置。我不能对 MAMP 发表意见,但如果你是从源代码构建 Apache(在 OS X 上这非常简单,我真想不明白为什么还有人用 MAMP……我可能有点不自信),那么就编辑 /usr/local/apache2/conf/httpd.conf

撰写回答