如何在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


                      用户名 Name
                      评论 Comment

                      联系我们

                      / CONTACT US

                      地 址:四川省成都市航空路丰德国际广场

                      邮政编码:610000

                      电 话:18215660330

                      传 真:18215660330

                      手机:18215660330

                      邮 箱:179001057@qq.com

                      投诉邮 箱:179001057@qq.com

                      姓名Name
                      标题Title
                      邮 箱Emali
                      联系电话Tel
                      内容Content
                      大小单双正规平台网站