ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ heroku Π½Π° windows
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Heroku
Heroku β Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Ρ ΠΎΡΡΠΈΠ½Π³, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° node.js ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ : heroku.com
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡΡ, ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: create new app
ΠΠ°ΡΠ°Π΅ΠΌ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ heroku cli Π΄Π»Ρ windows ΠΈΠ»ΠΈ Mac OS
ΠΠ°ΡΠ°Π΅ΠΌ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ git Π΄Π»Ρ windows: https://git-scm.com/download/win
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
Π’ΡΠ΅Π±ΡΠ΅Ρ Π΅ΡΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π°:
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΏΡΠΎΠ΅ΠΊΡ Procfile β Π΄Π»Ρ heroku, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ:
Π Π·Π°Π½ΠΎΠ²ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Ρ Π½Π° heroku
ΠΠΎΡΠ΅ΠΌΡΡ Ρ Π·Π°ΡΡΠΏΠ°Π½ΠΈΠ΅ΠΌ Π½Π° Heroku
ΠΠ° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΡΠ°ΡΠΈΡΠ΅ heroku ΡΠ΅ΡΠ²ΠΈΡ Π·Π°ΡΡΠΏΠ°Π΅Ρ, ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ» ΡΠ°ΡΠ°.
ΠΡΠΎΠ±ΡΠ΅ΠΌ, Π΄Π»Ρ Π±ΠΎΡΠ° Telegram, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΌ ΠΈ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π²Π΅Π±, ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π²
Procfile β Π½Π°ΡΡΡΠΎΠΉΠΊΡ:
Π Π½Π° Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ΅ Resources Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΡΠΎΡΠΌΠΎΡΡ Π»ΠΎΠ³ΠΎΠ² Π½Π° Heroku
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π² Heroku
ΠΠ° Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ΅ β settings β Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ: Reveal cofig vars.
Π ΠΊΠΎΠ΄Π΅ node.js, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ:
ΠΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π΄Π°ΡΡ 550 ΡΠ°ΡΠΎΠ² Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΡΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΅ΡΠ΅ 450 ΡΠ°ΡΠΎΠ² Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΡΡ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΡΡ ΠΊΠ°ΡΡΡ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅ΡΡ ΠΌΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΊΠ°ΠΊ 1100 ΡΠ°ΡΠΎΠ² ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΌΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎ.
ΠΡΠ΅ ΡΠΏΠΎΡΠΎΠ± ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΡΡΠΏΠ°Π»ΠΎ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ΅Π½ Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Heroku Newrelic Addon. ΠΠ»Π°Π³ΠΈΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠ°ΠΉΡΠ° ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΡΡ . Π Π½Π΅ Π΄Π°ΡΡ Π·Π°ΡΠ½ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°Π»Π΅Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ°ΡΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ. Π Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Provision add-onΒ»
ΠΠ°Π»Π΅Π΅ ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° heroku
ΠΠ»Π°ΡΠ°Π΅ΠΌ ΠΏΠΎ Π½Π΅ΠΌΡ ΠΈ Π½Π° Π½Π΅ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.
ΠΠ°Π»ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° Β«SYNTHETICSΒ»
ΠΠ°Π»ΡΡΠ΅ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° Β«add newΒ»
ΠΠ°Π»ΡΡΠ΅ Π³Π΄Π΅ Enther the details β ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΠ°ΠΉΡ Π½Π° heroku β ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Β«Create monitorΒ»
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Ρ Heroku
Π Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅:
ΠΠ΅Π³Π°-Π£ΡΠ΅Π±Π½ΠΈΠΊ Flask, Π§Π°ΡΡΡ XVIII: Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π° Heroku
(ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 2018)
Miguel Grinberg
Π’ΡΠ΄Π° Π‘ΡΠ΄Π°
ΠΡΠΎ Π²ΠΎΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ΅ΡΠΈΠΈ ΠΠ΅Π³Π°-ΡΡΠ΅Π±Π½ΠΈΠΊΠΎΠ² Flask, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΌΠΈΠΊΡΠΎΠ±Π»ΠΎΠ³ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Heroku.
ΠΠΎΠ΄ ΡΠΏΠΎΠΉΠ»Π΅ΡΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΡΠ°ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ 2018 Π³ΠΎΠ΄Π°.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ 1: ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠ΅ΡΠ΅ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠ°, ΡΡΠΎ Π·Π΄Π΅ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ 2: ΠΡΠ»ΠΈ Π²Π΄ΡΡΠ³ ΠΡ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ Π²ΡΡΡΡΠΏΠΈΡΡ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΌΠΎΠ΅ΠΉ(ΠΠΈΠ³Π΅Π»Ρ) ΡΠ°Π±ΠΎΡΡ, ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΡΠ΅ΡΠΏΠ΅Π½ΠΈΡ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΡΡΠ°ΡΡΠΈ Π½Π΅Π΄Π΅Π»Ρ, Ρ (ΠΠΈΠ³Π΅Π»Ρ ΠΡΠΈΠ½Π±Π΅ΡΠ³)ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΠΎΠ»Π½ΡΡ Π²Π΅ΡΡΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°(Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅) Π² Π²ΠΈΠ΄Π΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ learn.miguelgrinberg.com.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°Π·Π°Π» Π²Π°ΠΌ Β«ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉΒ» ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Python, ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π²Π°ΠΌ Π΄Π²Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π½Π° Linux-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π½Π° «Π’Π«» ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Linux, ΡΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π²Π°ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΌ Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ Π½Π° ΡΠ°ΠΊΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ» ΡΠ»Π΅Π³ΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ, ΠΈ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π²Π°ΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΠ΅ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠΈΠ½Π³Π° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π·Π°Π΄Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΠ°ΠΌΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ Ρ ΠΎΡΡΠΈΠ½Π³-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎ Π½Π° ΡΡΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , β ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΈ Ρ.Π΄. ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ»ΡΠΆΠ±ΠΎΠΉ. ΠΡΠΎΡ ΡΠΈΠΏ ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Platform as a Service ΠΈΠ»ΠΈ PaaS.
ΠΠ²ΡΡΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Ρ ΠΎΡΠΎΡΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΏΡΠ°Π²Π΄ΠΎΠΉ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ?
Π― Π±ΡΠ΄Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ Microblog Π½Π° Heroku, ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΌ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python. Π― Π²ΡΠ±ΡΠ°Π» Heroku Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½, Π½ΠΎ ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π·Π° ΠΌΠ½ΠΎΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅, Π½Π΅ ΡΡΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄Π΅Π½Π΅Π³.
Π₯ΠΎΡΡΠΈΠ½Π³ Π½Π° Heroku
Heroku, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² ΠΈΡΠ½Π΅ 2007 Π³ΠΎΠ΄Π° ΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ruby, Π½ΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Java, Node.js, Scala, Clojure, Go, PHP ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Python.
Heroku ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²Π°ΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΡΠ° Π±Π°Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°ΡΡΠ΅Ρ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΡΠΏΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Heroku Π½Π°Π·ΡΠ²Π°Π΅Ρ «dynos».
ΠΠΎΡΠΎΠ²Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Heroku? ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ!
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Heroku
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π² Heroku, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΡ heroku.com ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΡΠ΅Π³Π΅ΡΡΡΠΈΡΡΠ΅ΡΠ΅ΡΡ ΠΈ Π²ΠΎΠΉΠ΄ΡΡΠ΅ Π² Heroku, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, Π³Π΄Π΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π²ΡΠ΅ Π²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Heroku CLI
Heroku ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ»ΡΠΆΠ±ΠΎΠΉ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Heroku CLI, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ Windows, Mac OS X ΠΈ Linux. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΡΠΆΠ±Ρ.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ CLI, ΡΡΠΎ Π²ΠΎΠΉΡΠΈ Π² Π²Π°Ρ Heroku Π°ΠΊΠΊΠ°ΡΠ½Ρ:
Heroku CLI ΠΏΠΎΠΏΡΠΎΡΠΈΡ Π²Π°Ρ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ .
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Git
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ git ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Heroku, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅Π³ΠΎ Π΅ΡΠ΅ Π½Π΅Ρ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΉΡ git Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ°.
ΠΠΎΠΌΠ°Π½Π΄Π° git checkout Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠΈΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Heroku
Π§ΡΠΎΠ±Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Heroku, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ apps:create ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΠΈΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°:
ΠΡΠ΅ΠΌΠ΅ΡΠ½Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Heroku ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π² Π½Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ephemeral ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. Π§ΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ? ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Heroku ΠΌΠΎΠΆΠ΅Ρ ΡΠ±ΡΠΎΡΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΡΠΈΡΡΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠ΅Π»ΡΠ·Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΠ΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ, ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Heroku ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΡ.
Π Π°Π±ΠΎΡΠ° Π² ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²:
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΡΠΈ ΡΡΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π Π°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Heroku Postgres
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π Π³Π»Π°Π²Π΅ 17 Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ MySQL, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Ubuntu. Π£ Heroku Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° Postgres, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π½Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ SQLite Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Heroku ΡΠ½Π°Π±ΠΆΠ°ΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ CLI Heroku. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ(free) ΡΡΠΎΠ²Π½Π΅:
URL-Π°Π΄ΡΠ΅Ρ Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ DATABASE_UR L, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ ΠΈΡΠ΅Ρ URL Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° Π² stdout
config.py: ΠΠΏΡΠΈΡ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° Π² stdout.
ΠΠ°ΡΠ΅ΠΌ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
app/__init__.py : ΠΡΡΠ½Π°Π» Π² stdout ΠΈΠ»ΠΈ Π² ΡΠ°ΠΉΠ».
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ
Π’ΡΠ΅ΡΡΠΈΠΌ Π°ΡΠΏΠ΅ΠΊΡΠΎΠΌ ΠΌΠΈΠΊΡΠΎΠ±Π»ΠΎΠ³Π°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ , ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ°ΠΉΠ»ΠΎΠ². Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΡΠ΅Π·Π½ΡΡ ΠΈΠ· ΡΡΠ΅ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, β ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΡΠ°Π»ΠΈ ΡΠ°ΡΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π² Heroku.
ΠΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ flask translate compile Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ start up, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Heroku, ΡΠ°ΠΊ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ ΡΠ½ΠΎΠ²Π°. Π― ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠΎΠΉΡΠΈ ΡΡΠΈΠΌ ΠΏΡΡΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π·Π½Π°Ρ, ΡΡΠΎ ΠΌΠΎΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°ΠΏΡΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ Π΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΎΡΠ»ΠΎΠΆΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΠΊ Π½Π΅ΠΉ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΏΠΈΡΡ Procfile.
Π₯ΠΎΡΡΠΈΠ½Π³ Elasticsearch
Elasticsearch ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ Heroku, Π½ΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Postgres, ΡΡΠΎ Π½Π΅ ΡΡΠ»ΡΠ³Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ Heroku, Π° ΡΡΠ΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ°ΡΡ Ρ Heroku, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ(ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΠΈΡΡ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ) Π΅ΡΡΡ ΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠΉ ΡΠ»ΡΠΆΠ±Ρ elasticsearch.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Elasticsearch, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Heroku ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ° ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΈΠΌΠ΅Π»Π° ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊΡΠ΅Π΄ΠΈΡΠ½ΡΡ ΠΊΠ°ΡΡΡ Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΡΠ°Π΅ΡΠ΅ΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΈΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΡΠ΅Π΄ΠΈΡΠΊΠΈ Heroku, ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°Π·Π΄Π΅Π». ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Elasticsearch, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ SearchBox, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΌ ΡΡΠ°ΡΡΠΎΠ²ΡΠΌ ΠΏΠ»Π°Π½ΠΎΠΌ. Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ SearchBox Π² ΡΠ²ΠΎΡ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²Ρ ΠΎΠ΄Π° Π² Heroku:
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Requirements
Heroku ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ΄ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ requirements.txt, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» Π² Π³Π»Π°Π²Π΅ 15. ΠΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Heroku ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π²Π΅ Π½ΠΎΠ²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊ ΡΡΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ.
Π gunicorn ΠΈ psycopg2 Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΌ Π² ΡΠ°ΠΉΠ» requirements.txt.
ΠΡΠΎΡΠ°ΠΉΠ»
ΠΠ΄Π΅ΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. Π‘Π½Π°ΡΠ°Π»Π° Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΠ·ΡΠΊΠΎΠ² ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΠ΅ΡΠ²Π΅Ρ.
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΡ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ, ΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΆΠ΅, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΈΠΊΡΠ΅Π½Ρ:
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π²Π΅ΡΠΊΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ· Heroku:
Π Π²ΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎ ΠΏΠΎ URL-Π°Π΄ΡΠ΅ΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΎΠ·Π΄Π°Π²ΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ URL Π±ΡΠ» https://flask-microblog.herokuapp.com, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π§ΡΠΎΠ±Ρ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git push Ρ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΠΎΡΠΊΠ»ΡΡΠΈΡ ΡΡΠ°ΡΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎΠΌΠ°Π½Π΄Ρ Π² Procfile Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ½ΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΠ±ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
Π’ΡΠ΄Π° Π‘ΡΠ΄Π°
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Heroku CLI Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Windows
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Windows ΠΎΡΡΡΠ΄Π° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΈΡ
Π²ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ°Π»Π΅Π΅Β».
Π§Π΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Heroku CLI Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² ΡΠΈΡΡΠ΅ΠΌΡ.
Heroku CLI Π±ΡΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Heroku Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΡΠ°ΠΊ, Heroku CLI Π±ΡΠ» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Heroku ΠΌΡ Π²ΠΎΠΉΠ΄Π΅ΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π· Heroku CLI.
ΠΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π² Heroku CLI
ΠΠ»Ρ Π²Ρ
ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π· Heroku CLI Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΏΠΎΠΏΡΠΎΡΠΈΡ Π½Π°ΠΆΠ°ΡΡ Β«Π»ΡΠ±ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡΒ» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² Π±ΡΠ°ΡΠ·Π΅Ρ ΠΈΠ»ΠΈ Β«QΒ», ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²Ρ ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡ Π²Π°Ρ Π² Π±ΡΠ°ΡΠ·Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ Π½ΠΈΠΆΠ΅
ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π²Ρ
ΠΎΠ΄Π΅ Π² ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ β ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ:
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π²Ρ
ΠΎΠ΄Π΅ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Heroku CLI Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Heroku CLI ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Getting Started on Heroku with Python
Introduction
This tutorial will have you deploying a Python app (a simple Django app) in minutes.
Hang on for a few more minutes to learn how it all works, so you can make the most out of Heroku.
The tutorial assumes that you have:
Set up
The Heroku CLI requires Git, the popular version control system. If you donβt already have Git installed, complete the following before proceeding:
In this step youβll install the Heroku Command Line Interface (CLI). You use the CLI to manage and scale your applications, provision add-ons, view your application logs, and run your application locally.
Download and run the installer for your platform:
Also available via Homebrew:
Download the appropriate installer for your Windows installation:
Run the following from your terminal:
Once installed, you can use the heroku command from your command shell.
Use the heroku login command to log in to the Heroku CLI:
This command opens your web browser to the Heroku login page. If your browser is already logged in to Heroku, simply click the Log in button displayed on the page.
This authentication is required for both the heroku and git commands to work correctly.
If youβre behind a firewall that requires use of a proxy to connect with external HTTP/HTTPS services, you can set the HTTP_PROXY or HTTPS_PROXY environment variables in your local development environment before running the heroku command.
Prepare the app
In this step, you will prepare a simple application that can be deployed.
To clone the sample application so that you have a local version of the code that you can then deploy to Heroku, execute the following commands in your local command shell or terminal:
Deploy the app
In this step you will deploy the app to Heroku.
Create an app on Heroku, which prepares Heroku to receive your source code:
When you create an app, a git remote (called heroku ) is also created and associated with your local git repository.
Heroku generates a random name (in this case serene-caverns-82714 ) for your app, or you can pass a parameter to specify your own app name.
Now deploy your code:
The application is now deployed. Ensure that at least one instance of the app is running:
Now visit the app at the URL generated by its app name. As a handy shortcut, you can open the website as follows:
View logs
Heroku treats logs as streams of time-ordered events aggregated from the output streams of all your app and Heroku components, providing a single channel for all of the events.
Visit your application in the browser again, and youβll see another log message generated.
Press Control+C to stop streaming the logs.
Define a Procfile
Use a Procfile, a text file in the root directory of your application, to explicitly declare what command should be executed to start your app.
The Procfile in the example app you deployed looks like this:
Procfiles can contain additional process types. For example, you might declare one for a background worker process that processes items off of a queue.
Microsoft Windows
Scale the app
You can check how many dynos are running using the ps command:
To avoid dyno sleeping, you can upgrade to a hobby or professional dyno type as described in the Dyno Types article. For example, if you migrate your app to a professional dyno, you can easily scale it by running a command telling Heroku to execute a specific number of dynos, each running your web process type.
Scaling an application on Heroku is equivalent to changing the number of dynos that are running. Scale the number of web dynos to zero:
Access the app again by hitting refresh on the web tab, or heroku open to open it in a web tab. You will get an error message because you no longer have any web dynos available to serve requests.
For abuse prevention, scaling a non-free application to more than one dyno requires account verification.
Declare app dependencies
Heroku recognizes an app as a Python app by looking for key files. Including a requirements.txt in the root directory is one way for Heroku to recognize your Python app.
To do this locally, you can run the following command:
Note: Postgres must be properly installed in order for this step to work properly.
Note: if youβre running Linux, the libpq-dev system package (or equivalent for your distribution) must also be installed.
Installing the dependencies also caused several other dependencies to be installed. You can see them by using pipβs feature list :
Once dependencies are installed, you will be ready to run your app locally.
Run the app locally
The app is almost ready to start locally. Django uses local assets, so first, youβll need to run collectstatic :
If youβre on Microsoft Windows system, run this:
If youβre on a Unix system, just use the default Procfile by running:
Your local web server will then start up:
Just like Heroku, heroku local examines the Procfile to determine what to run.
Open http://localhost:5000 with your web browser. You should see your app running locally.
To stop the app from running locally, go back to your terminal window and press Ctrl + C to exit.
Push local changes
In this step youβll learn how to propagate a local change to the application through to Heroku. As an example, youβll modify the application to add an additional dependency and the code to use it.
Install requests locally:
And then add it to your requirements.txt file:
Modify hello/views.py so that it imports the requests module at the start:
Now modify the index method to make use of the module. Try replacing the current index method with the following code:
Now test again locally.
If youβre on Microsoft Windows system, run this:
If youβre on a Unix system, just use the default Procfile by running:
Visit your application at http://localhost:5000. You should now see the output of fetching http://httpbin.org/status/418, which is a lovely teapot:
Now deploy. Almost every deploy to Heroku follows this same pattern. First, add the modified files to the local git repository:
Now commit the changes to the repository:
Now deploy, just as you did previously:
Finally, check that everything is working:
Provision add-ons
Add-ons are third-party cloud services that provide out-of-the-box additional services for your application, from persistence through logging to monitoring and more.
In this step you will provision one of these logging add-ons, Papertrail.
Provision the papertrail logging add-on:
To help with abuse prevention, provisioning an add-on requires account verification. If your account has not been verified, you will be directed to visit the verification site.
The add-on is now deployed and configured for your application. You can list add-ons for your app like so:
To see this particular add-on in action, visit your applicationβs Heroku URL a few times. Each visit will generate more log messages, which should now get routed to the papertrail add-on. Visit the papertrail console to see the log messages:
Your browser will open up a Papertrail web console, showing the latest log events. The interface lets you search and set up alerts:
Start a console
You can run a command, typically scripts and applications that are part of your app, in a one-off dyno using the heroku run command. It can also be used to launch a REPL process attached to your local terminal for experimenting in your appβs environment:
The Python shell is running in the context of your app and all its dependencies. From here you can import some of your application files. For example, you will be be able to run the following:
Donβt forget to type exit to exit the shell and terminate the dyno.
Define config vars
At runtime, config vars are exposed as environment variables to the application.
Now modify the index method so that it repeats an action depending on the value of the TIMES environment variable:
To set the config var on Heroku, execute the following:
View the config vars that are set using heroku config :
Deploy your changed application to Heroku to see this in action.
Provision a database
The add-on marketplace has a large number of data stores, from Redis and MongoDB providers, to Postgres and MySQL. In this step you will learn about the free Heroku Postgres add-on that was automatically provisioned when your app was deployed.
A database is an add-on, and so you can find out a little more about the database provisioned for your app using the addons command in the CLI:
Listing the config vars for your app will display the URL that your app is using to connect to the database, DATABASE_URL :
Heroku also provides a pg command that shows a lot more:
This indicates I have a hobby database (free), running Postgres 10.5, with no data.
Accessing it will yield an error though, because while the database is configured, the tables have not been created. Run the standard Django manage.py migrate to create the tables.
Now access the /db route again and youβll see a simple page update every time you access it:
Whenever you visit the /db route of your app, the following method in the hello/views.py file is invoked which creates a new Greeting and then renders all the existing Greetings:
Assuming that you have Postgres installed locally, use the heroku pg:psql command to connect to the remote database and see all the rows:
A similar technique can be used to install MongoDB or Redis add-ons.
Next steps
You now know how to deploy an app, change its configuration, view logs, scale, and attach add-ons.
Hereβs some recommended reading. The first, an article, will give you a firmer understanding of the basics. The second is a pointer to the main Python category here on Dev Center: