使用Postgresql数据库创建Azure Web App(可能吗?)

时间:2015-11-25 19:02:28

标签: python django postgresql azure heroku

我使用Heroku来托管带有postgres后端的Django Web应用程序。我现在正在寻求将此Web应用程序迁移到Azure,充分利用了Azure最近为我提供的大量优势。

但我对一件事情感到困惑:如何在Azure上用 postgresql作为数据库创建一个Django网站?我成功创建了一个Django网站,将它连接到git,但我似乎无法将其更改为postgresql。

因此,当我执行git push azure master时,我收到错误:命令python setup.py egg_info失败,错误代码1在D:\ home \ site \ wwwroot \ env \ build \ psycopg2 它在psycopg2(postgresql)上失败。

其次,一旦我在Azure Web App上成功安装postgresql,我就需要调整其postgresql.conf文件来调整设置(默认值太低)。我该怎么做?

该文档仅讨论如何为使用Linux的Azure VM安装PG,而不是Azure Web App:https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-postgresql/

2 个答案:

答案 0 :(得分:5)

Azure Web Apps Service是一种Pa​​aS,可提供多种服务来托管您的网站应用。我们有限制安装PostgreSQL的权限。

目前,要在Azure上托管PostgreSQL,您可以利用Linux的虚拟机来提及@theadriangreen。您可以使用SSH命令ssh user@VMhost远程登录Linux VM并设置PG配置。有关Linux上的PG的更多信息,请参阅YoLinux Tutorial: The PostgreSQL Database and Linux

此外,您还可以在Azure附加组件市场中创建包含PostgreSQL映像的docker。

登录预览管理门户,点击新的=>在搜索栏中搜索“postgres”,你可以找到docker提供的postgres服务。

enter image description here

您也可以通过SSH远程访问此VM以设置PG配置。

如果要与PG服务器建立直接TCP连接,则需要在入站安全规则中添加5432端口。

在您上面创建的VM服务器的“所有设置”中,单击“网络接口”=>单击正在使用的界面=>单击正在使用的网络安全组名称,您可以在中找到入站安全规则设置页面。

enter image description here

然后您可以测试PG服务的连接:

import psycopg2

try:
    conn = psycopg2.connect(database="postgres", user="postgres", password="{password}", host="{host_ip}", port="5432")
    print "Opened database successfully"

    cur = conn.cursor()

    cur.execute("SELECT ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]");
    rows = cur.fetchall()
    print(rows)

    conn.commit()
    print "Records created successfully";
    conn.close()
except Exception, e:
    print "I am unable to connect to the database"

答案 1 :(得分:1)

Azure Web Apps仅提供Web应用程序,因为数据库由其他服务提供。通常,这是Azure SQL(提供SQL Server数据库作为服务)或ClearDB(提供MySQL)。

因此,为了让你的Django应用程序与Postgres一起运行,你需要在某处部署Postgres DB。最初你可以尝试使用你的Heroku Postgres DB指向的settings.py,但是你可能会在数据库端遇到一些防火墙设置。

如果您要按照链接(https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-postgresql/)中的步骤操作,那么您可以将该实例用作Postgres数据库并调整settings.py文件以指向该计算机。您也可以更改postgresql.conf,因为您拥有该机器。