django 不在生产中保存媒体文件

django not saving media files in production

我在 ubuntu 18.04 和 apache2 上设置了 django 项目,但出现问题。 媒体文件不保存。 当我尝试使用 django-filer 上传文件时,我收到 500 个内部服务器错误(我用 charfield 和 filefield 编写了简单的插件 - 同样发生)独立于 DEBUG=True/False 设置。 我使用 manage.py runserver 上传了几个文件,效果很好——我什至可以在生产中使用这些文件,但尝试上传任何新文件都会导致错误 settings.py:

MEDIA_URL = '/media/'
MEDIA_ROOT = '/mysite/public/media/'
STATIC_URL = '/static/'
STATIC_ROOT = '/mysite/public/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

apache 配置:

alias /static /mysite/public/static
<Directory /mysite/public/static>
Require all granted
</Directory>

alias /media /mysite/public/media
<Directory /mysite/public/media>
Require all granted
</Directory>

<Directory /mysite/src/proj>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIDaemonProcess mysite python-home=/mysite/venv python-path=/mysite/src/
WSGIProcessGroup mysite
WSGIScriptAlias / /mysite/src/proj/wsgi.py

总结: manage.py 运行服务器运行良好。 在生产服务器上,我可以管理之前上传的文件,但尝试上传新文件会导致错误 500。

我认为您需要更改 media 文件夹的权限。像

sudo chmod -R 775 your_django_project/public/media