Django应用程序与postgres后端在新设置中抛出错误(Azure VM)

时间:2015-12-03 18:10:14

标签: python django postgresql azure

我有一个Django应用程序(带有postgresql后端),我曾经在本地开发服务器上测试,然后简单地推送到Heroku(我选择的服务)。我有一个Procfile告诉Heroku dynos什么进程旋转起来,然后从不担心其他任何事情。

我现在正在迁移到Azure,我正在设置我自己的VM(v1)来托管我的app + postgres db。现在我需要建立自己的网络服务器,不幸的是我有这种经验。那么有人可以指导我如何设置自己的网络服务器吗?我的最终目标是设置 Gunicorn与NginX作为反向代理。不过,第一步是为初学者设置Gunicorn,并开始看到一些HTTP流量。我该怎么做?

这是我的目录结构:

app/
    __init__.py
    models.py
    tests.py
    views.py
project/
    __init__.py
    wsgi.py
    urls.py
    settings.py
    celery.py
    static/
    templates/
    middleware/

我的 wsgi.py 文件的内容是:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
from django.core.wsgi import get_wsgi_application
from dj_static import Cling

application = Cling(get_wsgi_application())

我尝试了以下内容:

gunicorn -b 0.0.0.0:8080 project.wsgi:application
它爆发了;我看到以下内容: enter image description here

我同样在Azure VM中添加了端点,如下所示: enter image description here

我同样为端口5432添加了端点。最后,当我运行这个时,我收到错误: Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?。你能指出我做错了吗?

1 个答案:

答案 0 :(得分:1)

根据你的描述,它似乎是一个PostgreSQL配置问题。因为我对ubuntu + PostgreSQL + python27 + psycopg2进行了快速测试,以测试Azure VM上本地PostgreSQL的连接。但是,我无法重现你的问题,它在我身边工作得很好。以下是我在python上安装PostgreSQL服务和测试的步骤,以获取您的信息:

1,远程访问Azure VM,并通过sudo apt-get update安装PostgreSQL,sudo apt-get install PostgreSQL postgresql-contrib

2,创建一个新的PostgreSQL用户:psql,`创建用户someuser密码' somepassword';

3,安装psycopg2所需的PostgreSQL服务:sudo apt-get install postgresql-server-dev-9.4

4,安装python包psycopg2:sudo apt-get install python-pipsudo apt-get install python-psycopg2

5,并在python代码中测试:

import psycopg2

try:
    conn = psycopg2.connect("dbname='postgres' user=' someuser' host='localhost' password='somepassword'")
    cur = conn.cursor()
    cur.execute("""SELECT 1=1""")
    rows = cur.fetchall()
    for row in rows:
        print "   ", row[0]
except:
    print "I am unable to connect to the database"

具体到您的问题,我认为您可以快速检查以下几点进行故障排除:

1,确保您的PostgreSQL服务正在运行,因为这是一个与您Posgresql connection through port 5432.相同的错误消息的问题

2,确保Django应用程序中PostgreSQL的主机设置为“localhost”,您可以在psql –h localhost -Usomeuser轻松测试以登录PostgreSQL。如果出现此问题,可以尝试配置Postgresql and TCP/IP connections on port 5432.

中显示的PostgreSQL服务器