如何在Heroku上部署Django应用程序

如何在Heroku上部署Django应用程序

Django是一个MVT网络框架,用于构建网络应用。它很强大,很简单,可以帮助网络开发者编写简洁、高效、强大的代码。在这篇文章中,我们将学习如何通过简单的步骤在Heroku上部署一个Django项目。

前置条件 :

Requirements.txt文件:在你的manage.py的同一目录下创建requirements.txt文件。在虚拟环境激活的情况下,在控制台运行以下命令。

 (myvenv) $ pip install dj-database-url gunicorn whitenoise
 (myvenv) $ pip freeze > requirements.txt

检查你的requirements.txt。它将根据你的项目中当前安装的软件包进行更新。

Procfile:在manage.py的同一目录下创建一个名为Procfile的文件,你会看到Heroku的标志作为Procfile的图标。在其中添加以下一行。

web: gunicorn <project_name>.wsgi --log-file -

这里项目名称将是你的settings.py所在的文件夹的名称。Procfile明确声明了应该执行什么命令来启动你的应用程序。

Runtime.txt文件:在你的manage.py的同一目录下创建runtime.txt文件。添加你想在你的网络应用中使用的python版本。

python-3.7.1 

Settings.py:按照以下说明修改你的settings.py。

1.设置debug为False。

DEBUG = False

2.修改允许的主机。

ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']

3.要禁用Django的静态文件处理并允许WhiteNoise接管,请在你的 “INSTALLED_APPS “列表中添加 “nostatic”。

INSTALLED_APPS = [
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    # ...
]

4.将WhiteNoise添加到MIDDLEWARE列表中。WhiteNoise中间件应该直接放在Django SecurityMiddleware(如果你正在使用它)之后,在所有其他中间件之前。

MIDDLEWARE = [
 'django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 # ...
]

5.更新你的数据库设置。

import dj_database_url

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '<database_name>',
        'USER': '<user_name>',
        'PASSWORD': '<password>',
        'HOST': 'localhost',
        'PORT': '',
    }
}

db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

6.要从文件的原始位置(通常在STATICFILES_DIRS或应用程序的静态子目录中)直接提供文件,而不需要通过collectstatic命令收集到STATIC_ROOT;将WHITENOISE_USE_FINDERS设置为True。

WHITENOISE_USE_FINDERS = True

7.WhiteNoise带有一个存储后端,它可以自动处理压缩你的文件,并为每个版本创建唯一的名字,这样它们就可以安全地被永久缓存。要使用它,只需在你的settings.py中添加这个。

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

最终修改的settings.py的内容:

import dj_database_url


...



DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']

INSTALLED_APPS = [
    'whitenoise.runserver_nostatic',

    #...

]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',

    #...
]


...



DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '<database_name>',
        'USER': '<username>',
        'PASSWORD': '<password>',
        'HOST': 'localhost',
        'PORT': '',
    }
}

WHITENOISE_USE_FINDERS = True


...



db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Heroku account

1.安装你的Heroku工具带,你可以在这里找到:https://toolbelt.heroku.com/

2.在cmd或gitbash中运行以下命令,认证你的Heroku账户

$heroku login

如何在Heroku上部署Django应用程序?

这里要部署的项目(简历)的目录是活动的。

有时cmd或git bash可能会在某些命令中冻结。只要用CTRL+C就可以出来了。

3.部署前在git上提交任何修改。

$ git status
$ git add -A .
$ git commit -m "additional files and changes for Heroku"

4.选择你的应用程序名称,它将显示在域名上–[你的应用程序名称].herokuapp.com,并使用以下命令创建应用程序。

$ heroku create <your_app's_name>

如何在Heroku上部署Django应用程序?

5.调试。如果 collectstatic 在构建过程中失败了,会提供一个回溯,对诊断问题有帮助。如果你需要关于 collectstatic 运行环境的额外信息,请使用 DEBUG_COLLECTSTATIC 配置。

$ heroku config:set DEBUG_COLLECTSTATIC=1

如何在Heroku上部署Django应用程序?

6.禁用collectstatic。有时,你可能不希望Heroku代表你运行collectstatic。你可以通过DISABLE_COLLECTSTATIC配置来禁用collectstatic的构建步骤。

$heroku config:set DISABLE_COLLECTSTATIC=1

如何在Heroku上部署Django应用程序?

7.最后,做一个简单的git推送来部署我们的应用程序。

$ git push heroku master

如何在Heroku上部署Django应用程序?

8.当我们部署到Heroku时,我们创建了一个新的数据库,它是空的。我们需要运行migrate和creasuperuser命令。

$ heroku run python manage.py migrate

如何在Heroku上部署Django应用程序?

$ heroku run python manage.py createsuperuser

如何在Heroku上部署Django应用程序?

命令提示符将再次要求你选择一个用户名和密码。这些将是你在现场网站管理页面上的登录信息。

9.要打开你的网站,请运行。

$ heroku open

Resolving Errors

如果你看到你的网站上运行的应用程序错误。

$heroku logs --tail

如何在Heroku上部署Django应用程序?

它显示最近的日志,并为实时日志的流入留下会话。通过查看你的应用程序的实时日志流,你可以深入了解你的实时应用程序的行为并调试当前的问题。当你完成后,按Ctrl+C返回到提示。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Django 教程