ΠΡΠ²ΠΎ, ΠΌΠ°Π»ΠΊΡ ΡΠ΅ΠΎΡΠΈΡΠ°. Π¨ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Twelve-Factor ?
Π‘ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ Π·Π±ΠΎΡΠΎΠ²ΠΈ, ΠΎΠ²ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈ ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° SaaS Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅, ΠΏΠΎΠΌΠ°Π³Π°ΡΡΠΈ ΠΏΡΠ΅ΠΊΡ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π° DevOps Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈΡΠ΅ ΠΊΠΎΠΈ Π½Π°ΡΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΡΠ΅ΡΠ°Π²Π°Π°Ρ ΠΏΡΠΈ ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΡ Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ ΠΎΠ΄ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π₯Π΅ΡΠΎΠΊΡ.
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Twelve-Factor ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΠΊ ΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° (Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠ΅Π΄ΠΈΡΠΈ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΊΠ΅ΡΠΎΠ²ΠΈ ΠΈΡΠ½.).
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ Π·Π° ΡΠ°ΠΊΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΈ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° ΠΎΠ²Π°Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΠ°:
- ΠΠΎΠ΄Π±Π°Π·Π° β ΠΠ΄Π½Π° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄Π΅Π½Π° Π²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ° Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° β ΠΏΠΎΠ²Π΅ΡΠ΅ΠΊΡΠ°ΡΠ½ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ°
- ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡΠΈ β ΠΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΡΠ΅ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΡΠ΅
- ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° β ΠΠ°ΡΡΠ²Π°ΡΡΠ΅ ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ ΡΡΠ°Π΅ΡΠ΅
- Π£ΡΠ»ΡΠ³ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° β Π Π°Π·ΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ
- ΠΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄Π΅ΡΠ΅, ΡΡΡΠ°ΡΡΠ΅ β Π‘ΡΡΠΎΠ³ΠΎ ΠΎΠ΄Π΄Π΅Π»Π΅ΡΠ΅ Π³ΠΈ ΡΠ°Π·ΠΈΡΠ΅ Π½Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅
- ΠΡΠΎΡΠ΅ΡΠΈ β Π‘ΡΠ°ΡΡΡΠ²Π°Ρ ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π±Π΅Π· Π΄ΡΠΆΠ°Π²ΡΠ°Π½ΡΡΠ²ΠΎ
- ΠΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ΡΠΎ β Π£ΡΠ»ΡΠ³ΠΈ Π·Π° ΠΈΠ·Π²ΠΎΠ· ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ Π·Π° Π²ΡΠ·ΡΠ²Π°ΡΠ΅
- ΠΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ β Π‘ΠΊΠ°Π»ΠΈΡΠ°Ρ ΡΠ° Π²Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ
- ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° β ΠΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΡΠ΅ ΡΠ° Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎΡΡΠ° ΡΠΎ Π±ΡΠ·ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΈΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΠ΅
- ΠΠ°ΡΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π·Π²ΠΎΡ/ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° β Π§ΡΠ²Π°ΡΡΠ΅ Π³ΠΈ Π²Π°ΡΠΈΡΠ΅ ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ, ΠΈΠ½ΡΡΠ΅Π½ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΊΠΎΠ»ΠΊΡ ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΠΈΡΠ½ΠΈ
- Π‘Π΅ΡΠ° β ΠΡΠΈΠΊΠ°ΠΆΠ΅ΡΠ΅ Π³ΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΈΠ² Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ
- ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ β ΠΠ·Π²ΡΡΠ΅ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ/ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ad hoc ΠΏΡΠΎΡΠ΅ΡΠΈ
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° 12-ΡΠ΅ ΡΠ°ΠΊΡΠΎΡΠΈ ΠΎΠ΄ ΡΠ»Π΅Π΄Π½ΠΈΠ²Π΅ ΡΠ΅ΡΡΡΡΠΈ:
-
ΠΡΠΈΡΠΈΡΠ°Π»Π΅Π½ ΠΈΠ·Π²ΠΎΡ - ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ° -
Π‘ΡΠ°ΡΠΈΡΠ° Π·Π° habr. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Twelve-Factor - ΠΎΡΠΈΡΠΈΡΠ°Π»Π΅Π½ ΠΏΡΠ΅Π²ΠΎΠ΄ -
Π‘ΡΠ°ΡΠΈΡΠ° Π·Π° habr. 7 ΡΠ°ΠΊΡΠΎΡΠΈ ΡΡΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠ²Π°Π°Ρ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° 12 ΡΠ°ΠΊΡΠΎΡΠΈ - ΡΠ²Π΅ΠΆ ΠΏΠΎΠ³Π»Π΅Π΄ Π½Π° 12-ΡΠ΅ ΡΠ°ΠΊΡΠΎΡΠΈ ΡΠΎ ΡΠ΅Π» Π½ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅.
Π¨ΡΠΎ Π΅ Π‘ΠΈΠ½ΠΎ-Π·Π΅Π»Π΅Π½ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅?
Π‘ΠΈΠ½ΠΎ-Π·Π΅Π»Π΅Π½ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π΅ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π΄ΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π° ΡΠΎΡ Π½Π°ΡΠΈΠ½ ΡΡΠΎ ΠΊΡΠ°ΡΠ½ΠΈΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ Π³Π»Π΅Π΄Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²Π° ΡΡΡΠ°Π½Π°. Π‘ΠΎ Π΄ΡΡΠ³ΠΈ Π·Π±ΠΎΡΠΎΠ²ΠΈ, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ Π½ΡΠ»Π° ΠΏΡΠ΅ΡΡΠΎΡ.
ΠΠ»Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΠ΅ΠΌΠ° BG Deploy ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ ΠΎΠ½Π°Π° ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½Π° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠ΄ΠΎΠ»Ρ.
- ΠΠ° ΠΏΠΎΡΠ΅ΡΠΎΠΊ ΠΈΠΌΠ° 2 ΡΠΈΠ·ΠΈΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΡΠΎ Π°ΠΏΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΡΡ ΠΊΠΎΠ΄, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΠΈΠΌΠ° ΠΈ ΡΡΡΠ΅Ρ (Π±Π°Π»Π°Π½ΡΠ΅Ρ).
- Π ΡΡΠ΅ΡΠΎΡ ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π³ΠΈ Π½Π°ΡΠΎΡΡΠ²Π° ΡΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ° Π΄ΠΎ Π΅Π΄Π΅Π½ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ (Π·Π΅Π»Π΅Π½Π°).
- ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈΡΠ΅, ΡΠ΅Π»ΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° Π½Π° Π΄ΡΡΠ³ ΡΠ΅ΡΠ²Π΅Ρ (ΡΠΈΠ½Π°), ΠΊΠΎΡΠ° Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π±Π°ΡΠ°ΡΠ°.
- ΠΡΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ΄ΠΎΡ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠΈΠ½Π° Π±ΠΎΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π°ΠΆΡΡΠΈΡΠ°Π½, Π½Π° ΡΡΡΠ΅ΡΠΎΡ ΠΌΡ Π΅ Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»ΠΈ Π·Π΅Π»Π΅Π½ΠΈ Π½Π° ΡΠΈΠ½Π° ΡΠ΅ΡΠ²Π΅Ρ.
- Π‘Π΅Π³Π° ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π³ΠΎ Π³Π»Π΅Π΄Π°Π°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΡΠΈΠ½Π° ΡΠ΅ΡΠ²Π΅Ρ.
- ΠΠ° Π½Π΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅, Π·Π΅Π»Π΅Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½Π° ΠΊΠΎΠΏΠΈΡΠ° Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΠ½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π½Π΅ΡΡΠΏΠ΅Ρ ΠΈ Π³ΡΠ΅ΡΠΊΠΈ, ΡΡΡΠ΅ΡΠΎΡ Π³ΠΎ ΠΏΡΠ΅ΡΡΠ»Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠΎΠΊ Π½Π°Π·Π°Π΄ ΠΊΠΎΠ½ Π·Π΅Π»Π΅Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎ ΡΡΠ°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°, Π° Π½ΠΎΠ²ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ° Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΡΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅.
- Π Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΠΎΡ, ΡΠΎΡ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° Π½Π° ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π΅Π»Π΅Π½Π° ΡΠ΅ΡΠ²Π΅Ρ. Π ΠΏΠΎ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅, ΡΡΡΠ΅ΡΠΎΡ Π³ΠΎ ΠΏΡΠ΅ΡΡΠ»Π° ΠΏΡΠΎΡΠΎΠΊΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ° Π½Π°Π·Π°Π΄ ΠΊΠΎΠ½ Π·Π΅Π»Π΅Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.
Π‘Π΅ΡΠΎ ΡΠΎΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±ΡΠΎ ΠΈ Π½Π° ΠΏΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄ Π½Π΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΠΈΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΡΠΎΠ°.
ΠΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΆΠΈΠ²Π΅Π΅ΠΌΠ΅ Π²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ, ΠΎΠΏΡΠΈΡΠ°ΡΠ° ΡΠΎ ΡΠΈΠ·ΠΈΡΠΊΠΎ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ ΠΊΠ»Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΠ΅ΠΌΠ° Π½Π΅ Π½ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°. ΠΠ°Π±Π΅Π»Π΅ΠΆΠ΅ΡΠ΅ Π³ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π·Π°ΡΠ΅Π³Π°, ΡΠ΅ ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΡΠ½Π°.
ΠΠΎΡ ΠΈ Π΄ΠΎΠ±Π°Ρ ΡΠΎΠ²Π΅Ρ
ΠΠΏΡΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈ: ΠΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ»Ρ Π³ΠΈ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π°Π»Π°ΡΠΊΠΈΡΠ΅/ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅ ΡΡΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠ°ΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π°ΠΏΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΈΡΠ΅ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ ΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΡΠ΅ Π²ΠΊΡΡΡΠ°Ρ ΡΠΎ Π²Π΅Π±-ΡΠ°Π·Π²ΠΎΡΠΎΡ (ΠΎΠ²Π° Π΅ ΠΈΠ·Π½Π΅Π½Π°Π΄ΡΠ²Π°ΡΠ΅), ΡΠΎ PHP ΠΈ Docker.
Π‘ΡΠ°Π²ΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ»Ρ Π΄Π°Π²Π°Π°Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅Π½ ΠΎΠΏΠΈΡ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΡΠ°ΠΊΡΠΎΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ; Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΠΎΡΠΈΡΠ° Π½Π° ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ°, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π³ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ³ΠΎΡΠ΅ Π΄ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ ΠΈΠ·Π²ΠΎΡ.
1. ΠΠΎΠ΄Π±Π°Π·Π°
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ FTP ΠΈ FileZilla Π·Π° Π΄Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π΅Π΄Π΅Π½ ΠΏΠΎ Π΅Π΄Π΅Π½, Π½Π΅ ΡΡΠ²Π°ΡΡΠ΅ Π³ΠΎ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π΄ΡΡΠ³ΠΎ ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ²Π΅Π½ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΡΠ΅Π»ΠΈΠΎΡ ΠΊΠΎΠ΄ Π΄ΠΎΠ°ΡΠ° ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΎΠ΄ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅. Π‘Π΅ΡΠ²Π΅ΡΠΈΡΠ΅ (ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅, ΡΠ΅ΡΡ1, ΡΠ΅ΡΡ2...) ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΊΠΎΠ΄ ΠΎΠ΄ Π³ΡΠ°Π½ΠΊΠΈ Π½Π° Π΅Π΄Π½ΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅. ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½ ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½Π·ΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡ Π½Π° ΠΊΠΎΠ΄ΠΎΡ.
2. ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡΠΈ
ΠΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ Π³ΠΈ ΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΊΠΎΡΠ΅Π½ΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ. ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠΎ ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΠΎΡ ΠΊΠΎΠ΄ Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° ΡΠΎ ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ ΡΡΡΠ΅ 20 ΡΡΠ»ΡΠ³ΠΈ.
ΠΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ° ΡΠ°ΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ»ΠΈΠ²Π° Π»ΠΈΡΡΠ° Π½Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ (ΠΏΠΎΠ΄ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΌΠΈΡΠ»Π°ΠΌ ΠΈ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°). Π‘ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ.
ΠΠ° Π·Π΅ΠΌΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΡ ΠΈ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊ.
ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΡ β ΠΌΠ΅Π½Π°ΡΠ΅Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ PHP. ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΡΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° ΡΡΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π»Π°Π±Π°Π²ΠΎ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ ΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° Π³ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅. ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° 20 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈ ΡΠ΅ΠΊΠΎΡ ΡΠ΅ ΠΈΠΌΠ° Π»ΠΈΡΠ½Π° Π»ΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΈ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡΠ΅.
ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ°Π±ΠΎΡΠ½ΠΈΠΊ β Π°Π»Π°ΡΠΊΠ° ΠΊΠΎΡΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° Π²ΠΎ ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ°, ΠΈΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΠΈ ΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΡΠΎΡ, Π½ΠΎ ΠΏΠΎΡΠ΅ΠΌΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΎΠ΄ΡΠ΅Π΄ΠΈΠΌΠ΅ ΡΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° PHP, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΡΠ°ΠΌΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ, Π±Π΅Π· Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½ΠΈΡΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ. Π ΡΡΠΎ Π΅ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΎ, Π±Π΅Π· ΠΌΠ΅ΡΠ°ΡΠ΅ Π²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. Π’ΠΎΠ° Π΅, ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ ΠΏΡΠ΅ΠΊΡ Docker ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ Π°ΠΏΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΡ ΡΠ΅Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ ΡΠΎΡΠ΅ΠΌΠ° ΠΏΠΎΠΈΠ½Π°ΠΊΠ²Π° ΡΡΠ΅Π΄ΠΈΠ½Π°.
3. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°
Π§ΡΠ²Π°ΡΡΠ΅ Π³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. ΠΠΎΡΠ΅Π±Π½ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ Π·Π° ΡΠ΅ΡΡ-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, ΠΎΠ΄Π΄Π΅Π»Π½ΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΡΠ·Π΅ΡΠ΅ ΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ Π΄Π΅Π»ΠΎΠ²Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ if else ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠ°.
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ - ΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΠΎΡ Π½Π°ΡΠΈΠ½ Π½Π° ΠΊΠΎΡ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°Π°Ρ. ΠΠ΄Π΅Π°Π»Π½ΠΎ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ Π½ΠΈΠ· ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° (env vars).
Π’ΠΎΠ° Π΅, Π΄ΡΡΠΈ ΠΈ Π°ΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ .config.prod .config.local ΠΈ Π³ΠΈ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π²ΠΎ .config (Π³Π»Π°Π²Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΎΠ΄ ΠΊΠΎΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΡΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ) - ΠΎΠ²Π° Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΡΠ°Π²Π½ΠΎ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π·Π° ΡΠΈΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈΡΠ°Π½ΠΈ. Π‘ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ (CI/CD) ΠΈ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π°Ρ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π° Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΡ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅.
4. Π£ΡΠ»ΡΠ³ΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°
ΠΠΈΠ΄Π΅ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π²ΡΠ·Π°Π½ΠΈ Π·Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΡΡΠΊΠΈ Π·Π° ΠΈΡΡΠΈ ΡΡΠ»ΡΠ³ΠΈ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ.
ΠΡΡΡΠ½ΠΎΡΡ, ΠΎΠ²Π°Π° ΡΠΎΡΠΊΠ° ΡΠΈΠ»Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΊΠ»ΠΎΠΏΡΠ²Π° ΡΠΎ ΡΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π±Π΅Π· ΠΎΠ²Π°Π° ΡΠΎΡΠΊΠ°, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π°Ρ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΈ, Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΠΏΠ°Π΄Π½Π΅ Π½Π° Π½ΠΈΡΡΠΎ.
Π‘ΠΈΡΠ΅ Π²ΡΡΠΊΠΈ ΡΠΎ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ Π·Π° ΡΠ΅Π΄ΠΈΡΠΈ, Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅, ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΈΡΡΠΈ ΠΈ Π·Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΡΠ΅Π΄ΠΈΠ½Π° ΠΈ Π·Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΠΎΠ΄ ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°/ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. Π‘ΠΎ Π΄ΡΡΠ³ΠΈ Π·Π±ΠΎΡΠΎΠ²ΠΈ, Π²ΠΎ ΡΠ΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅, ΡΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΈΠ·Π°ΡΠ° Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅, ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° Π³ΠΈ Π·Π°ΠΌΠ΅Π½Π°ΠΌ ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ Π΄ΠΎ Π±Π°Π·Π°ΡΠ° #1 ΡΠΎ Π±Π°Π·Π°ΡΠ° #2 Π±Π΅Π· Π΄Π° Π³ΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΠΌ ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠ»ΠΈ, Π³Π»Π΅Π΄Π°ΡΡΠΈ Π½Π°ΠΏΡΠ΅Π΄, ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΡΠ° Π΄Π° ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π²ΡΡΠΊΠ°ΡΠ° Π½Π° Π½Π΅ΠΊΠΎΡ ΠΏΠΎΡΠ΅Π±Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠ΅Ρ-ΡΠ΅ΡΠ²Π΅Ρ.
5. ΠΠ·Π³ΡΠ°Π΄Π±Π°, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅
ΠΠΌΠ°ΡΡΠ΅ ΡΠ° ΡΠ°ΠΌΠΎ ΠΊΠΎΠ½Π΅ΡΠ½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, Π±Π΅Π· ΡΠ°Π½ΡΠΈ Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π°Π·Π°Π΄. ΠΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π° ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ. Π‘Π΅ΠΊΠΎΡ ΡΡΠΎ ΠΌΠΈΡΠ»ΠΈ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΡΡΠΈ ΠΊΠΎΠ΄ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠΎ Π³ΡΠ΅ΡΠΊΠ° Π΅ Π»ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ!
Π‘ΠΈΡΠ΅ ΡΠ°Π·ΠΈ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΎΠ΄Π΄Π΅Π»Π΅Π½ΠΈ Π΅Π΄Π½Π° ΠΎΠ΄ Π΄ΡΡΠ³Π°.
ΠΠΌΠ°ΡΡΠ΅ ΡΠ°Π½ΡΠ° Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΡΠ΅ Π½Π°Π·Π°Π΄. ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΡΠΎ ΡΡΠ°ΡΠΈ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° (Π²Π΅ΡΠ΅ ΡΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Π±ΠΈΡΠΊΠ°) Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ Π±ΡΠ· ΠΏΡΠΈΡΡΠ°ΠΏ, Π·Π° Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π²ΡΠ°ΡΠΈΡΠ΅ ΡΡΠ°ΡΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°. Π’ΠΎΠ° Π΅, ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΏΠΎΡΡΠΎΠΈ ΠΏΠ°ΠΏΠΊΠ° ΡΠΎΠΎΠΏΡΡΠ΅Π½ΠΈΡΠ° ΠΈ ΠΏΠ°ΠΏΠΊΠ° ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ°, ΠΈ ΠΏΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ°ΠΏΠΊΠ°ΡΠ° ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΎ ΡΠΎ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠ½Π° Π²ΡΡΠΊΠ° Π΄ΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠΎ ΡΠ΅ Π½Π°ΠΎΡΠ° Π²Π½Π°ΡΡΠ΅ ΡΠΎΠΎΠΏΡΡΠ΅Π½ΠΈΡΠ° ΡΠΎ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ.
ΠΠ²Π° Π΅ ΠΌΠ΅ΡΡΠΎΡΠΎ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°ΠΌΠ΅ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π‘ΠΈΠ½ΠΎ-ΠΠ΅Π»Π΅Π½ΠΎΡΠΎ, ΠΊΠΎΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠΎΠ΄ΠΎΡ, ΡΡΠΊΡ ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»Π°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ, ΠΏΠ° Π΄ΡΡΠΈ ΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° Π²ΡΠ°ΡΠΈΡΠ΅ ΡΓ¨ Π½Π°Π·Π°Π΄.
6. ΠΡΠΎΡΠ΅ΡΠΈ
Π§ΡΠ²Π°ΡΡΠ΅ Π³ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΡΠ°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΠΈ Π²ΠΎ RAM ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠ°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΡΠ»ΡΠ³ΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΠΎΡΠΏΡΠ΅ΡΠ΅ ΡΠ΅ Π½Π° ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΈ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅.
Π¨ΡΠΎ ΡΠ΅ ΠΎΠ΄Π½Π΅ΡΡΠ²Π° Π΄ΠΎ ΡΠ΅ΡΠΈΠΈΡΠ΅, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ°ΠΌΠΎ Π²ΠΎ ΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ ΠΎΠ΄ ΡΡΠ»ΡΠ³ΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ (memcached, redis), ΠΏΠ° Π΄ΡΡΠΈ ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ 20 ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ, ΡΠ΅ΠΊΠΎΡ ΠΎΠ΄ Π½ΠΈΠ², ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΠΈ Π΄ΠΎ ΠΊΠ΅ΡΠΎΡ, ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ Π²ΠΎ ΠΈΡΡΠ°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π²ΠΎ ΠΊΠΎΡΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ Π΄ΡΡΠ³ ΠΏΡΠΎΡΠ΅Ρ. Π‘ΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΈΠ·Π»Π΅Π³ΡΠ²Π° Π΄Π΅ΠΊΠ° Π±Π΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ ΡΡΠ»ΡΠ³ΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ Π»ΠΈΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅, ΡΓ¨ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ ΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅.
7. ΠΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ΡΠΎ
Π‘Π°ΠΌΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΡΡΠ»ΡΠ³ΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΠ»ΠΈ ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ Π»ΠΈΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΎ PHP ΠΌΠΎΠ΄ΡΠ» Π²ΠΎ Apache.
Π‘ΠΈΡΠ΅ Π²Π°ΡΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΠΌΠ΅ΡΡ ΡΠ΅Π±Π΅ ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π½Π΅ΠΊΠΎΡΠ° Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ° (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΠΎΠ΄ nginx ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΠ°ΠΌ ΠΈ Π΄ΠΎ php-fpm ΠΈ Π΄ΠΎ postgres, ΠΈ ΠΎΠ΄ php-fpm Π΄ΠΎ postgres ΠΈ nginx ΠΈ Π²ΡΡΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠ΅ΠΊΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΠ°ΠΌ Π΄ΠΎ Π΄ΡΡΠ³ ΡΠ΅ΡΠ²ΠΈΡ. ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, ΠΎΠ΄ΡΠΆΠ»ΠΈΠ²ΠΎΡΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Π½Π΅ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½Π° ΡΠΎ ΠΎΠ΄ΡΠΆΠ»ΠΈΠ²ΠΎΡΡΠ° Π½Π° Π΄ΡΡΠ³Π° ΡΡΠ»ΡΠ³Π°.
8. ΠΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ
Π Π°Π±ΠΎΡΠ΅ΡΠ΅ ΡΠΎ Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ½Π°ΠΊΡ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΡΠ»ΠΎΠΆΡΠ²Π°Π°Ρ Π΅Π΄Π΅Π½ ΡΠΎ Π΄ΡΡΠ³!
ΠΡΡΠ°Π²Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎΡ Π·Π° ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅. ΠΠΎΠΊΠ΅ΡΡΠΊΠΈΠΎΡ ΡΠΎΡ Π΅ ΠΎΠ΄Π»ΠΈΡΠ΅Π½ Π·Π° ΠΎΠ²Π°.
Docker Swarm Π΅ Π°Π»Π°ΡΠΊΠ° Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ ΠΊΡΠΏ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π½Π° ΠΈΡΡΠ° ΠΌΠ°ΡΠΈΠ½Π°.
ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠΎΡ, ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° ΠΎΠ΄ΡΠ΅Π΄Π°ΠΌ ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΡΡΡΡΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»Π°ΠΌ Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈ ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΎΠ΄ ΠΈΡΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π°ΠΌ, Π° Π²Π½Π°ΡΡΠ΅ΡΠ½ΠΈΠΎΡ Π±Π°Π»Π°Π½ΡΠ΅Ρ, ΠΏΡΠΈΠΌΠ°ΡΡΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎΡΡΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ Π³ΠΈ ΠΏΡΠ΅ΡΡΠ»ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅. Π’Π°ΠΊΠ°, Π³Π»Π΅Π΄Π°ΡΡΠΈ Π΄Π΅ΠΊΠ° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΎ, ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π°ΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ, Π° ΡΠΎ ΡΠΎΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ°Π»Π°ΠΌ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
9. ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°
ΠΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅Π΄ΠΈΡΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. Π£Π±ΠΈΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΡΡΠ΅Π±Π° Π΄Π° Π²Π»ΠΈΡΠ°Π΅ Π½Π° ΡΠ΅Π»Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΊΠΎ Π΅Π΄Π½Π° ΡΡΠ»ΡΠ³Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ, ΡΓ¨ ΡΠ΅ Π½Π°ΠΌΠ°Π»ΡΠ²Π°.
Π‘Π΅ΠΊΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈ ΡΡΠ»ΡΠ³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΡΠΎΠ° Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π²Π»ΠΈΡΠ°Π΅ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ (ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΡΠΎΠ° Π½Π΅ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π½Π΅Π΄ΠΎΡΡΠ°ΠΏΠ½Π° Π·Π° Π΄ΡΡΠ³Π° ΡΡΠ»ΡΠ³Π°, ΡΡΠΊΡ Π΄Π΅ΠΊΠ° Π΄ΡΡΠ³Π° ΡΡΠ»ΡΠ³Π° Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈ ΠΏΠΎ ΠΎΠ²Π°Π°). Π‘ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΊΠΈΠ½Π°Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΊΠΈΠ½Π°Ρ, Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΎΡΡΠ΅ΡΠ°Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΏΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, Π΄ΡΡΠΈ ΠΈ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΈΡΠ΅Π½ ΠΏΡΠ΅ΠΊΠΈΠ½, ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΎΡΡΠ΅ΡΠ°Ρ (ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ ΠΎΠ²Π΄Π΅, Π±Π°ΡΠ°ΡΠ°ΡΠ° Π²ΠΎ Π±Π°Π·Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠ°ΠΌΠΎ Π²ΠΎ Π³ΡΡΠΏΠΈ ΠΈ Π°ΠΊΠΎ Π±Π°ΡΠ΅ΠΌ Π΅Π΄Π½ΠΎ Π±Π°ΡΠ°ΡΠ΅ ΠΎΠ΄ Π³ΡΡΠΏΠ°ΡΠ° Π½Π΅ ΡΡΠΏΠ΅Π΅ ΠΈΠ»ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΠΎ Π³ΡΠ΅ΡΠΊΠ°, ΡΠΎΠ³Π°Ρ Π½ΠΈΡΡ Π΅Π΄Π½ΠΎ Π΄ΡΡΠ³ΠΎ Π±Π°ΡΠ°ΡΠ΅ ΠΎΠ΄ Π³ΡΡΠΏΠ°ΡΠ° Π½Π° ΠΊΡΠ°ΡΠΎΡ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ ΡΡΠΏΠ΅Π²Π°).
10. ΠΠ°ΡΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π·Π²ΠΎΡ/ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ, ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΈ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ. ΠΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠ°ΠΌΠΊΠ°ΡΠ° Yii Lite, ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Yii, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ±ΡΠ·ΠΎ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ!
ΠΠΎ ΡΠ΅Π°Π»Π½ΠΎΡΡΠ°, ΡΠΈΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΠΊΠΎΠ΄ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π²ΠΎ ΡΠ΅ΡΠΈΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΡΡΠ΅Π΄ΠΈΠ½Π° (Π½Π΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΡΠΈΠ·ΠΈΡΠΊΠΈ Ρ Π°ΡΠ΄Π²Π΅Ρ). ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ΠΊΠΎΡ Π²ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΠΎ ΡΠ°Π·Π²ΠΎΡΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈ ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, Π° Π½Π΅ Π½Π΅ΠΊΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ ΠΎΠ΄Π΄Π΅Π» Π·Π° ΡΠ°Π·Π²ΠΎΡ, ΠΊΠΎΡ ΡΠ°ΠΌΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠ΅Π±Π½Π°ΡΠ° ΡΠΈΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ.
ΠΠΎ ΠΎΠ²Π° Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° ΠΈ Docker. ΠΠΊΠΎ ΡΠ΅ ΠΏΠΎΡΠΈΡΡΠ²Π°Π°Ρ ΡΠΈΡΠ΅ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈ ΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠΊΠ΅Ρ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π²Π½Π΅ΡΡΠ²Π°ΡΠ΅ Π½Π° Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°.
11. ΠΠ½Π΅Π²Π½ΠΈΡΠΈ
ΠΠΈΠ΅ ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ! ΠΠΈΠ΅ Π½Π΅ ΡΠΈΡΡΠΈΠΌΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ. ΠΡΠ΄Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΠΊΡΠΏΠΈΠΌΠ΅ Ρ Π°ΡΠ΄ Π΄ΠΈΡΠΊ ΡΠΎ 9000 ΠΠ΅ΡΠ° Π±Π°ΡΡΠΈ ΠΈ ΡΠΎΠ° Π΅ Π²ΠΎ ΡΠ΅Π΄.
Π‘ΠΈΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ°Π°Ρ ΠΊΠ°ΠΊΠΎ ΡΠ΅ΠΊ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ. Π‘Π°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π²ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡΠΈ. ΠΠ½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π»Π΅Π·Π°Ρ ΠΈΠ»ΠΈ Π²ΠΎ stdout ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°Π°Ρ ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ udp, ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΎ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. Graylog Π΅ Π΄ΠΎΠ±Π°Ρ Π·Π° ΠΎΠ²Π°. Graylog ΡΡΠΎ Π³ΠΈ ΠΏΡΠΈΠΌΠ° ΡΠΈΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ ΠΏΡΠ΅ΠΊΡ udp (ΠΎΠ²ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π΅ Π±Π°ΡΠ° Π΄Π° ΡΠ΅ ΡΠ΅ΠΊΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π·Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠΌΠ°ΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ) Π½Π΅ ΡΠ° ΠΏΠΎΠΏΡΠ΅ΡΡΠ²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π½Π°ΡΠΈΠ½ ΠΈ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° ΡΠ°ΠΌΠΎ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π½Π΅Π²Π½ΠΈΡΠΈ. ΠΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π΅ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΡΠ°ΠΊΠ²ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΈ.
12. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ
ΠΠ° Π΄Π° Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅, Π±Π°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈΡΠ½., ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΎΠ΄Π΄Π΅Π»Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½Π° ΠΊΡΠ°ΡΠ½Π° ΡΠΎΡΠΊΠ° Π²ΠΎ API, Π°ΠΊΠΎ ΡΠ° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ 2 ΠΏΠ°ΡΠΈ ΠΏΠΎ ΡΠ΅Π΄ ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ Π΄ΡΠΏΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΓ¨. ΠΠΎ, Π²ΠΈΠ΅ Π½Π΅ ΡΡΠ΅ Π³Π»ΡΠΏΠ°Π²ΠΈ, Π½Π΅ΠΌΠ° Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ Π΄Π²Π°ΠΏΠ°ΡΠΈ ΠΈ Π½Π΅ Π½ΠΈ ΡΡΠ΅Π±Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°.
Π‘ΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π²ΠΎ ΠΈΡΡΠ°ΡΠ° ΡΡΠ΅Π΄ΠΈΠ½Π° ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ, Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, Π°ΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠΎΠ³Π°Ρ ΡΠΎΠ° Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ ΡΠΎ ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠΌΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΡΠ΅ΠΊΡ Π½Π΅ΠΊΠΎΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° Π²ΠΈΠ·ΡΠ΅Π»Π½ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ° ΡΠ°ΠΊΠ²ΠΈ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΈ - ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅ ΠΈ Π²ΠΎ ΡΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ Π½Π° ΠΈΡΡ Π½Π°ΡΠΈΠ½ ΡΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ»ΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. ΠΠ° ΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π²ΠΎ PHP, Laravel, Laradock, Docker-Compose
P.S Π‘ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π½Π° MacOS. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠ΄ Π½ΠΈΠ² ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ ΠΈ Π·Π° Linux. ΠΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π½Π° Windows, ΠΏΡΠΎΡΡΠ΅ΡΠ΅ ΠΌΠΈ, Π½ΠΎ ΡΠ°Ρ Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΠΌ ΡΠΎ Windows.
ΠΡΠ΄Π΅ Π΄Π° Π·Π°ΠΌΠΈΡΠ»ΠΈΠΌΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° Π½Π΅ΠΌΠ°ΠΌΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° PHP Π½Π° Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈ Π½ΠΈΡΡΠΎ Π²ΠΎΠΎΠΏΡΡΠΎ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ Π½Π°ΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° docker ΠΈ docker-compose. (ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π΅ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ)
docker -v &&
docker-compose -v
1. Π‘ΡΠ°Π²ΠΈ
git clone https://github.com/Laradock/laradock.git &&
ls
ΠΠΎ Π²ΡΡΠΊΠ° ΡΠΎ ΠΠ°ΡΠ°Π΄ΠΎΠΊ, ΡΠ΅ ΠΊΠ°ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΊΡΠ» ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΡΠ° ΡΠΎΠ΄ΡΠΆΠΈ ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠΈ. ΠΠΎ, ΡΠ°Ρ Π½Π΅ Π±ΠΈ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΠ°Π» Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Laradock ΠΊΠ°ΠΊΠΎ ΡΠ°ΠΊΠΎΠ² Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π²ΠΈΡΠΎΠΊ. ΠΠΎΠ΄ΠΎΠ±ΡΠΎ Π΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π²ΠΎ ΠΠ°ΡΠ°Π΄ΠΎΠΊ, ΠΎΠ²Π° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ ΠΌΡ ΡΡΠ΅Π±Π° ΡΓ¨ ΡΡΠΎ Π΅ ΡΠ°ΠΌΡ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅.
2. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Laradock Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°.
cd laradock &&
cp env-example .env
2.1. ΠΡΠ²ΠΎΡΠ΅ΡΠ΅ Π³ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ habr (ΠΌΠ°ΡΠΈΡΠ½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° Π²ΠΎ ΠΊΠΎΡΠ° Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½ laradock) Π²ΠΎ Π½Π΅ΠΊΠΎΡ ΡΡΠ΅Π΄Π½ΠΈΠΊ. (ΠΠΎ ΠΌΠΎΡΠΎΡ ΡΠ»ΡΡΠ°Ρ PHPStorm)
ΠΠΎ ΠΎΠ²Π°Π° ΡΠ°Π·Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΌΡ Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΈΠΌΠ΅.
2.2. Π‘ΡΠ°ΡΡΡΠ²Π°ΡΡΠ΅ ΡΠ° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ. (ΠΠΎ Π²Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π½Π° ΡΠ»ΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΠΈΠΌ ΡΡΠ΅Π±Π° ΠΈΠ·Π²Π΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π°Ρ)
Π Π°Π±ΠΎΡΠ½ΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ Π΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° ΡΠ»ΠΈΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΡΠ°ΠΌΠΊΠ°ΡΠ° Π²ΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ.
ΠΠ»Π΅Π³ΡΠ²Π°ΠΌΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ
docker-compose up -d workspace &&
docker-compose exec workspace bash
2.3. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΠ°ΡΠ°Π²Π΅Π»
composer create-project --prefer-dist laravel/laravel application
2.4. ΠΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°ΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ ΠΈ kill compose.
ls
exit
docker-compose down
2.5. ΠΡΠ΄Π΅ Π΄Π° ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ Π½Π° PHPStorm ΠΈ Π΄Π° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΏΠ°ΡΠ΅ΠΊΠ° Π΄ΠΎ Π½Π°ΡΠ°ΡΠ° laravel Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° .env.
3. ΠΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π³ΠΎ ΡΠ΅Π»ΠΈΠΎΡ ΠΊΠΎΠ΄ Π²ΠΎ Git.
ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° Github (ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠ΅ Π±ΠΈΠ»ΠΎ Π΄ΡΡΠ³ΠΎ ΠΌΠ΅ΡΡΠΎ). ΠΡΠ΄Π΅ Π΄Π° ΠΎΠ΄ΠΈΠΌΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ habr Π²ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΡ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΊΠΎΠ΄.
echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° Π²Π°Ρ ΡΠ΅ΠΏΠΎ
git push -u origin master
git status
ΠΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠ΅ Π΄Π°Π»ΠΈ ΡΠ΅ Π΅ Π²ΠΎ ΡΠ΅Π΄.
ΠΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡ, ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π°ΠΌ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡ Π²ΠΈΠ·ΡΠ΅Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π·Π° Git, Π²ΠΎ ΠΌΠΎΡΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠΎΠ° Π΅
4. ΠΡΠ΄Π΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌΠ΅!
ΠΡΠ΅Π΄ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ Π½ΠΈΡΡΠΎ Π½Π΅ Π²ΠΈΡΠΈ Π½Π° ΠΏΠΎΡΡΠΈΡΠ΅ 80 ΠΈ 443.
docker-compose up -d nginx php-fpm
Π’Π°ΠΊΠ°, Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ 3 ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ:
- nginx - Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ
- php-fpm - php Π·Π° ΠΏΡΠΈΠΌΠ°ΡΠ΅ Π±Π°ΡΠ°ΡΠ° ΠΎΠ΄ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ
- ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΡΠΎΡ - php Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ
ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΡΡΠΈΠ³Π½Π°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠ²ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ²Π° 4 ΠΏΠΎΠ΅Π½ΠΈ ΠΎΠ΄ 12, ΠΈ ΡΠΎΠ°:
1. ΠΠΎΠ΄Π±Π°Π·Π° β ΡΠ΅Π»ΠΈΠΎΡ ΠΊΠΎΠ΄ Π΅ Π²ΠΎ Π΅Π΄Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ (ΠΌΠ°Π»Π° Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ°: ΠΌΠΎΠΆΠ΅Π±ΠΈ Π΅ ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ Π΄ΠΎΠΊΠ΅Ρ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π»Π°ΡΠ°Π²Π΅Π», Π½ΠΎ ΡΠΎΠ° Π½Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ).
2. ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡΠΈ - Π‘ΠΈΡΠ΅ Π½Π°ΡΠΈ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ application/composer.json ΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΡΠ° Dockerfile ΠΎΠ΄ ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ.
3. Π£ΡΠ»ΡΠ³ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° β Π‘Π΅ΠΊΠΎΡΠ° ΠΎΠ΄ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ (php-fom, nignx, ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΡΠΎΡ) ΠΆΠΈΠ²Π΅Π΅ ΡΠ²ΠΎΡ ΠΆΠΈΠ²ΠΎΡ ΠΈ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½Π° ΠΎΠ΄Π½Π°Π΄Π²ΠΎΡ ΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π΅Π΄Π½Π° ΡΡΠ»ΡΠ³Π°, Π΄ΡΡΠ³Π°ΡΠ° Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π·Π°ΡΠ΅Π³Π½Π°ΡΠ°.
4. ΠΡΠΎΡΠ΅ΡΠΈ β ΡΠ΅ΠΊΠΎΡΠ° ΡΡΠ»ΡΠ³Π° Π΅ Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ. Π‘Π΅ΠΊΠΎΡΠ° ΠΎΠ΄ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π΅ ΠΎΠ΄ΡΠΆΡΠ²Π° Π²Π½Π°ΡΡΠ΅ΡΠ½Π° ΡΠΎΡΡΠΎΡΠ±Π°.
5. ΠΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ΡΠΎ
docker ps
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅, ΡΠ΅ΠΊΠΎΡΠ° ΡΡΠ»ΡΠ³Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° ΠΏΠΎΡΡΠ° ΠΈ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ½Π° Π·Π° ΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
6. ΠΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ
Docker Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° ΠΈΡΡΠΈ ΡΡΠ»ΡΠ³ΠΈ ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΌΠ΅ΡΡ Π½ΠΈΠ².
ΠΠ° Π³ΠΈ Π·Π°ΠΏΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΠΌΠΈΠ½Π΅ΠΌΠ΅ Π½ΠΈΠ· Π·Π½Π°ΠΌΠ΅ΡΠΎ -- ΡΠΊΠ°Π»Π°
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅, ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ php-fpm. ΠΠ΅ ΡΡΠ΅Π±Π° Π½ΠΈΡΡΠΎ Π΄Π° ΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΠΎΠ²ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠΈΠ΅, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΌΡ ΠΏΡΠΈΡΡΠ°ΠΏΡΠ²Π°ΠΌΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ΡΠΎ 9000, Π° Docker Π³ΠΎ ΡΠ΅Π³ΡΠ»ΠΈΡΠ° ΡΠΎΠ²Π°ΡΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ Π·Π° Π½Π°Ρ.
7. ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° - ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ±ΠΈΠ΅ Π±Π΅Π· Π΄Π° ΠΌΡ Π½Π°ΡΡΠ΅ΡΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠΎΡ. ΠΠ°ΠΏΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π½Π΅ΠΌΠ° Π΄Π° Π²Π»ΠΈΡΠ°Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π»Π°Π½ΡΠΈΡΠ°ΡΠ°. Π‘Π΅ΠΊΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ Π²ΠΎ ΡΠ΅ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅.
8. ΠΠ°ΡΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π·Π²ΠΎΡ/ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° - ΡΠΈΡΠ΅ Π½Π°ΡΠΈ ΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΡΠ΅ ΠΈΡΡΠΈ. Π‘ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΡΠ° Π΄Π° ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½ΠΈΡΡΠΎ Π²ΠΎ Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Π‘Γ¨ ΡΠ΅ ΡΠ΅ Π±Π°Π·ΠΈΡΠ° Π½Π° Docker Π½Π° ΠΈΡΡ Π½Π°ΡΠΈΠ½.
9. Π‘Π΅ΡΠ° - ΡΠΈΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ Π²ΠΎ ΠΎΠ²ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΎΠ΄Π°Ρ Π²ΠΎ ΠΏΡΠ΅Π½ΠΎΡ ΠΈ ΡΠ΅ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ Π²ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Docker. (Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, Π²ΡΡΡΠ½ΠΎΡΡ, ΡΠΎ Π΄ΡΡΠ³ΠΈ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π±ΠΈΠ΄Π΅ ΡΠ»ΡΡΠ°Ρ Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ Π³ΡΠΈΠΆΠΈΡΠ΅ Π·Π° ΡΠΎΠ°)
docker-compose logs -f
ΠΠΎ, ΠΏΠΎΡΡΠΎΠΈ Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ° Π²ΠΎ ΡΠΎΠ° ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π²ΠΎ PHP ΠΈ Nginx ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΈΡΡΠ²Π°Π°Ρ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π°Ρ 12-ΡΠ΅ ΡΠ°ΠΊΡΠΎΡΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π»ΠΎΠ³ΠΎΠ²ΠΈ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎΡΠ΅Π±Π½ΠΎ.
Docker, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π»ΠΎΠ³ΠΎΠ²ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° stdout, ΡΡΠΊΡ ΠΈ Π·Π° ΡΠ°ΠΊΠ²ΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ graylog, ΡΡΠΎ Π³ΠΈ ΡΠΏΠΎΠΌΠ΅Π½Π°Π² ΠΏΠΎΠ³ΠΎΡΠ΅. Π Π²Π½Π°ΡΡΠ΅ Π²ΠΎ Graylog, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎ Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ ΠΈ Π½Π°ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ ΡΠΎΠ° Π½Π° ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π½Π°ΡΠΈΠ½.
10. ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ β ΡΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Π°Ρ ΡΠΎ Laravel Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° artisan ΡΠΎΠΊΠΌΡ ΠΎΠ½Π°ΠΊΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π±ΠΈ ΡΠ°ΠΊΠ°Π»Π΅ ΠΊΡΠ΅Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° 12 ΡΠ°ΠΊΡΠΎΡ.
ΠΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π½Π΅ΠΊΠΎΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
ΠΠ»Π΅Π³ΡΠ²Π°ΠΌΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ.
docker-compose exec workspace bash
php artisan list
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°. (ΠΠ΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Π½Π΅ Π³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π²ΠΌΠ΅ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ ΠΊΠ΅ΡΠΎΡ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΠ΅ ΡΠ΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠΎ ΠΊΠ΅ΡΠΎΡ ΠΈ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ).
11. ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ 12 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄Π΅ΡΠ΅, ΡΡΡΠ°ΡΡΠ΅
Π‘Π°ΠΊΠ°Π² Π΄Π° Π³ΠΎ ΠΏΠΎΡΠ²Π΅ΡΠ°ΠΌ ΠΎΠ²ΠΎΡ Π΄Π΅Π» Π½Π° Π‘ΠΈΠ½ΠΎ-Π·Π΅Π»Π΅Π½ΠΎ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅, Π½ΠΎ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΅ ΠΏΡΠ΅ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ±Π΅ΠΌΠ΅Π½ Π·Π° ΠΎΠ²Π°Π° ΡΡΠ°ΡΠΈΡΠ°. ΠΠ΅ Π½Π°ΠΏΠΈΡΠ°ΠΌ ΠΏΠΎΡΠ΅Π±Π½Π° ΡΡΠ°ΡΠΈΡΠ° Π·Π° ΠΎΠ²Π°.
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° CI/CD ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠ°ΠΊΠΎ ΠΠ΅Π½ΠΊΠΈΠ½Ρ ΠΈ ΠΠΈΡΠ»Π°Π± CI. ΠΠΎ Π΄Π²Π΅ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π°. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ°, Π²ΠΎ ΠΎΠ²Π°Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ°, ΡΠΎΡΠΊΠ°ΡΠ° Π² ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅ΡΠ° ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
Π ΠΏΠΎΠ΅Π½ΡΠ°ΡΠ° Π·Π° ΠΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄Π΅ΡΠ΅, ΡΡΡΠ°ΡΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΡΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎ ΠΈΠΌΠ΅ΡΠΎ ΠΠ°ΡΠΎΠ²ΠΎΠ΄ΠΎΡ.
ΠΠ°ΡΠΎΠ²ΠΎΠ΄ΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π·ΠΈ, ΠΈΡΡΠ°ΠΊΠ½ΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΡΠ°Π·ΠΈΡΠ΅ Π½Π° ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡΠ²Π°ΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅. ΠΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΎ Pipeline, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΠΈ, ΠΈ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° ΡΓ¨. ΠΠ²Π° Π΅ Π°Π»Π°ΡΠΊΠ° ΡΠΎ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π».
ΠΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΅ Π½Π°
ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²Π°ΡΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»ΠΎΡ ΠΏΡΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅.
P.S.: Π‘ΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠΎ ΠΊΠΎΠΈ Π±ΠΈΠ»ΠΎ Π΄ΡΡΠ³ΠΈ Π°Π»Π°ΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΡΠΈ. ΠΠ»Π°Π²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π΅ Π΄Π΅ΠΊΠ° ΡΡΡΡΠΈΠ½Π°ΡΠ° Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°.
ΠΠ·Π²ΠΎΡ: www.habr.com