我有一个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
它爆发了;我看到以下内容:
我同样为端口5432添加了端点。最后,当我运行这个时,我收到错误:
Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?
。你能指出我做错了吗?
答案 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-pip
和sudo 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.