如何在Heroku上部署Django应用程序?
添加时间:2020-10-20 16:22:24
来源:
Django是用于构建Web应用程序的MVT Web框架。它健壮,简单,可帮助Web开发人员编写干净,高效和强大的代码。在本文中,我们将通过简单的步骤学习如何在Heroku上部署Django项目。为此,应准备一个Django项目。
先决条件:
Django的
已安装Postgres
Requirements.txt文件:在manage.py所在的目录中创建requirements.txt文件。在激活了虚拟环境的控制台中运行以下命令:
(myvenv)$ pip install dj-database-url gunicorn whitenoise
(myvenv)$点冻结> Requirements.txt
检查您的requirements.txt。它将使用项目中当前安装的软件包进行更新。
Procfile: 在manage.py所在的目录中创建一个名为Procfile的文件。您将看到Heroku徽标作为Procfile的图标。向其添加以下行:
网址:gunicorn <项目名称> .wsgi --log文件-
这里的项目名称将是您的settings.py所在文件夹的名称。Procfile明确声明应执行什么命令来启动您的应用程序。
Runtime.txt文件:在与manage.py相同的目录中创建runtimetime.txt文件。添加您要用于网络应用的python版本:
python-3.7.1
Settings.py:按照以下说明修改settings.py:
1.将debug设置为False。
调试=假
2.修改允许的主机。
ALLOWED_HOSTS = ['127.0.0.1','.herokuapp.com']
3.要禁用Django的静态文件处理并允许WhiteNoise接管,请将'nostatic'添加到'INSTALLED_APPS'列表的顶部。
INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
'django.contrib.staticfiles',
#...
]
4.将WhiteNoise添加到MIDDLEWARE列表。WhiteNoise中间件应直接放置在Django SecurityMiddleware之后(如果使用的话),然后放在所有其他中间件之前:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
#...
]
5.更新数据库设置。
导入dj_database_url
数据库= {
'默认':{
'ENGINE':'django.db.backends.postgresql_psycopg2',
'NAME':'<数据库名称>',
'USER':'<用户名>',
'PASSWORD':'<密码>',
'HOST':'localhost',
'港口': '',
}
}
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 =真
7. WhiteNoise带有一个存储后端,该后端自动负责压缩文件并为每个版本创建唯一的名称,以便可以安全地对其进行永久缓存。要使用它,只需将其添加到您的settings.py中:
STATICFILES_STORAGE ='whitenoise.storage.CompressedManifestStaticFilesStorage'
最终修改后的settings.py内容:
导入dj_database_url
...
调试=假
ALLOWED_HOSTS = ['127.0.0.1','.herokuapp.com']
INSTALLED_APPS = [
'whitenoise.runserver_nostatic',
#...
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
#...
]
...
数据库= {
'默认':{
'ENGINE':'django.db.backends.postgresql_psycopg2',
'NAME':'<数据库名称>',
'USER':'<用户名>',
'PASSWORD':'<密码>',
'HOST':'localhost',
'港口': '',
}
}
WHITENOISE_USE_FINDERS =真
...
db_from_env = dj_database_url.config(conn_max_age = 500)
DATABASES ['default']。update(db_from_env)
STATICFILES_STORAGE ='whitenoise.storage.CompressedManifestStaticFilesStorage'
Heroku帐户
1.安装Heroku工具带,您可以在这里找到:https ://toolbelt.heroku.com/
2.在cmd或gitbash中运行以下命令来验证您的Heroku帐户
$ heroku登录
此处要部署的项目(简历)目录处于活动状态
有时,在某些命令下,cmd或git bash可能会冻结。只需使用CTRL + C就可以了。
3.在部署之前对git进行任何更改。
$ git状态
$ git add -A。
$ git commit -m“ Heroku的其他文件和更改”
4.选择将显示在域名上的应用程序名称- [您的应用程序名称] .herokuapp.com,然后使用以下命令创建应用程序:
$ heroku创建<您的应用的名称>
5.调试:如果在构建过程中collectstatic失败,则提供回溯,这将有助于诊断问题。如果您需要有关运行收集静态环境的其他信息,请使用DEBUG_COLLECTSTATIC配置。
$ heroku config:set DEBUG_COLLECTSTATIC = 1
6.禁用Collectstatic:有时,您可能不希望Heroku代表您运行collectstatic。您可以使用DISABLE_COLLECTSTATIC配置禁用collectstatic构建步骤:
$ heroku config:set DISABLE_COLLECTSTATIC = 1
7.最后,执行一个简单的git push来部署我们的应用程序:
$ git push heroku master
8.部署到Heroku时,我们创建了一个新数据库,该数据库为空。我们需要运行migration和createsuperuser命令。
$ heroku运行python manage.py migration
$ heroku运行python manage.py createsuperuser
命令提示符将要求您再次选择用户名和密码。这些将是您在实时网站的管理页面上的登录详细信息。
9.要打开您的站点,请运行:
$ heroku打开
解决错误
如果您在网站运行中看到应用程序错误:
$ heroku日志--tail
/ CONTACT US
地 址:四川省成都市航空路丰德国际广场
邮政编码:610000
电 话:18215660330
传 真:18215660330
手机:18215660330
邮 箱:179001057@qq.com
投诉邮 箱:179001057@qq.com