Django应用程序通过manage.py runserver工作,但通过mod_uwsgi呈现的页面无法引用静态元素

时间:2013-04-25 20:44:38

标签: django nginx mod-wsgi

我在这里结束了......并且计划开始深入研究Django源代码来解决这个问题。

我有一个Django应用程序,它是通过启动项目以标准方式创建的。到目前为止,我一直在通过“python manage.py runserver 8081”进行测试。

现在我试图使用mod_uwsgi将其置于Nginx之后。

所以我使用here上的优秀说明进行测试。

我的ini文件如下所示:

uwsgi]
chdir=<path_to_my_project>
module=<application>.wsgi:application
pidfile=/tmp/<pid_file_name>
max-requests=5000
daemonize=/var/log/uwsgi/<log_file_name>
env=DJANGO_SETTINGS_MODULE=<application>.settings
http-socket=127.0.0.1:50000

所以我使用以下方式启动应用程序:

uwsgi --ini uwsgi.ini

一切似乎都很好看:

  1. 创建“/ var / log / uwsgi /”的日志文件:看起来不错。
  2. 目录已更改:看起来不错。日志文件表示如此。
  3. 模块已加载:假设它已...我在日志中看不到任何错误消息。
  4. 创建了pidfile:看起来不错。我确实在文件中看到了正确的PID号。 通过SIGINT测试了关闭过程。
  5. 在http-socket上听:看起来不错。

  6. 问题: 当我通过http://site_url点击该网站时;我在浏览器中获得了HTML页面。但是没有反映出任何CSS样式。此外,我的java脚本函数都没有执行。所以不确定什么是错。

    仅供参考:我注意到日志中有以下几行:

    [pid: 15730|app: 0|req: 7/7] 127.0.0.1 () {36 vars in 696 bytes} [Thu Apr 25 16:40:50 2013] GET / => generated 11774 bytes in 2 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 8/8] 127.0.0.1 () {36 vars in 710 bytes} [Thu Apr 25 16:40:50 2013] GET /static/jquery/jquery-1.9.1.min.js => generated 2874 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 9/9] 127.0.0.1 () {36 vars in 727 bytes} [Thu Apr 25 16:40:50 2013] GET /static/bootstrap/css/bootstrap.css => generated 2877 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 10/10] 127.0.0.1 () {36 vars in 716 bytes} [Thu Apr 25 16:40:50 2013] GET /static/bootstrap/js/bootstrap.min.js => generated 2883 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 11/11] 127.0.0.1 () {32 vars in 570 bytes} [Thu Apr 25 16:40:50 2013] GET /favicon.ico => generated 2808 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 12/12] 127.0.0.1 () {36 vars in 696 bytes} [Thu Apr 25 16:40:51 2013] GET / => generated 11774 bytes in 2 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 13/13] 127.0.0.1 () {36 vars in 710 bytes} [Thu Apr 25 16:40:51 2013] GET /static/jquery/jquery-1.9.1.min.js => generated 2874 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 14/14] 127.0.0.1 () {36 vars in 727 bytes} [Thu Apr 25 16:40:51 2013] GET /static/bootstrap/css/bootstrap.css => generated 2877 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 15/15] 127.0.0.1 () {36 vars in 716 bytes} [Thu Apr 25 16:40:51 2013] GET /static/bootstrap/js/bootstrap.min.js => generated 2883 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    [pid: 15730|app: 0|req: 16/16] 127.0.0.1 () {32 vars in 570 bytes} [Thu Apr 25 16:40:51 2013] GET /favicon.ico => generated 2808 bytes in 3 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
    

    是否有一些我似乎错过的额外配置?

    非常感谢您的时间和投入。如果我找到一个,我会留下一个解决方案。

    ...最佳

2 个答案:

答案 0 :(得分:0)

您可能需要查看有关提供静态文件的django文档部分。 mod_wsgi的规则适用于mod_uwsgi。更简单的方法是配置uWSGI以提供静态文件: http://uwsgi-docs.readthedocs.org/en/latest/StaticFiles.html

如果您的网站负载很重,请检查有关卸载的部分

通常避免使用django来提供静态文件

答案 1 :(得分:-1)

我没有使用nginx而是使用Apache,运行mod_wsgi。 我有可能使用

Alias /static/ /var/www/django-project/static/

所有文件都在我的目录中,可在http://example.com/static/访问。 所以也许你可以使用nginx do the same

编辑: 这会跳过wsgi / cgi / uwsgi的进程,并允许http守护进程直接处理静态文件。没有必要使用python来解析这些请求 - 因为它们只访问静态文件。