使用 Apache 从 Django 中的网络驱动器加载媒体文件
Posted
技术标签:
【中文标题】使用 Apache 从 Django 中的网络驱动器加载媒体文件【英文标题】:Loading media files from a network drive in Django with Apache 【发布时间】:2021-03-15 07:59:31 【问题描述】:我有一个 django 页面,我试图在其中添加存储在网络驱动器中的横幅图像。
在开发环境中:
setting.py:
MEDIA_URL = '/media/'
MEDIA_ROOT = PureWindowsPath('//共享驱动器/文件夹/').drive
urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
......
......
]
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
models.py:
类 WelcomePage(models.Model): 部门名称 = models.CharField(max_length=100,blank=True,null=True) bannerimage = models.ImageField(upload_to='DjangoPortal/welcome/images/',blank=True)
home.html:
<div class="card border-secondary mb-3">
<div class="card-body" style="padding: 0px !important;">
<img src=" pagedata.bannerimage.url " />
</div>
</div>
通过以上设置页面完美运行
生产中:
以上所有设置保持不变。在 settings.py DEBUG =False 和 ALLOWED_HOSTS=[prod server ip, localhost]
在 httpd.conf 我在下面添加了
定义 MEDIAROOT "//共享驱动器/文件夹/"
别名 /media "$MEDIAROOT"
要求全部授予
目录>
但图像未加载。 我在 Apache 重启时遇到错误
**
AH00526:C:/Apache24/conf/httpd.conf 第 562 行的语法错误:
我做错了什么吗?
技术规范为 Windows Server 2012 R2 + Python 3.9 + Django 3.0.1 + SQL Server+ Apachelounge 2.4
如果您曾经处理过或知道这种情况,请指导。
【问题讨论】:
【参考方案1】:我设法解决了这个问题。
问题在于 httpd.conf 文件
在 httpd.conf 中的设置必须更改为
别名/media/ //共享驱动器/文件夹/
要求全部授予
目录>
并且 apache 服务必须由没有管理员权限且有权访问共享驱动器的特定用户启动
其余所有设置如前所述
【讨论】:
【参考方案2】:在生产环境中保持与开发环境相同的设置。
MEDIA_ROOT = PureWindowsPath('//共享驱动器/文件夹/').drive
它应该可以工作。
祝你有美好的一天
【讨论】:
以上是关于使用 Apache 从 Django 中的网络驱动器加载媒体文件的主要内容,如果未能解决你的问题,请参考以下文章
我如何在 ubuntu 的 apache 网络服务器上运行 Django 和 phpmyadmin
如何使用 Django/Apache/mod_wsgi/MySQL 最大化 EC2 的性能?
在哪种情况下,来自驱动程序节点的对象被序列化并发送到 apache spark 中的工作节点