【问题标题】:Static files not being served on AWS LightsailAWS Lightsail 上未提供静态文件
【发布时间】:2020-11-21 00:30:33
【问题描述】:

在尝试了多个教程并阅读了 StackOverflow 2 天后,我正在寻求帮助!

设置: 开发版在 AWS Lightsail 服务器上运行顺畅。在生产部署期间,我遇到了静态文件的持续问题。该应用程序在指定的子域上运行,但缺少所有 JS/CSS/images/...

我遵循了官方文档,但无济于事。 1/https://docs.bitnami.com/aws/infrastructure/django/get-started/deploy-django-project/ 2/https://docs.bitnami.com/aws/infrastructure/django/get-started/deploy-django-project/

包含相关文件的我的文件夹树:

Project
    - conf
       - httpd-app.conf
       - httpd-prefix.conf
    - Django2Tutorial
      - settings.py
      - wsgi.py
    - Solar
        - static
    - static (after running collectstatic function in terminal,-it includes the admin, Solar statics)

我的设置:

STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATIC_URL = '/static/'
DEBUG = False
ALLOWED_HOSTS = ['54.169.172.***']

wsgi.py 文件

import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/Project')
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/Project/egg_cache")
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'DjangoTutorial2.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

我的配置文件:

1. httpd-app.conf 文件

<IfDefine !IS_DJANGOSTACK_LOADED> 
Define IS_DJANGOSTACK_LOADED
WSGIDaemonProcess wsgi-djangostack   processes=2 threads=15    display-name=%{GROUP}
</IfDefine> 

<Directory "/opt/bitnami/apps/django/django_projects/Project/DjangoTutorial2">

    Options +MultiViews
    AllowOverride All
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>
    
    WSGIProcessGroup wsgi-djangostack

    WSGIApplicationGroup %{GLOBAL}
                    
</Directory>

Alias /static "/opt/bitnami/apps/django/django_projects/Project/static"
<Directory "/opt/bitnami/apps/django/django_projects/Project/static">
Require all granted  
</Directory>

WSGIScriptAlias /  '/opt/bitnami/apps/django/django_projects/Project/DjangoTutorial2/wsgi.py'

2。 httpd-prefix.conf 文件

# Include file
RewriteEngine On
RewriteCond "%{HTTP_HOST}" ^ec2-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})\..*\.amazonaws.com(:[0-9]*)?$
RewriteRule "^/?(.*)" "%{REQUEST_SCHEME}://%1.%2.%3.%4%5/$1" [L,R=302,NE]
Include "/opt/bitnami/apps/django/django_projects/Project/conf/httpd-app.conf"

其他调整:(/opt/bitnami/apache2/conf/bitnami) 1/ bitnami-apps-prefix.conf 文件

Include "/opt/bitnami/apps/django/django_projects/Project/conf/httpd-prefix.conf"

2/bitnami.conf 文件

VirtualHost _default_:80>
    WSGIScriptAlias / /opt/bitnami/apps/django/django_projects/Project/DjangoTutorial2/wsgi.py
<Directory /opt/bitnami/apps/django/django_projects/Project>
    AllowOverride all
Require all granted
Options FollowSymlinks
    </Directory>
DocumentRoot /opt/bitnami/apps/django/django_projects/Project
</VirtualHost>
  1. bitnami-apps-vhosts.conf 文件为空?可以吗?

也检查了:

  • 多次重启 Apache
  • 玩弄了 static_url 和 static_roots

任何人都可以建议如何进行吗?这两天实在是太郁闷了哈哈。

注意,也许这会有所帮助: 仔细检查 findstatic 功能,它将我重定向到 Solar/static 文件夹。我想既然我跑了收集静态,我应该指向 apache conf 中的项目级静态文件夹而不是太阳能级静态文件夹。

【问题讨论】:

  • 打开一个已知的静态 URL,告诉我们浏览器和 apache 日志显示的错误
  • @VictorE: 错误 404。如果我尝试打开其中一张图片,它会显示我的自定义 error404 页面
  • 向我们展示 /var/log/apache2/error.log 中的错误(或者您的服务器的错误日志是什么。这应该告诉您它如何将请求映射到您目录中的文件
  • 您需要将“别名/static/ /opt/bitnami/apps/django/django_projects/Project/static/”添加到您的虚拟主机配置中
  • 顺便说一句,只是记住了 Apache,在 access.log 中记录了 404 错误。你能检查那个文件吗?

标签: django deployment django-staticfiles amazon-lightsail


【解决方案1】:

您需要将Alias /static/ /opt/bitnami/apps/django/django_projects/Project/static/ 添加到您的虚拟主机配置中,以便服务器知道将/static/ 请求映射到该文件夹​​。

【讨论】:

  • 已解决!太感谢了。我生命中的 48 小时都浪费在这上面......
  • 我这样做了。在httpd-app.conf 文件末尾添加了Alias /alternativ/static "/opt/bitnami/projects/alternativ/static" &lt;Directory /opt/bitnami/projects/alternativ/static&gt; Require all granted &lt;/Directory&gt;。但它仍然没有加载任何东西。
【解决方案2】:

我在这上面浪费了很多时间,这是我最后的工作 bitnami.conf 文件。

<VirtualHost _default_:80>
    WSGIDaemonProcess django_site python-home=/opt/bitnami/projects/env python-path=/opt/bitnami/projects/django_site.com
    WSGIProcessGroup django_site
    WSGIScriptAlias / /opt/bitnami/projects/django_site.com/django_site/wsgi.py

    <Directory /opt/bitnami/projects/django_site.com>
        AllowOverride all
        Require all granted
        Options FollowSymlinks

        WSGIProcessGroup django_site
    </Directory>

    Alias /static/ /opt/bitnami/projects/django_site.com/static/
</VirtualHost>

Include "/opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf"

注意:

  • 我知道不推荐,但是我把所有的代码都放在bitnami.conf里面,忽略了httpd-app.confhttpd-prefix.conf

  • 我在 /opt/bitnami/projects/env 创建了 python virtualenv 并在那里安装了所有需要的库

  • 在运行python manage.py collectstatic之前,我将以下代码添加到我的settings.py 文件中

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2015-10-30
    • 2021-05-03
    • 1970-01-01
    • 2018-08-09
    • 2020-09-11
    • 2013-12-27
    • 2013-01-13
    • 2021-10-31
    相关资源
    最近更新 更多