我正在尝试在Heroku云中安装应用程序。这个基于python的应用程序是基于postgresql构建的。我已经在我的本地机器(Ubuntu)中设置了这个应用程序。我有以下疑问。
我已经按照网址https://devcenter.heroku.com/articles/git#deploying-code进行了操作,但没有得到任何满意的答案。
由于 Sanjeev Yadav
答案 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
来自您的存储库。
就上一个问题而言 - 是的,您可以在很多阶段推送您的代码,您的应用程序将重新启动,所有新代码应与本地计算机上的相同。希望这会有所帮助。