尽管别名和目录指令正确,Apache 仍不提供 Django 静态文件

问题描述 投票:0回答:1

我在让 Apache 为托管在单独服务器上的 Django 项目提供静态文件时遇到问题。我的主服务器

http://metadbdev.riken.jp/BEHF
是 Apache 配置所在的位置。我正在尝试在
192.168.80.86
上启用 Django 服务器并通过主服务器提供其静态文件。

Apache 配置 (

httpd.conf
):

## BEHF
ProxyPass /BEHF/static/ !


Alias /BEHF/static/ /home/julio/repos/event_finder/django_frontend/staticfiles/
<Directory /home/julio/repos/event_finder/django_frontend/staticfiles/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Location /BEHF>
    ProxyPass http://192.168.80.86:8000
    ProxyPassReverse http://192.168.80.86:8000
</Location>

Django

settings.py
静态设置:


BASE_DIR = Path(__file__).resolve().parent.parent
# STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')


# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['192.168.80.86','127.0.0.1','http://metadbdev.riken.jp/']

STATIC_URL = '/BEHF/static/'
# STATIC_URL = 'http://192.168.80.86/BEHF/static/'
STATIC_ROOT = '/home/julio/repos/event_finder/django_frontend/staticfiles/'


STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]


目录列表

.                           
├── db.sqlite3              
├── django_frontend         
│   ├── __init__.py         
│   ├── __pycache__         
│   ├── asgi.py             
│   ├── settings.py         
│   ├── urls.py             
│   └── wsgi.py             
├── manage.py               
├── nohup.out               
├── search_engine           
│   ├── __init__.py         
│   ├── __pycache__         
│   ├── admin.py            
│   ├── apps.py             
│   ├── migrations          
│   ├── models.py           
│   ├── tests.py            
│   ├── urls.py             
│   └── views.py            
├── static                  
│   ├── images              
│   └── styles              
├── staticfiles             
│   ├── admin               
│   ├── bef.png             
│   ├── images              
│   ├── lol.txt             
│   └── styles              
└── templates               
    ├── base.html           
    ├── base_no_search.html 
    ├── document.html       
    ├── search.html         
    └── search_results.html    

SELinux 状态:已禁用

日志

[14/Aug/2023 07:43:13] "GET / HTTP/1.1" 200 2299
[14/Aug/2023 07:43:13] "GET /static/styles/main.css HTTP/1.1" 404 179
[14/Aug/2023 07:43:13] "GET /static/images/bef.png HTTP/1.1" 404 179
[14/Aug/2023 07:43:13] "GET /static/styles/main.css HTTP/1.1" 404 179

附加信息

  • 我已确认
    mod_alias
    模块已加载到 Apache 中。
  • staticfiles
    目录及其内容的文件权限设置为可由 Apache 用户访问。
  • 我尝试使用别名直接访问静态文件,例如
    http://metadbdev.riken.jp/BEHF/static/images/bef.png
    ,但结果是 404。
  • 其他配置文件中没有冲突的
    Alias
    指令。
  • 我运行了 Django 的
    collectstatic
    命令以确保所有静态文件都位于
    staticfiles
    目录中。
  • 暂时注释掉
    ProxyPass
    /BEHF
    指令并不能解决问题。

任何见解或建议将不胜感激!

django apache
1个回答
0
投票

删除位置

 /BEHF/
proxypass 并将其设置在您的
static
proxypass 设置下,如下

ProxyPass /BEHF/static/ !
ProxyPass /BEHF/ http://192.168.80.86:8000/
ProxyPassReverse /BEHF/ http://192.168.80.86:8000/

也就是在同一个解析器下制定规则

© www.soinside.com 2019 - 2024. All rights reserved.