Day27 - 部属到正式环境 (2)

今天的实作内容主要根据教学网站进行。

将应用程序安装到Heroku

环境设定

Heroku主要利用四个档案来设定环境:

  • runtime.txt
  • requirements.txt
  • Procfile
  • wsgi.py

接下来我将逐一设定这些档案。

runtime.txt

用来标示使用的程序语言运行环境与版本。

新增方法:在专案根目录 (和manage.py同一层级)新增runtime.txt,其中内容如下:

python-3.9.7

要注意的是Heroku并不是所有版本都支援,故需要先去Heroku网站确认Python的支援版本,不然在推送到Heroku时会发生问题。

Procfile

同样在根目录下新增Procfile档案,内容如下:

web: gunicorn bookhelper.wsgi --log-file -

gunicorn为Heroku推荐的web application server,此段宣告gunicorn使用bookhelper.wsgi作为组态设定。

requirements.txt

用来宣告要安装的Python套件。

需要安装的Python套件可以使用以下指令,将开发环境有安装的套件列出:

pip freeze > requirements.txt

输出的档案一样放在根目录,Heroku会根据此档案进行安装,但要注意的是如果是自己私人开发未上传到PYPI的套件 (如Day17内容)就无法使用。

除了开发阶段已安装的套件外,因应正式环境的环境设置,还有一些额外的套件需要安装。

实际requirement.txt内容:

dj-database-url==0.5.0
Django==3.2.7
django-allauth==0.45.0
django-q==1.3.9
gunicorn==20.1.0
psycopg2==2.9.1
whitenoise==5.3.0
  • gunicorn

  • dj-database.url
    在开发期间,django的settings.py中我们使用local资料库连线设定,当上传到正式环境时,Heroku以add-on透过URL的方式提供我们使用。

Heroku建议使用此套件以解析资料库使用的URL。

settings.py可以调整如下:

# Heroku: Update database configuration from $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
  • psycopg2
    Heroku的免费方案中提供的资料库为Postgres,故需要安装对应的套件。

  • WhiteNoise
    用来提供Python web app的静态档案。(如果透过Django提供静态档案的话效能会较差)

settings.py要配合做以下设定:

MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware',
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

因为时间因素,今天内容就先更新到这边,明天再接续後面的流程。


<<:  #25 Click! Serve! Plus

>>:  [Day26] - Django-REST-Framework API 期末专案实作 (一)

资料存取的先後顺序:Stack 和 Queue

题组回顾与观念统整 Stack 和 Queue 绝对是资料结构中不可以错过的一种容器,不只用於资料...

30天完成家庭任务平台:第三十天

终於最後一天了!!~虽然没有写的很好,就是心得的小小整理,但是也坚持了三十天了,谢谢不小心进到这个网...

[第十七只羊] 迷雾森林舞会XI 套用turbo_frame_tag

天亮了 昨晚是平安夜 关於迷雾森林故事 穿越 躺在草丛中的两只兔子似乎还有生命迹象 但却一动也不动的...

Eloquent ORM - 多对多关联

接着要示范如何用 Eloquent 建立多对多关联的查询,目标帮目前的 Todo 建立 Tag 标签...

[Day21] swift & kotlin 游戏篇!(3) 小鸡BB-游戏制作-分数与提示排版

游戏示意 swift - Point 与 胜负提示 新增一个Label Text输入: Point:...