如何使用postgres在heroku上安装应用程序

时间:2014-03-21 16:26:45

标签: python postgresql heroku

我正在尝试在Heroku云中安装应用程序。这个基于python的应用程序是基于postgresql构建的。我已经在我的本地机器(Ubuntu)中设置了这个应用程序。我有以下疑问。

  1. 如何在heroku上为此应用安装postgresql?
  2. 我是否必须像在本地机器上一样在Heroku上进行相同的设置?喜欢设置Flask等?
  3. 我可以在多个阶段提交代码吗?例如,我已推送代码,经过一段时间修改相同的代码并再次推送。
  4. 我已经按照网址https://devcenter.heroku.com/articles/git#deploying-code进行了操作,但没有得到任何满意的答案。

    由于 Sanjeev Yadav

1 个答案:

答案 0 :(得分:0)

假设您的计算机上安装了heroku皮带,请在项目中创建git存储库(您可能已经拥有),然后创建Heroku应用程序:

heroku create --stack cedar <name_of_your_app>

首先将Postgresql添加到您的项目中:

heroku addons:add heroku-postgresql

之后检查是否已成功添加:

heroku pg:info

这应该返回类似:

HEROKU_POSTGRESQL_WHITE_URL <== Database name
Plan:        Dev
Status:      available

然后推广数据库,以便heroku知道您将使用哪一个(您可以在一个项目中拥有多个数据库)。

heroku pg:promote HEROKU_POSTGRESQL_WHITE_URL

此时,如果要配置数据库连接,可以从项目的Heroku页面获取所有连接信息,也可以从提升数据库时创建的环境变量DATABASE_URL获取。如果你使用后者,你不必自己提供任何信息,我经常使用的功能是这样的:

if "DATABASE_URL" in os.environ:
        urlparse.uses_netloc.append("postgres")
        url = urlparse.urlparse(os.environ.get("DATABASE_URL"))
        DATABASE = {
             "database" : url.path[1:],
             "user" : url.username,
             "password": url.password,
             "host": url.hostname,
             "port": url.port
               }
        return PostgresqlDatabase(**DATABASE)

这适用于peewee ORM,但您可以将其调整到任何其他ORM,例如SQLAlchemy,只需在DATABASE中使用其中的内容并将其插入到您想要的任何内容中。

就设置应用程序而言,您需要编写requirements.txt文件以及您的应用程序使用的所有依赖项,当您第一次将项目推送到Heroku时,这将自动解析并安装所有库,您还需要Procfile文件在你的项目中,这告诉Heroku哪个进程在哪个阶段运行,最重要的部分是web部分,例如:

web: gunicorn main:app

将启动gunicorn服务器为您的网站提供服务。如果需要运行任何脚本,例如在数据库中创建表的脚本,只需键入:

heroku run create_tables.py

来自您的存储库。

就上一个问题而言 - 是的,您可以在很多阶段推送您的代码,您的应用程序将重新启动,所有新代码应与本地计算机上的相同。希望这会有所帮助。