为什么不使用NGINX新安装的Django应用程序服务静态资产?

时间:2014-07-22 05:04:05

标签: python django nginx

我有一台运行OS X 10.9.3的Mac。我正在尝试设置由gunicorn服务的PostgreSQL数据库支持的Django应用程序,以及NGINX提供的静态资产。我是Django的老手,MySQL使用开发服务器(manage.py runserver)运行。但我很擅长用virtualenv,gunicorn和NGINX来设置它。所以我按照说明here

我的Django项目在http://localhost:3026成功投放。作为对数据库连接的测试,我想看一下Django Admin界面。我访问了http://localhost:3026/admin/。我在下面提供了截图。

为什么这个管理页面看起来如此丑陋?它缺乏必要的图形界面和它应该具有的CSS?看起来NGINX没有正确地提供这些静态资产。我该如何排除故障并解决此问题?

我甚至做过python manage.py collectstatic。那就成功地将所有静态文件复制到/opt/myenv/static的所有静态文件中(我认为?)。您可以看到该命令here的输出。然后我重新开始了gunicorn和nginx。我以为这会解决它。但不幸的是,它并没有。问题仍然存在。在我的Django settings.py文件中,我按如下方式配置了STATIC变量:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'djangobower.finders.BowerFinder',
)
STATIC_ROOT = "/opt/myenv/static/"
STATIC_URL = '/static/'

enter image description here

2 个答案:

答案 0 :(得分:1)

静态文件仅在使用调试服务器时由Django提供。当站点由单独的Web服务器处理时,您需要配置Web服务器以提供静态文件本身。

答案 1 :(得分:0)

实际上,建议您在使用当地主机时使用Django自己的开发服务器(python manage.py runserver)(根据我多年的Django和virtualenv经验)。因为它节省了您在本地配置nginx的宝贵时间。

但是,如果您确实希望使用Nginx在本地为静态文件提供服务,则可能需要将 django的contrib ** / admin 静态文件目录复制到virtualenv指向的位置**。您的nginx的virtualenv文件(如* .nginx文件)将如下所示:

 server_name  localhost;

 location /static {
     alias /path/to/where/your/admin/static/directory/is;
     autoindex on;
     access_log off; #optional
  }

然后重新启动nginx你可能会让它运行起来。 PS:有关在Mac上本地安装和配置Nginx的更多信息,您可能需要检查this