gpt4 book ai didi

Django - 如何在共享主机上设置单独的媒体/静态服务器?

转载 作者:行者123 更新时间:2023-12-05 00:03:20 26 4
gpt4 key购买 nike

我想为我的 django 应用程序获得一个虚拟主机,但是虚拟主机的存储空间相当昂贵,所以我想使用共享主机提供商来存储网站的媒体/静态内容,因为它很多便宜。我怎样才能做到这一点?

谢谢你。

备注

对于我的应用程序,我需要运行无法安装在共享主机上的专用库(例如 matplotlib),因此我将无法使用 FastCGI 在共享主机上运行 Django。

编辑

为了澄清这个问题,我需要能够在 django 中上传并将内容存储在共享主机上。这是来自 Running a Separate Media Server 部分的 Django 书中的引述。 ( link ):

This step can be slightly tricky, however. If your application involves file uploads, Django needs to be able to write uploaded media to the media server. If media lives on another server, you’ll need to arrange a way for that write to happen across the network.



但是没有关于如何实现这一点的细节。

最佳答案

没有什么可以阻止您在 (X)HTML 输出中将 URL 指向不同的主机。

例如,如果您的共享主机帐户位于 http://awesome-hosting-provider.com/~myname/ ,您可以设置MEDIA_URL在您的 settings.py对于此值,请确保使用 RequestContext渲染时并有 django.core.context_processors.media包含在 TEMPLATE_CONTEXT_PROCESSORS (注意它默认在那里)然后你可以使用 {{ MEDIA_URL }}在模板中为您的网址添加前缀。

甚至管理员也会处理此问题,只要您将其所有必需的静态文件复制到共享环境中以使其可访问。

由于您还需要处理文件上传,正如书中所说,您必须使从 Django 部署写入存储位置(在共享服务器上)成为可能。有几种方法可以实现这一点。

最简单的方法可能是使用 SSHFS 和正确的选项(如 reconnect 、合理的超时等)将存储环境的顶级目录挂载到虚拟服务器上。当然,这需要 SSH 访问共享环境。为了让事情变得更简单,设置 SSH 身份验证 key 对可能会派上用场。

或者,如果您的共享托管服务提供商允许您这样做,您可以尝试 NFS,尽管我发现至少可以说这是不可能的。

如果其他一切都失败了,你必须在你的共享环境中设置某种网络服务,它会监听来自你的 Django 部署的上传,并使 Django 应用程序转发它们。但是,在这种情况下,您必须确保它足够安全,并且没有恶意用户能够通过直接与它交谈来破坏您的存储服务器。

关于Django - 如何在共享主机上设置单独的媒体/静态服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7095481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com