You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps部署Django时无法连接Postgres Flexible Server

Django测试无法连接Azure Postgres Flexible Server的解决办法

问题根源

你用的Postgres Flexible Server如果和VNet绑定了,默认就只允许VNet内部的流量访问。Azure DevOps的微软托管代理不在这个VNet里,所以不管用域名还是IP都连不上——哪怕你没手动设防火墙规则,VNet集成本身就相当于把公共访问关了。

具体解决步骤

1. 调整Postgres的网络配置

先去Azure门户找到你的Postgres服务器,进入「网络」设置页:

  • 测试阶段快速方案:切换到「公共访问」选项,勾选「允许所有Azure服务访问此服务器」,或者把Azure DevOps代理的IP范围加进去(微软托管代理的IP可在Azure DevOps组织的代理池设置中查询)。保存配置后重新运行流水线。
  • 生产环境合规方案:不要开启公共访问,改用自托管代理——在VNet内的虚拟机上部署Azure DevOps自托管代理,让代理机器处于VNet内部,就能直接访问数据库。

2. 核对Django的数据库配置

settings.py里的数据库配置必须注意这几个细节:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你的数据库名',
        'USER': '用户名@你的服务器名',  # 必须带@服务器名后缀
        'PASSWORD': '你的数据库密码',
        'HOST': '你的服务器名.postgres.database.azure.com',
        'PORT': '5432',
        'OPTIONS': {
            'sslmode': 'require',  # Azure Postgres强制要求SSL连接
        },
    }
}

3. 在流水线中添加排查步骤

可以在测试步骤前加一段脚本,手动验证连通性,快速定位问题:

# 测试DNS解析是否正常
nslookup 你的服务器名.postgres.database.azure.com
# 测试5432端口是否可访问
nc -zv 你的服务器名.postgres.database.azure.com 5432

如果解析失败,大概率是代理的DNS配置问题;解析成功但端口不通,还是网络权限的限制导致的。

4. 检查Postgres服务器状态

确认Postgres服务器处于运行中状态,没有被暂停或重启。另外可以查看服务器的「日志」选项,里面会有拒绝连接的记录,能帮你更快定位具体原因。


内容的提问来源于stack exchange,提问作者Juan Botero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:57:11