我最近在运行 Ubuntu、Python 2.7.3、django.VERSION 1.5.1 的 EC2 服务器上上传了我的应用程序。我已经设法在没有任何 CSS/Images 或 JS 的情况下成功启动它。我可以查看模板并导航它们意味着模板目录设置正在运行。 看起来我缺少静态/媒体文件的一些设置。 任何人都可以请教吗?
“cat/etc/apache2/httpd.conf”的内容
WSGIScriptAlias / /home/ubuntu/site/ProjectName/ProjectName/wsgi.py
WSGIPythonPath /home/ubuntu/site/ProjectName
<Directory /home/ubuntu/site/ProjectName/ProjectName>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
settings.py内容
MEDIA_ROOT = '/var/www/media/'
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/var/www/static/admin/'
STATICFILES_DIRS = (
'/var/www/static',
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
TEMPLATE_DIRS = ('/var/www/templates',)
**$ ls -ltr /var/www**
共16个
-rw-r--r-- 1 root root 177 Jul 26 20:21 index.html
drwxr-xr-x 3 www-data root 4096 Jul 28 04:20 static
drwxr-xr-x 5 www-data root 4096 Jul 28 04:20 media
drwxr-xr-x 20 www-data root 4096 Jul 28 16:29 模板
apache2/access.log 中的错误
[29/Jul/2013:13:41:36 -0500] "GET/static/neatadmin/css/bootstrap.css HTTP/1.1"404 1798 [29/Jul/2013:13:41:36 -0500]“GET/static/neatadmin/css/jquery.fancybox.css HTTP/1.1”404 1806 [29/Jul/2013:13:41:36 -0500]“GET/static/neatadmin/js/jquery.js HTTP/1.1”404 1798 [29/Jul/2013:13:41:36 -0500]“GET/static/neatadmin/js/jquery.metadata.js HTTP/1.1”404 1804 [29/Jul/2013:13:41:36 -0500]“GET/static/neatadmin/css/login.css HTTP/1.1”404 1794 [29/Jul/2013:13:41:36 -0500] “GET/static/neatadmin/js/error.js HTTP/1.1” 404 1794
apache2/error.log 中的错误(我认为它不相关,仅供引用)
[Mon Jul 29 13:41:29 2013] [error]/usr/local/lib/python2.7/dist-packages/django/conf/init.py:221: DeprecationWarning :您没有在“mail_admins”日志记录处理程序上定义过滤器:添加隐式 debug-false-only 过滤器。参见 http://docs.djangoproject.com/en/dev/releases/1.4/#request-exceptions-are-now-always-logged [2013 年 7 月 29 日星期一 13:41:29] [错误] DeprecationWarning) [2013 年 7 月 29 日星期一 13:41:29] [错误] [Mon Jul 29 13:41:35 2013] [error]/usr/local/lib/python2.7/dist-packages/django/conf/init.py:221: DeprecationWarning: 你有没有在“mail_admins”日志处理程序上定义过滤器:添加隐式 debug-false-only 过滤器。参见 http://docs.djangoproject.com/en/dev/releases/1.4/#request-exceptions-are-now-always-logged [2013 年 7 月 29 日星期一 13:41:35] [错误] DeprecationWarning) [2013 年 7 月 29 日星期一 13:41:35] [错误]
最佳答案
您的设置混淆了 STATICFILES_DIRS
和 STATIC_ROOT
的用途。 STATICFILES_DIRS
包含项目全局的额外静态资源。这反射(reflect)了 TEMPLATE_DIRS
设置。该目录将包含在您的源存储库中。
STATIC_ROOT
是用于在生产环境中提供静态文件的集合点。当您运行 collectstatic
时,来自所有已安装应用程序和 STATICFILES_DIRS
的文件都会复制到此处。本地开发不需要设置这个。该目录不会包含在 repo 中,因为它只包含生成的内容。你的网络服务器配置应该有一个别名来服务 STATIC_ROOT
作为 STATIC_URL
对于使用 Apache 的例子你应该看到文档 https://docs.djangoproject.com/en/stable/howto/deployment/wsgi/modwsgi/#serving-files
关于EC2 ubuntu 静态文件问题上的 Django 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932260/