配置项目并推送至 Heroku
按照逐步说明将项目部署到 Heroku。
Heroku 是一个软件平台,允许用户在云端运行和操作网络应用程序。接下来的终端中我们将使用 Heroku CLI。我们已按照 此 指南完成平台设置,因此您无需在此课程中安装它。但您需要一个 Heroku 账户。如果您还没有账户,请访问 https://www.heroku.com 并创建一个。
No configuration found for ID: efc5c590395d1a14ba00401a909674703e103db2d1792d1910f0dd0d76b3c5ab
项目设置
在将 Django 网络应用部署到 Heroku 之前,需要进行以下更改:
1. 创建一个 requirements.txt 文件,该文件告诉 Heroku 应用程序所需的包,以便在 Heroku 上正常运行。该文件可通过以下命令生成:
1pip freeze > requirements.txt
2. 创建一个 runtime.txt 文件,其中包含当前系统的 Python 版本。可通过以下命令检查 Python 版本:
1python --version
3. 项目目录中还需要添加最后一个文件:Procfile(无文件扩展名)。该文件告知 Heroku 运行项目所需的过程。其代码中的 example 指的是项目的名称。
4. 项目中的最后修改位于 settings.py 文件中,需进行以下几项更改:
i. 我们即将把项目部署到线上服务器,因此将 DEBUG 设置改为 False(第 26 行)。
ii. 最后,在文件末尾添加以下代码(第 164 行):
1django_heroku.settings(locals())
Git 设置与推送项目
现在我们可以将 Django 应用推送到 Heroku。我们将使用 CLI 完成此操作。点击上方小工具中的 运行 按钮以打开终端。使用 cd django-project 进入项目文件夹,并执行以下命令:
1. 在推送项目前,执行以下命令设置用户名和邮箱,使 Git 知道是谁在修改项目。您可以使用自己的信息:
1git config --global user.name "your-name" 2git config --global user.email "you@example.com"
2. 执行以下命令开始部署应用:
1git init 2git add . 3git commit -am "Ready for deployment"
3. 执行以下命令将项目推送到 Heroku:
i. 使用以下命令登录 Heroku。提示时输入您的邮箱和密码:
1heroku login -i
ii. 使用以下命令创建一个应用:
1heroku create
iii. 使用以下命令禁用 collectstatic 构建:
1heroku config:set DISABLE_COLLECTSTATIC=1
iv. 最后,使用以下命令将项目推送到 Heroku:
1git push heroku master
配置 Heroku 应用
将应用部署到 Heroku 后,我们需要进行一些配置以确保其正常运行。
重命名应用
当执行 heroku create 命令时,Heroku 会为网络应用分配一个随机名称。这些名称通常较长且不便于记忆,因此建议重命名应用。
假设您想将应用重命名为 my-app,可以使用以下命令:
1heroku apps:rename my-app
如果尝试重命名的名称已被占用,您将看到如下输出:
我们已成功将应用重命名为 educative-app。重命名成功后,您将看到如下输出:
注意: 从现在起的所有命令均假设应用名为 educative-app。您可以根据自己的应用名称相应调整命令。
将应用重命名为 educative-app 后,可通过 https://educative-app.herokuapp.com/ 访问。但为了使应用正常运行,还需修复几个问题。让我们进行这些更改并完成部署。
删除默认数据库
在此步骤中,我们将删除 Heroku 自带的数据库,因为我们正在使用之前配置好的自定义数据库(Amazon RDS)。
要删除 Heroku Postgres 数据库插件,首先需要获取其完整名称。可使用以下命令查询:
1heroku addons -a educative-app
Heroku Postgres 数据库插件的完整名称格式类似如下:
请将此名称用于以下命令以删除 Heroku Postgres 插件。请记得将 postgresql-silhouetted-81705 替换为您自己的插件完整名称。
1heroku addons:destroy postgresql-silhouetted-81705 --confirm educative-app
添加配置信息
我们需要通过设置一些配置变量来添加配置信息。配置变量可以改变应用的行为。设置配置变量的一般语法如下:
1heroku config:set -a educative-app KEY=value
我们将添加 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 DATABASE_URL。前两个变量较为简单。下面重点说明如何设置 DATABASE_URL。
该字段的格式稍显复杂。DATABASE_URL 的通用格式如下:
postgres://username:password@database-endpoint:port/database-name
您可以根据 settings.py 文件中第 95 至 99 行的 DATABASES 部分提供的值构建 DATABASE_URL。
为方便起见,下方提供了一个代码小工具,用于打印在 Heroku CLI 中执行的命令,以设置配置信息。只需在下方工具中输入您的 Heroku 应用名称,然后点击 运行 按钮,即可生成命令。在上方终端中执行该命令以设置配置变量。
1# 打印在 Heroku CLI 中执行的命令,用于向 Heroku 应用添加配置信息 2 3print('heroku config:set -a {{HEROKU_APP_NAME}} AWS_ACCESS_KEY_ID={{AWS_ACCESS_KEY_ID}} AWS_SECRET_ACCESS_KEY={{AWS_SECRET_ACCESS_KEY}} DATABASE_URL=postgres://{{RDS_DB_USERNAME}}:{{RDS_DB_PASSWORD}}@{{RDS_DB_HOST}}:5432/{{RDS_DB_NAME}}')
测试应用
最后,是时候测试您的部署了。访问应用网址 https://educative-app.herokuapp.com/,浏览网站,创建一些发布内容,邀请朋友加入站点,并持续不断地改进和完善它。