首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django静态文件错误404 - aws lightsail

django静态文件错误404 - aws lightsail
EN

Stack Overflow用户
提问于 2020-11-17 16:40:02
回答 1查看 331关注 0票数 1

我阅读了亚马逊文档中关于如何Deploy A Django Project的文章

我的settings.py

代码语言:javascript
复制
DEBUG = False

ALLOWED_HOSTS = ['X.XXX.XXX.XXX']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',
        'HOST': 'localhost',
        'PORT': '5432',
        'USER': 'postgres',
        'PASSWORD': 'mypass'
    }
}

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'cms/static')
]

我使用'Host': 'localhost'是因为'HOST': '/opt/bitnami/postgresql/',给了我这个错误,我问了一个关于here的问题

代码语言:javascript
复制
django.db.utils.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/opt/bitnami/postgresql/.s.PGSQL.5432/.s.PGSQL.5432"?

和我的笔记本电脑一样,python manage.py collectstatic --noinput也运行得很好。

我在urls.py中添加了静态根

代码语言:javascript
复制
urlpatterns = [
    path('', include('myapp.urls')),
    .
    .
    
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

/opt/bitnami/apache2/conf/vhosts下,我创建了两个文件:

cms-http-vhost.conf

代码语言:javascript
复制
<IfDefine !IS_CMS_LOADED>
  Define IS_CMS_LOADED
  WSGIDaemonProcess cms python-home=/home/bitnami/py37-venv/ python-path=/home/bitnami/project/cms
</IfDefine>
<VirtualHost 127.0.0.1:80 _default_:80>
  ServerAlias *
  WSGIProcessGroup cms
  Alias /robots.txt /home/bitnami/project/cms/static/robots.txt
  Alias /static/ /home/bitnami/project/cms/static/
  <Directory /home/bitnami/project/cms/static>
    Require all granted
  </Directory>
  WSGIScriptAlias / /home/bitnami/project/cms/cms/wsgi.py
  <Directory /home/project/cms/cms>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>
</VirtualHost>

cms-https-vhost.conf

代码语言:javascript
复制
<IfDefine !IS_CMS_LOADED>
  Define IS_CMS_LOADED
  WSGIDaemonProcess cms python-home=/home/bitnami/py37-venv/ python-path=/home/bitnami/project/cms
</IfDefine>
<VirtualHost 127.0.0.1:443 _default_:443>
  ServerAlias *
  SSLEngine on
  SSLCertificateFile "/opt/bitnami/apache2/conf/bitnami/certs/server.crt"
  SSLCertificateKeyFile "/opt/bitnami/apache2/conf/bitnami/certs/server.key"
  WSGIProcessGroup APPNAME
  Alias /robots.txt /home/bitnami/project/cms/static/robots.txt
  Alias /static/ /home/project/cms/static/
  <Directory /home/project/cms/static>
    Require all granted
  </Directory>
  WSGIScriptAlias / /home/project/cms/cms/wsgi.py
  <Directory /home/project/cms/cms>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>
</VirtualHost>

我用python manage.py runserver 0.0.0.0:8000运行项目,终端中的每个状态文件都有404错误:

代码语言:javascript
复制
"GET /static/img/showcase.jpg HTTP/1.1" 404 179

如果我将调试模式更改为True,每个静态文件都将正确加载。

我还检查了this answerthis one,但它们都没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-11-24 15:31:10

Why does DEBUG=False setting make my django Static Files Access fail?中找到我的答案

urls.py中,我添加了下面这一行:

代码语言:javascript
复制
from django.views.static import serve 

将这两个urls添加到urlpattern中:

代码语言:javascript
复制
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}), 
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),

当使用DEBUG=FALSE时,静态文件和媒体文件都可以访问。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64871840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档