-1

我正在尝试在 linux 上使用 apache2 和 mod_wsgi 运行 pyhton django 项目。

它似乎没有运行任何 python 代码。当我在浏览器中输入网站的 url(我的服务器上的 mysite.com)时,页面会加载它应该加载的模板文件,但是,任何 python 都显示为常规文本,并且静态文件也不会加载。

要检查是否启用了 mod_wsgi,我在终端中输入了 a2enmod,它说模块 wsgi 已经启用。此外,这是一个在开发服务器上运行良好的现有项目。

我正在关注https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/上的教程 ,因此在启动项目时将以下代码添加到 httpd.conf 文件中。

<IfModule wsgi_module>
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
WSGIPythonPath /var/www/mysite

Alias /static/ /var/www/mysite/signup/static/signup

<Directory /var/www/mysite/mysite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

<Directory /var/www/mysite/mysite/template>
DirectoryIndex integrate.html
Options Indexes FollowSymLinks

</Directory>


WSGIDaemonProcess mysite.com python-path=/var/www/mysite:/usr/local/lib/python2.7/dist-packages
WSGIProcessGroup mysite.com
</IfModule>
4

2 回答 2

1

错误的一件事是:

Alias /static/ /var/www/mysite/signup/static/signup

应该:

Alias /static /var/www/mysite/signup/static/signup

或者:

Alias /static/ /var/www/mysite/signup/static/signup/

对于子 URL,必须平衡尾部斜杠的使用。也就是说,出现在两者上或都不出现在两者上。

您还缺少目录“/var/www/mysite/signup/static”的目录块,以告诉 Apache 它可以访问该目录中的文件。

我不明白的是为什么尽管您将其映射到“注册”子目录。为什么不只映射到“静态”目录?你可能在那里也有一些奇怪的东西。

最后,如果你看到的是 Python 源代码,那么听起来有点像你把你的 Django 站点放在 DocumentRoot 下,这是完全错误的,然后上面的内容没有被使用。但是由于您没有很好地解释它,所以问题出在哪里并不完全清楚。您实际上没有遵循 Django 文档所做的事情并没有帮助。我建议您再次阅读文档。

于 2013-06-11T22:10:47.737 回答
0

如果您使用 WSGIDaemonProcess 和 WSGIProcessGroup (我总是把它们放在第一位)删除 WSGIPythonPath /var/www/mysite

我也没有<IfModule wsgi_module>or DirectoryIndex(应该包含在您的 URLConf 中)

你在使用模板吗?不知道为什么你会看到原始 python。

于 2013-06-11T20:14:32.123 回答