Я в основном разрабатываю для Windows, но я тестирую свое приложение с помощью WSL, так как я отправлю его на сервер Linux. Моя текущая проблема связана с подключением приложения django, работающего на WSL, к postgres, работающему в Windows. Во многих статьях объясняется, как подключиться к postgres, работающему на WSL, но не наоборот.
Подключение к Postgres, работающему в Windows, из django, работающего на WSL
Ответы (1)
Я не смог протестировать все это, поэтому нам может потребоваться настроить несколько элементов в этом ответе, но вот мои рекомендуемые шаги:
Во-первых, если это экземпляр WSL2, mDNS должен работать для доступа к IP-адресу хоста Windows из WSL. Для начала попробуйте
ping $(hostname).local
изнутри WSL.Если это разрешает IP-адрес, то это шаг 1. Если нет, то есть альтернативы (см. этот ответ).
Я предполагаю, что пинг не вернется из-за брандмауэра. Вам понадобится правило, чтобы включить его. Из административной оболочки PowerShell
New-NetFirewallRule -DisplayName "WSL Ping" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow -Protocol ICMPv4
. Затем попробуйтеping $(hostname).local
снова. Удалите правило с помощьюRemove-NetFirewallRule -DisplayName "WSL Ping"
Если это сработает, то у вас действительно есть ответ о том, как получить доступ к PostgreSQL - настройте правило брандмауэра для этого интерфейса. Должно получиться что-то вроде
New-NetFirewallRule -DisplayName "WSL PostgreSQL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow -Protocol TCP -LocalPort 5432
.Тогда вы сможете получить к нему доступ из приложения Django в WSL, используя адрес {computername} .local.
django.db.utils.OperationalError: FATAL: no pg_hba.conf entry for host "<ip address>", user "<user>", database "<database name>", SSL off
. Я решил это, добавив разрешенный IP-адрес в pg_hba.conf.
- person Timothy Oliver; 14.05.2021
pg_hab.conf
и настроек Django?
- person NotTheDr01ds; 14.05.2021