-2

我正在尝试在 heroku 服务器上部署我的 django 应用程序,我按照本网站https://devcenter.heroku.com/articles/getting-started-with-python#introduction的说明进行操作。它运行良好,直到“heroku 打开”命令。当我来到需要使用“heroku run python manage.py syncdb”命令托管数据库的部分时,它未能显示消息“OperationalError:无法连接到服务器:连接被拒绝服务器是否在主机上运行” localhost" (127.0.0.1) 并接受端口 5432 上的 TCP/IP 连接?"。我尝试了很多修复,包括此处建议的修复Deploying Django app's local postgres database to heroku? http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html.我尝试了所有解决方案,包括在 postgresql.conf 中编辑 "listen_address" = '*' 和 tcpip_socket='true' 并在 pg_hba.conf 中编辑 ipv4 和 v6 值以托管所有 127.0.0.1 255.255.0.1 信任主机所有所有 10.0.0.99/32 md5 主机所有所有 0.0.0.0/0 。

但是他们都没有工作。我猜问题的出现是因为heroku无法连接到我的本地postgres服务器。这很奇怪,因为我可以通过pgadmin访问postgres服务器。

而且在 django settings.py 看起来像这样

数据库= {'默认':{'引擎':'django.db.backends.postgresql_psycopg2','名称':'django_test','用户':'postgres','密码':'******' , 'HOST': 'localhost', # 或者你的数据库托管在 'PORT' 上的 IP 地址: '5432', } } 我是否需要更改它并改用 heroku 的数据库设置?

4

1 回答 1

1

localhost在服务器上指向服务器而不是您的本地计算机。原因是因为运行您的 django 代码的服务器将尝试解析 dns 名称localhost,并且它有一个指向127.0.0.1解析该名称的服务器本地的指针。这不会指向您正在使用的计算机。

您需要在 heroku 上获取HOST: 'xxx.xxx.xxx.xxxpostgres 实例,并在 django 设置中更改为新 postgres 实例的 IP 地址。

于 2015-09-25T16:01:34.290 回答