0

我在 GCP VM 实例上使用 apache2 运行 django mod_wsgi,当我在 DEBUG=False 上运行它时,静态文件工作正常,但是当我检查媒体文件时,它们得到 404,而文件显然存在于服务器上。我的 conf 基于以下 django 文档https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/modwsgi/#serving-files

#settings.py
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "media")
MEDIA_URL = os.environ.get("MEDIA_URL", "/media/")

STATIC_ROOT = os.path.join(PROJECT_ROOT, "static")
STATIC_URL = os.environ.get("STATIC_URL", "/static/")

#apache2
Alias /media/ /home/ubuntu/myshop/media/
Alias /static/ /home/ubuntu/myshop/static/

<Directory /home/ubuntu/myshop/media>
Require all granted
</Directory>

<Directory /home/ubuntu/myshop/static>
Require all granted
</Directory>

尝试重新启动 apache2 甚至服务器,但也没有工作

4

2 回答 2

0

看来你的别名是错误的...

#apache2
Alias /media/ /home/ubuntu/myshop/media/
Alias /static/ /home/ubuntu/myshop/static/

<Directory /home/ubuntu/myshop/media>
Require all granted
</Directory>

别名有反斜杠,而您的目录语句没有。

于 2020-01-15T17:03:46.613 回答
0

修复了这是一个 https 问题,我需要将配置添加到虚拟主机文件端口 80 和 443

<VirtualHost *:80>
...
Alias /media/ /home/ubuntu/myshop/media/
Alias /static/ /home/ubuntu/myshop/static/

<Directory /home/ubuntu/myshop/media>
Require all granted
</Directory>

<Directory /home/ubuntu/myshop/static>
Require all granted
</Directory>
...
</VirtualHost>
<VirtualHost *:443>
...
Alias /media/ /home/ubuntu/myshop/media/
Alias /static/ /home/ubuntu/myshop/static/

<Directory /home/ubuntu/myshop/media>
Require all granted
</Directory>

<Directory /home/ubuntu/myshop/static>
Require all granted
</Directory>
...
</VirtualHost>
于 2020-01-20T06:46:21.817 回答