0

我最近在数字海洋上部署了一个 django 应用程序。在我尝试创建一个包含图像的对象之前,一切都很好。我收到一条错误消息,提示服务器错误 (500)。

这是我尝试做的事情:

server {
listen 80;
server_name ****;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/joseph/hacka;
}

location /media/ {
    root /home/joseph/hacka;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/run/gunicorn.sock;
}
}

这是我的 settings.py 代码:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

不幸的是,这并没有成功。
如果您知道我的问题的答案,请帮助我。

更新
我发现我的代码存在问题:当我将调试设置为 True 时,我收到一条错误消息
errno 13: Permission denied.

但是,我不知道如何解决这个问题。

如果可以,请你帮助我。

4

3 回答 3

0

只需从 setting.py 中的 MEDIA_URL 中删除 '/' 就像这样 MEDIA_URL = 'media/'

于 2019-01-25T08:09:23.287 回答
0

我可能遇到过类似的问题。我的设置是 Gunicorn 在 Nginx 后面运行。将文件上传到 django 媒体库时,请求不会显示在 Gunicorn 的访问日志中。这意味着它被 Nginx 停止并返回 500 错误代码。进一步搜索导致该站点https://killtheradio.net/technology/nginx-returns-error-on-file-upload/解决了我的问题。

基本上,Nginx 将文件主体临时保存到磁盘的/var/lib/nginx/client_body. 但是 Nginx 进程无法访问此文件夹。一个简单的 chown 解决了这个问题。

于 2019-06-16T07:13:13.707 回答
0

我猜你的问题是因为媒体文件。你检查media设置了吗?

您需要检查 settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = '/media/'
于 2018-08-23T12:03:52.333 回答