我阅读了很多“如何为 Django 建立独立的媒体服务器”。但我有自己的决定。
/media - 文件服务器上的目录。我将它安装到我的 django 服务器 (SSHFS),这样我就可以在那里保存用户图像等。然后我将 media_url 更改为 file server address
/media,在我的文件服务器上有 nginx,它将分发文件。
这样能行吗?
django服务器的负载会不会很大?
谢谢。
最佳答案
如果我正确理解了您的服务器布局——nginx 在您的文件服务器上运行并且它正在将请求代理到另一台服务器上的 Django,它应该可以工作。最好服务器位于同一个 LAN 或数据中心,以减少延迟和网络错误。您还想确保运行 nginx 工作进程的用户有权访问/media/。
让 nginx 为媒体和静态目录提供服务会减少 Django 服务器的负载。顺便说一下,Gunicorn 和 uWSGI 是备受推崇的 Django 服务器。
使用/media/目录有点不寻常,因为它是 usually reserved for CDROMs or USB flash drives .通常使用/var/www/example.com/media
或/srv/www/example.com/media
。
设置
我只是想确保您的域设置正确,因为它会影响 MEDIA_URL 设置的使用方式,尤其是如果您从那里提供 Javascript,请耐心等待。如果您的网站是 example.com,您的 DNS 设置应将 example.com 指向您的 nginx/文件服务器 IP 地址。
您的设置文件
Django settings.py
MEDIA_URL = "/media/"
nginx example.conf
root/;
在下面的例子中看起来很吓人,但是 have a look at the docs to verify this .
server {
server_name example.com;
location /media/ {
root /;
}
# OTHER LOCATION RULES
location / {
# PROXY RULES HERE
}
}
访问媒体文件
您的 Django 项目可以使用简单的绝对 URL 来引用您的图像
<img src="/media/user1234/2012/03/04/aeiou.jpg" alt="aeiou">
或use django.core.context_processors.media, RequestContext and {{ MEDIA_URL }}以防万一您将媒体文件移动到 CDN。
<img src="{{ MEDIA_URL }}/user1234/2012/03/04/aeiou.jpg" alt="aeiou">
关于python - django 的另一台主机上的媒体服务器。这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684824/