【问题标题】:How to install app on heroku with postgres如何使用 postgres 在 Heroku 上安装应用程序
【发布时间】:2014-03-21 16:26:45
【问题描述】:

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

  1. 如何在 heroku 上为这个应用安装 postgresql?
  2. 我是否必须像在本地计算机上一样在 Heroku 上再次进行相同的设置?比如设置 Flask 等?
  3. 我可以分多个阶段提交代码吗?例如,我已经推送了代码,一段时间后修改了相同的代码并再次推送。

我已经浏览了以下网址https://devcenter.heroku.com/articles/git#deploying-code,但没有得到任何满意的答案。

谢谢 桑吉夫·亚达夫

【问题讨论】:

    标签: python postgresql heroku


    【解决方案1】:

    假设您的计算机上安装了 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
    

    从您的存储库中。

    就最后一个问题而言 - 是的,您可以分多个阶段推送您的代码,您的应用程序将重新启动,并且所有新代码都应该与您的本地计算机上一样工作。希望这会有所帮助。

    【讨论】:

    • 很好的解释。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多