Π Π°Π΄ΠΈΠΎΠ½ΠΈΡ†Π° Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π°: Π˜Π·Ρ€Π°Π΄Π° Ρ€Π°Π΄Π½ΠΈΡ… Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π° Π½ΡƒΠ΄ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Π΅ Π½ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅, Ρ‡ΠΈΡ˜Π° листа ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΡƒΠ·ΠΌΠ΅ страницС, ΠΌΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, ΡƒΡ‡Π΅ΡšΠ΅ Π½ΠΎΠ²ΠΈΡ… ствари јС ΡƒΠ²Π΅ΠΊ Π±ΠΎΡ™Π΅ Ρƒ пракси, ΠΏΠ° Ρƒ наставку Π½ΡƒΠ΄ΠΈΠΌΠΎ Ρ€Π°Π΄ΠΈΠΎΠ½ΠΈΡ†Ρƒ ΠΎ стварном ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΡƒ инфраструктурС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ заснованС Π½Π° Π Π΅Π΄ Π₯Π°Ρ‚ ЕнтСрприсС Π›ΠΈΠ½ΡƒΠΊ 8 Π‘Π΅Ρ‚Π°.

Π Π°Π΄ΠΈΠΎΠ½ΠΈΡ†Π° Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π°: Π˜Π·Ρ€Π°Π΄Π° Ρ€Π°Π΄Π½ΠΈΡ… Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

Π£Π·ΠΌΠΈΠΌΠΎ Π·Π° основу ΠŸΠΈΡ‚Ρ…ΠΎΠ½, ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈ програмски јСзик ΠΌΠ΅Ρ’Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΠΌΠ°, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Ρƒ Π”Ρ˜Π°Π½Π³ΠΎ ΠΈ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ›, ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ ΡƒΠΎΠ±ΠΈΡ‡Π°Ρ˜Π΅Π½Ρƒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Ρƒ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠΈΡ‚Π΅ Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π° Π΄Π° Ρ€Π°Π΄ΠΈ са њима. Π—Π°Ρ‚ΠΈΠΌ Ρ›Π΅ΠΌΠΎ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ још ΠΏΠ°Ρ€ (нСкласификованих) ΡΠ°ΡΡ‚ΠΎΡ˜Π°ΠΊΠ°.

ВСстно ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ Ρ›Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚ΠΈ, Ρ˜Π΅Ρ€ јС Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΎ истраТити могућности Π°ΡƒΡ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅, Ρ€Π°Π΄Π° са ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΠΌΠ° ΠΈ ΠΈΡΠΏΡ€ΠΎΠ±Π°Π²Π°ΡšΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° са вишС сСрвСра. Π”Π° бистС Π·Π°ΠΏΠΎΡ‡Π΅Π»ΠΈ са Π½ΠΎΠ²ΠΈΠΌ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π΅Ρ‚ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ΠΌ ΠΌΠ°Π»ΠΎΠ³, Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΠ³ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Ρ€ΡƒΡ‡Π½ΠΎ ΠΊΠ°ΠΊΠΎ бистС ΠΌΠΎΠ³Π»ΠΈ Ρ‚Π°Ρ‡Π½ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡˆΡ‚Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС дСси ΠΈ ΠΊΠ°ΠΊΠΎ Ρ‚ΠΎ Π΄Π΅Π»ΡƒΡ˜Π΅, Π° Π·Π°Ρ‚ΠΈΠΌ ΠΏΡ€Π΅Ρ’ΠΈΡ‚Π΅ Π½Π° Π°ΡƒΡ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ˜ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. Данас Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌΠΎ ΠΎ ΡΡ‚Π²Π°Ρ€Π°ΡšΡƒ Ρ‚Π°ΠΊΠ²ΠΎΠ³ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°.

ΠŸΠΎΡ‡Π½ΠΈΠΌΠΎ са ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅ΠΌ Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π° Π’Πœ сликС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Ρƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΎΠ΄ Π½ΡƒΠ»Π΅ ΠΈΠ»ΠΈ Π΄Π° користитС ΠšΠ’Πœ слику госта која јС доступна ΡƒΠ· Π²Π°ΡˆΡƒ Π‘Π΅Ρ‚Π° ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Ρƒ. Када користитС слику госта, ΠΌΠΎΡ€Π°Ρ›Π΅Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅Ρ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π¦Π” који Ρ›Π΅ садрТати ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΈ корисничкС ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ ΠΎΠ±Π»Π°ΠΊΠ° (Ρ†Π»ΠΎΡƒΠ΄-ΠΈΠ½ΠΈΡ‚). НС ΠΌΠΎΡ€Π°Ρ‚Π΅ Π½ΠΈΡˆΡ‚Π° посСбно Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ са структуром диска ΠΈΠ»ΠΈ доступним ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΠΌΠ°.

Π₯ајдС Π΄Π° Π΄Π΅Ρ‚Π°Ρ™Π½ΠΈΡ˜Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ Ρ†Π΅ΠΎ процСс.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π”Ρ˜Π°Π½Π³Π°

Π‘Π° најновијом Π²Π΅Ρ€Π·ΠΈΡ˜ΠΎΠΌ Π”Ρ˜Π°Π½Π³Π°, Π±ΠΈΡ›Π΅ Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½Π²) са ΠŸΠΈΡ‚Ρ…ΠΎΠ½-ΠΎΠΌ 3.5 ΠΈΠ»ΠΈ новијим. Π£ Π±Π΅Ρ‚Π° бСлСшкама ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π΄Π° јС ΠŸΠΈΡ‚Ρ…ΠΎΠ½ 3.6 доступан, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠΎ Π΄Π° Π»ΠΈ јС Ρ‚ΠΎ заиста ΡΠ»ΡƒΡ‡Π°Ρ˜:

[cloud-user@8beta1 ~]$ python
-bash: python: command not found
[cloud-user@8beta1 ~]$ python3
-bash: python3: command not found

Π Π΅Π΄ Π₯Π°Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ користи ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΊΠ°ΠΎ систСмски ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ Π°Π»Π°Ρ‚Π° Ρƒ Π Π₯Π•Π›-Ρƒ, ΠΏΠ° Π·Π°ΡˆΡ‚ΠΎ јС Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚?

Π§ΠΈΡšΠ΅Π½ΠΈΡ†Π° јС Π΄Π° ΠΌΠ½ΠΎΠ³ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π° још ΡƒΠ²Π΅ΠΊ Ρ€Π°Π·ΠΌΠΈΡˆΡ™Π°Ρ˜Ρƒ ΠΎ прСласку са ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π° 2 Π½Π° ΠŸΠΈΡ‚Ρ…ΠΎΠ½ 2, Π΄ΠΎΠΊ јС сам ΠŸΠΈΡ‚Ρ…ΠΎΠ½ 3 Ρƒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ˜Ρƒ, Π° свС вишС ΠΈ вишС Π½ΠΎΠ²ΠΈΡ… Π²Π΅Ρ€Π·ΠΈΡ˜Π° сС стално ΠΏΠΎΡ˜Π°Π²Ρ™ΡƒΡ˜Π΅. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π°, Π΄Π° Π±ΠΈ сС Π·Π°Π΄ΠΎΠ²ΠΎΡ™ΠΈΠ»Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° стабилним систСмским Π°Π»Π°Ρ‚ΠΈΠΌΠ° Π΄ΠΎΠΊ корисницима Π½ΡƒΠ΄ΠΈ приступ Ρ€Π°Π·Π½ΠΈΠΌ Π½ΠΎΠ²ΠΈΠΌ Π²Π΅Ρ€Π·ΠΈΡ˜Π°ΠΌΠ° ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π°, систСмски ΠŸΠΈΡ‚Ρ…ΠΎΠ½ јС ΠΏΡ€Π΅Π±Π°Ρ‡Π΅Π½ Ρƒ Π½ΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ ΠΏΡ€ΡƒΠΆΠ° могућност ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ° ΠΈ ΠŸΠΈΡ‚Ρ…ΠΎΠ½-Π° 2.7 ΠΈ 3.6. Π’ΠΈΡˆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π°ΠΌΠ° ΠΈ Π·Π°ΡˆΡ‚ΠΎ су ΠΎΠ½Π΅ Π½Π°ΠΏΡ€Π°Π²Ρ™Π΅Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ Ρƒ Π‘Π»ΠΎΠ³ Π›Π°Π½Π³Π΄ΠΎΠ½Π° Π’Π°Ρ˜Ρ‚Π° (Π›Π°Π½Π³Π΄ΠΎΠ½ Π’Π°Ρ˜Ρ‚).

Π”Π°ΠΊΠ»Π΅, Π΄Π° Π±ΠΈ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΏΠΎΡ‡Π΅ΠΎ Π΄Π° Ρ€Π°Π΄ΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° инсталиратС само Π΄Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, са ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½ΠΈΠΌ ΠΏΠΈΡ‚Ρ…ΠΎΠ½3-ΠΏΠΈΠΏ ΠΊΠ°ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡˆΡ›Ρƒ.

sudo yum install python36 python3-virtualenv

Π—Π°ΡˆΡ‚ΠΎ Π½Π΅ користитС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π΅ ΠΏΠΎΠ·ΠΈΠ²Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ Π›Π°Π½Π³Π΄ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°ΠΆΠ΅ ΠΈ инсталиратС ΠΏΠΈΠΏ3? Π˜ΠΌΠ°Ρ˜ΡƒΡ›ΠΈ Ρƒ Π²ΠΈΠ΄Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚ΠΎΡ˜Π΅Ρ›Ρƒ Π°ΡƒΡ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ, ΠΏΠΎΠ·Π½Π°Ρ‚ΠΎ јС Π΄Π° Ρ›Π΅ АнсиблС Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ‚ΠΈ инсталиран ΠΏΠΈΠΏ Π·Π° ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅, ΠΏΠΎΡˆΡ‚ΠΎ ΠΏΠΈΠΏ ΠΌΠΎΠ΄ΡƒΠ» Π½Π΅ ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° виртуалСнвс са ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π΅Π½ΠΈΠΌ ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈΠΌ ΠΏΠΈΠΏ-ΠΎΠΌ.

Π‘Π° исправним ΠΏΠΈΡ‚Ρ…ΠΎΠ½3 ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ који Π²Π°ΠΌ јС Π½Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡšΡƒ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ наставити са процСсом ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π΅ Π”Ρ˜Π°Π½Π³Π° ΠΈ ΠΈΠΌΠ°Ρ‚ΠΈ Ρ€Π°Π΄Π½ΠΈ систСм зајСдно са нашим осталим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠ°. ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ†ΠΈΡ˜Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ којС су доступнС Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ. ОвдС јС прСдстављСна јСдна Π²Π΅Ρ€Π·ΠΈΡ˜Π°, Π°Π»ΠΈ корисници ΠΌΠΎΠ³Ρƒ Π΄Π° користС сопствСнС процСсС.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ›Π΅ΠΌΠΎ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› ΠΈ Нгинк Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ доступнС Ρƒ Π Π₯Π•Π› 8 ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ користСћи Π˜ΡƒΠΌ.

sudo yum install nginx postgresql-server

ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› Ρ›Π΅ Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ‚ΠΈ псицопг2, Π°Π»ΠΈ ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ доступан само Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ, Ρ‚Π°ΠΊΠΎ Π΄Π° Ρ›Π΅ΠΌΠΎ Π³Π° инсталирати користСћи ΠΏΠΈΠΏ3 зајСдно са Π”Ρ˜Π°Π½Π³ΠΎΠΌ ΠΈ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½-ΠΎΠΌ. Али ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° подСсимо Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½Π².

Π£Π²Π΅ΠΊ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π΅Π±Π°Ρ‚Π° Π½Π° Ρ‚Π΅ΠΌΡƒ ΠΈΠ·Π±ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΎΠ³ мСста Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Ρƒ Π”Ρ˜Π°Π½Π³ΠΎ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚Π°, Π°Π»ΠΈ ΠΊΠ°Π΄Π° стС Ρƒ Π½Π΅Π΄ΠΎΡƒΠΌΠΈΡ†ΠΈ, ΡƒΠ²Π΅ΠΊ сС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΠΈ Π›ΠΈΠ½ΡƒΠΊ стандарду Ρ…ΠΈΡ˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ˜Π΅ систСма Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, Π€Π₯Π‘ ΠΊΠ°ΠΆΠ΅ Π΄Π° сС /срв користи Π·Π°: β€žΡ‡ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° спСцифичних Π·Π° хост – ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° којС систСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π²Π΅Π± сСрвСра ΠΈ скриптС, ΠΏΠΎΠ΄Π°Ρ†ΠΈ који сС Ρ‡ΡƒΠ²Π°Ρ˜Ρƒ Π½Π° ЀВП сСрвСрима ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ систСма (који сС ΠΏΠΎΡ˜Π°Π²Ρ™ΡƒΡ˜Ρƒ Ρƒ Π€Π₯Π‘-Ρƒ). -2.3 Ρƒ 2004).β€œ

Ово јС ΡƒΠΏΡ€Π°Π²ΠΎ наш ΡΠ»ΡƒΡ‡Π°Ρ˜, Ρ‚Π°ΠΊΠΎ Π΄Π° смо свС ΡˆΡ‚ΠΎ Π½Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° ставили Ρƒ /срв, који јС Ρƒ Π²Π»Π°ΡΠ½ΠΈΡˆΡ‚Π²Ρƒ корисника нашС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ (Ρ†Π»ΠΎΡƒΠ΄-усСр).

sudo mkdir /srv/djangoapp
sudo chown cloud-user:cloud-user /srv/djangoapp
cd /srv/djangoapp
virtualenv django
source django/bin/activate
pip3 install django gunicorn psycopg2
./django-admin startproject djangoapp /srv/djangoapp

ПодСшавањС ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ›-Π° ΠΈ Π”Ρ˜Π°Π½Π³ΠΎ-Π° јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ: ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ корисника, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠΈΡ‚Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅. ЈСдна ствар ΠΊΠΎΡ˜Ρƒ Ρ‚Ρ€Π΅Π±Π° ΠΈΠΌΠ°Ρ‚ΠΈ Π½Π° ΡƒΠΌΡƒ ΠΊΠ°Π΄Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΎ инсталиратС ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› јС скрипта постгрСскл-сСтуп која сС инсталира са ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ постгрСскл-сСрвСр. Ова скрипта Π²Π°ΠΌ ΠΏΠΎΠΌΠ°ΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ основнС Π·Π°Π΄Π°Ρ‚ΠΊΠ΅ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ са Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜ΠΎΠΌ кластСра Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° кластСра ΠΈΠ»ΠΈ процСс Π½Π°Π΄ΠΎΠ³Ρ€Π°Π΄ΡšΠ΅. Π”Π° бисмо конфигурисали Π½ΠΎΠ²Ρƒ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› инстанцу Π½Π° Π Π₯Π•Π› систСму, ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ Π½Π°Ρ€Π΅Π΄Π±Ρƒ:

sudo /usr/bin/postgresql-setup -initdb

Π—Π°Ρ‚ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› користСћи систСмд, ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ Π±Π°Π·Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ подСсити ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρƒ Π”Ρ˜Π°Π½Π³Ρƒ. НС Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ унСсСтС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½ΠΈ Ρ„Π°Ρ˜Π» Π·Π° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚Π° (ΠΎΠ±ΠΈΡ‡Π½ΠΎ ΠΏΠ³_Ρ…Π±Π°.Ρ†ΠΎΠ½Ρ„) Π΄Π° бистС конфигурисали ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π»ΠΎΠ·ΠΈΠ½ΠΊΠ΅ Π·Π° корисника Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. Ако Π½Π°ΠΈΡ’Π΅Ρ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³Π΅ ΠΏΠΎΡ‚Π΅ΡˆΠΊΠΎΡ›Π΅, ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ИПв4 ΠΈ ИПв6 подСшавања Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ ΠΏΠ³_Ρ…Π±Π°.Ρ†ΠΎΠ½Ρ„.

systemctl enable -now postgresql

sudo -u postgres psql
postgres=# create database djangoapp;
postgres=# create user djangouser with password 'qwer4321';
postgres=# alter role djangouser set client_encoding to 'utf8';
postgres=# alter role djangouser set default_transaction_isolation to 'read committed';
postgres=# alter role djangouser set timezone to 'utc';
postgres=# grant all on DATABASE djangoapp to djangouser;
postgres=# q

Π£ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ /Π²Π°Ρ€/Π»ΠΈΠ±/пгскл/Π΄Π°Ρ‚Π°/ΠΏΠ³_Ρ…Π±Π°.Ρ†ΠΎΠ½Ρ„:

# IPv4 local connections:
host    all        all 0.0.0.0/0                md5
# IPv6 local connections:
host    all        all ::1/128                 md5

Π£ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ /срв/дјангоапп/сСттингс.ΠΏΠΈ:

# Database
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql_psycopg2',
       'NAME': '{{ db_name }}',
       'USER': '{{ db_user }}',
       'PASSWORD': '{{ db_password }}',
       'HOST': '{{ db_host }}',
   }
}

Након ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡΠ°ΡšΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ сСттингс.ΠΏΠΈ Ρƒ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ ΠΈ подСшавања ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π΅ Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ сСрвСр Π΄Π° бистС Π±ΠΈΠ»ΠΈ сигурни Π΄Π° свС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅. Након ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ° Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠ³ сСрвСра, Π΄ΠΎΠ±Ρ€Π° јС идСја Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ администраторског корисника ΠΊΠ°ΠΊΠΎ бистС тСстирали Π²Π΅Π·Ρƒ са Π±Π°Π·ΠΎΠΌ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

./manage.py runserver 0.0.0.0:8000
./manage.py createsuperuser

Π’Π‘Π“Π˜? Π’Π°ΠΈ?

Развојни сСрвСр јС користан Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅, Π°Π»ΠΈ Π΄Π° бистС ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠ»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΈ сСрвСр ΠΈ прокси Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ ΠΌΡ€Π΅ΠΆΠ½ΠΎΠ³ ΠΏΡ€ΠΎΠ»Π°Π·Π° Π²Π΅Π± сСрвСра (Π’Π‘Π“Π˜). ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡƒΠΎΠ±ΠΈΡ‡Π°Ρ˜Π΅Π½ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, АпацхС Π₯Π’Π’ΠŸΠ” са ΡƒΠ’Π‘Π“Π˜ ΠΈΠ»ΠΈ Нгинк са Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½.

Посао ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠ° ΠΌΡ€Π΅ΠΆΠ½ΠΎΠ³ ΠΏΡ€ΠΎΠ»Π°Π·Π° Π²Π΅Π± сСрвСра јС Π΄Π° прослСди Π·Π°Ρ…Ρ‚Π΅Π²Π΅ са Π²Π΅Π± сСрвСра Π½Π° ΠŸΠΈΡ‚Ρ…ΠΎΠ½ Π²Π΅Π± ΠΎΠΊΠ²ΠΈΡ€. Π’Π‘Π“Π˜ јС Ρ€Π΅Π»ΠΈΠΊΡ‚ уТаснС ΠΏΡ€ΠΎΡˆΠ»ΠΎΡΡ‚ΠΈ ΠΊΠ°Π΄Π° су Π¦Π“Π˜ ΠΌΠΎΡ‚ΠΎΡ€ΠΈ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π»ΠΈ, Π° данас јС Π’Π‘Π“Π˜ Π΄Π΅ Ρ„Π°Ρ†Ρ‚ΠΎ стандард, Π±Π΅Π· ΠΎΠ±Π·ΠΈΡ€Π° Π½Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅Π½ΠΈ Π²Π΅Π± сСрвСр ΠΈΠ»ΠΈ ΠŸΠΈΡ‚Ρ…ΠΎΠ½ Ρ„Ρ€Π°ΠΌΠ΅Π²ΠΎΡ€ΠΊ. Али упркос ΡˆΠΈΡ€ΠΎΠΊΠΎΡ˜ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ, још ΡƒΠ²Π΅ΠΊ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ нијанси ΠΊΠ°Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ са ΠΎΠ²ΠΈΠΌ ΠΎΠΊΠ²ΠΈΡ€ΠΈΠΌΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π±ΠΎΡ€Π°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, ΠΏΠΎΠΊΡƒΡˆΠ°Ρ›Π΅ΠΌΠΎ Π΄Π° успоставимо ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Ρƒ ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½-Π° ΠΈ Нгинк-Π° ΠΏΡ€Π΅ΠΊΠΎ соцкСта.

ΠŸΠΎΡˆΡ‚ΠΎ су ΠΎΠ±Π΅ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ инсталиранС Π½Π° истом сСрвСру, ΠΏΠΎΠΊΡƒΡˆΠ°Ρ˜ΠΌΠΎ Π΄Π° користимо УНИКБ ΡƒΡ‚ΠΈΡ‡Π½ΠΈΡ†Ρƒ умСсто ΠΌΡ€Π΅ΠΆΠ½Π΅ ΡƒΡ‚ΠΈΡ‡Π½ΠΈΡ†Π΅. ΠŸΠΎΡˆΡ‚ΠΎ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Ρƒ сваком ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ Π·Π°Ρ…Ρ‚Π΅Π²Π° сокСт, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° ΠΏΠΎΠΊΡƒΡˆΠ°ΠΌΠΎ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ још јСдан ΠΊΠΎΡ€Π°ΠΊ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅ΠΌΠΎ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ˜Ρƒ ΡƒΡ‚ΠΈΡ‡Π½ΠΈΡ†Π΅ Π·Π° Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ ΠΏΡ€Π΅ΠΊΠΎ систСмд-Π°.

ΠŸΡ€ΠΎΡ†Π΅Ρ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ° услуга Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈΡ… сокСтом јС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π°Π½. ΠŸΡ€Π²ΠΎ сС ΠΊΡ€Π΅ΠΈΡ€Π° Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° која садрТи Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ ЛистСнБтрСам која ΡƒΠΊΠ°Π·ΡƒΡ˜Π΅ Π½Π° Ρ‚Π°Ρ‡ΠΊΡƒ Ρƒ којој Ρ›Π΅ сС ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ УНИКБ сокСт, Π·Π°Ρ‚ΠΈΠΌ Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° услугу Ρƒ којој Ρ›Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° РСкуирСс ΡƒΠΊΠ°Π·ΠΈΠ²Π°Ρ‚ΠΈ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ ΡƒΡ‚ΠΈΡ‡Π½ΠΈΡ†Π΅. Π—Π°Ρ‚ΠΈΠΌ, Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ сСрвиснС Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, ΠΎΡΡ‚Π°Ρ˜Π΅ само Π΄Π° ΠΏΠΎΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ ΠΈΠ· Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΎΠ³ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π’Π‘Π“Π˜ Π²Π΅Π·Ρƒ Π·Π° УНИКБ сокСт ΠΈ Π”Ρ˜Π°Π½Π³ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ.

Π•Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° којС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити ΠΊΠ°ΠΎ основу. ΠŸΡ€Π²ΠΎ смо поставили ΡƒΡ‚ΠΈΡ‡Π½ΠΈΡ†Ρƒ.

[Unit]
Description=Gunicorn WSGI socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Π‘Π°Π΄Π° ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅Ρ‚Π΅ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ Π΄Π΅ΠΌΠΎΠ½Π°.

[Unit]
Description=Gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=cloud-user
Group=cloud-user
WorkingDirectory=/srv/djangoapp

ExecStart=/srv/djangoapp/django/bin/gunicorn 
         β€”access-logfile - 
         β€”workers 3 
         β€”bind unix:gunicorn.sock djangoapp.wsgi

[Install]
WantedBy=multi-user.target

Π—Π° Нгинк јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ€ΠΎΠΊΡΠΈΡ˜Π° ΠΈ подСшавањС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌΠ° Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ статичког ΡΠ°Π΄Ρ€ΠΆΠ°Ρ˜Π° Π°ΠΊΠΎ Π³Π° користитС. Π£ Π Π₯Π•Π›-Ρƒ, Нгинк ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ сС Π½Π°Π»Π°Π·Π΅ Ρƒ /Π΅Ρ‚Ρ†/Π½Π³ΠΈΠ½ΠΊ/Ρ†ΠΎΠ½Ρ„.Π΄. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ΠΈ слСдСћи ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ /Π΅Ρ‚Ρ†/Π½Π³ΠΈΠ½ΠΊ/Ρ†ΠΎΠ½Ρ„.Π΄/Π΄Π΅Ρ„Π°ΡƒΠ»Ρ‚.Ρ†ΠΎΠ½Ρ„ ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ услугу. ОбавСзно подСситС сСрвСр_Π½Π°ΠΌΠ΅ Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° вашСм ΠΈΠΌΠ΅Π½Ρƒ хоста.

server {
   listen 80;
   server_name 8beta1.example.com;

   location = /favicon.ico { access_log off; log_not_found off; }
   location /static/ {
       root /srv/djangoapp;
   }

   location / {
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_pass http://unix:/run/gunicorn.sock;
   }
}

ΠŸΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ соцкСт ΠΈ Нгинк користСћи систСмд ΠΈ спрСмни стС Π·Π° ΠΏΠΎΡ‡Π΅Ρ‚Π°ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ°.

Π“Ρ€Π΅ΡˆΠΊΠ° лошСг ΠΌΡ€Π΅ΠΆΠ½ΠΎΠ³ ΠΏΡ€ΠΎΠ»Π°Π·Π°?

Ако унСсСтС адрСсу Ρƒ свој ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡, Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΈΡ˜Π΅ Ρ›Π΅Ρ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ Π³Ρ€Π΅ΡˆΠΊΡƒ 502 Π‘Π°Π΄ Π“Π°Ρ‚Π΅Π²Π°ΠΈ. Π’ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ ΡƒΠ·Ρ€ΠΎΠΊΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎ конфигурисаним Π΄ΠΎΠ·Π²ΠΎΠ»Π°ΠΌΠ° УНИКБ сокСта, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡ‚ΠΈ Π·Π±ΠΎΠ³ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ˜ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Π΅Π·Π°Π½ΠΈΡ… Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρƒ приступа Ρƒ Π‘Π•Π›ΠΈΠ½ΡƒΠΊ-Ρƒ.

Π£ Π½Π³ΠΈΠ½ΠΊ Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜ΠΈ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ ΠΎΠ²Ρƒ Π»ΠΈΠ½ΠΈΡ˜Ρƒ:

2018/12/18 15:38:03 [crit] 12734#0: *3 connect() to unix:/run/gunicorn.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.122.1, server: 8beta1.example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/", host: "8beta1.example.com"

Ако Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ тСстирамо Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½, Π΄ΠΎΠ±ΠΈΡ›Π΅ΠΌΠΎ ΠΏΡ€Π°Π·Π°Π½ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€.

curl β€”unix-socket /run/gunicorn.sock 8beta1.example.com

Π₯ајдС Π΄Π° схватимо Π·Π°ΡˆΡ‚ΠΎ сС Ρ‚ΠΎ дСшава. Ако ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π΄Π½Π΅Π²Π½ΠΈΠΊ, Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΈΡ˜Π΅ Ρ›Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π΄Π° јС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ²Π΅Π·Π°Π½ са Π‘Π•Π›ΠΈΠ½ΡƒΠΊ-ΠΎΠΌ. ΠŸΠΎΡˆΡ‚ΠΎ ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ΠΌΠΎ Π΄Π΅ΠΌΠΎΠ½ Π·Π° који нијС ΠΊΡ€Π΅ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, ΠΎΠ½ јС ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°ΠΎ ΠΈΠ½ΠΈΡ‚_Ρ‚. Π₯ајдС Π΄Π° тСстирамо ΠΎΠ²Ρƒ Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Ρƒ Ρƒ пракси.

sudo setenforce 0

Π‘Π²Π΅ ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π°Π·Π²Π°Ρ‚ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ΅ ΠΈ ΠΊΡ€Π²Π½Π΅ сузС, Π°Π»ΠΈ ΠΎΠ²ΠΎ јС само ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°. Π₯ајдС Π΄Π° ΠΎΠ½Π΅ΠΌΠΎΠ³ΡƒΡ›ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Ρƒ само Π΄Π° бисмо сС ΡƒΠ²Π΅Ρ€ΠΈΠ»ΠΈ Π΄Π° јС Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΊΠΎΠ½ Ρ‡Π΅Π³Π° Ρ›Π΅ΠΌΠΎ свС Π²Ρ€Π°Ρ‚ΠΈΡ‚ΠΈ Π½Π° својС мСсто.

ОсвСТавањСм страницС Ρƒ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎΠ½ΠΎΠ²Π½ΠΈΠΌ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ΠΌ нашС ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ†ΡƒΡ€Π», ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π”Ρ˜Π°Π½Π³ΠΎ тСст страницу.

Π”Π°ΠΊΠ»Π΅, Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ смо сС ΡƒΠ²Π΅Ρ€ΠΈΠ»ΠΈ Π΄Π° свС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅ ΠΈ Π΄Π° вишС Π½Π΅ΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° са Π΄ΠΎΠ·Π²ΠΎΠ»Π°ΠΌΠ°, ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°ΠΌΠΎ Π‘Π•Π›ΠΈΠ½ΡƒΠΊ.

sudo setenforce 1

НСћу ΠΎΠ²Π΄Π΅ Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π°ΡƒΠ΄ΠΈΡ‚2Π°Π»Π»ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΡƒ смСрница заснованих Π½Π° ΡƒΠΏΠΎΠ·ΠΎΡ€Π΅ΡšΠΈΠΌΠ° са сСполгСном, ΠΏΠΎΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ стварна Π”Ρ˜Π°Π½Π³ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, Ρ‚Π°ΠΊΠΎ Π΄Π° Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΏΠΎΡ‚ΠΏΡƒΠ½Π° ΠΌΠ°ΠΏΠ° Ρ‡Π΅ΠΌΡƒ Π±ΠΈ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ ΠΌΠΎΠ³Π°ΠΎ Π΄Π° приступи ΠΈ Ρ‡Π΅ΠΌΡƒ Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° Π·Π°Π±Ρ€Π°Π½ΠΈ приступ. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° јС Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π΄Π° сС Π‘Π•Π›ΠΈΠ½ΡƒΠΊ настави Π΄Π° Ρ€Π°Π΄ΠΈ Π΄Π° Π±ΠΈ сС систСм Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΈΠΎ, Π΄ΠΎΠΊ истоврСмСно Π΄ΠΎΠ·Π²ΠΎΡ™Π°Π²Π°Ρ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ Π΄Π° сС ΠΏΠΎΠΊΡ€Π΅Π½Π΅ ΠΈ оставља ΠΏΠΎΡ€ΡƒΠΊΠ΅ Ρƒ Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜ΠΈ Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π΅ Ρ‚Π°ΠΊΠΎ Π΄Π° сС стварна ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ ΠΎΠ΄ ΡšΠΈΡ….

ΠžΠ΄Ρ€Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ Π΄ΠΎΠ·Π²ΠΎΡ™Π΅Π½ΠΈΡ… Π΄ΠΎΠΌΠ΅Π½Π°

Нису сви Ρ‡ΡƒΠ»ΠΈ Π·Π° Π΄ΠΎΠ·Π²ΠΎΡ™Π΅Π½Π΅ Π΄ΠΎΠΌΠ΅Π½Π΅ Ρƒ Π‘Π•Π›ΠΈΠ½ΡƒΠΊΡƒ, Π°Π»ΠΈ ΠΎΠ½ΠΈ нису Π½ΠΈΡˆΡ‚Π° Π½ΠΎΠ²ΠΎ. Многи су Ρ‡Π°ΠΊ ΠΈ Ρ€Π°Π΄ΠΈΠ»ΠΈ са њима Π° Π΄Π° Ρ‚ΠΎΠ³Π° нису Π½ΠΈ свСсни. Када сС ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΡ€Π΅ΠΈΡ€Π° Π½Π° основу ΠΏΠΎΡ€ΡƒΠΊΠ° Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π΅, ΠΊΡ€Π΅ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° прСдставља Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π΄ΠΎΠΌΠ΅Π½. Π₯ајдС Π΄Π° ΠΏΠΎΠΊΡƒΡˆΠ°ΠΌΠΎ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Ρƒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ издавања Π΄ΠΎΠ·Π²ΠΎΠ»Π°.

Π”Π° бистС ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈ Π΄ΠΎΠ·Π²ΠΎΡ™Π΅Π½ΠΈ Π΄ΠΎΠΌΠ΅Π½ Π·Π° Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π²Π°ΠΌ јС Π½Π΅ΠΊΠ° врста ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅, Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС ΠΈ Π΄Π° ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. ΠŸΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ³Π°, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ су Π°Π»Π°Ρ‚ΠΈ Π·Π° ΡΠ°ΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅ Π½ΠΎΠ²ΠΈΡ… ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°.

sudo yum install selinux-policy-devel

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π΄ΠΎΠ·Π²ΠΎΡ™Π΅Π½ΠΈΡ… Π΄ΠΎΠΌΠ΅Π½Π° јС ΠΎΠ΄Π»ΠΈΡ‡Π°Π½ Π°Π»Π°Ρ‚ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, посСбно ΠΊΠ°Π΄Π° јС Ρƒ ΠΏΠΈΡ‚Π°ΡšΡƒ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π΅Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΈΠ»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ којС сС ΠΈΡΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Ρƒ Π±Π΅Π· Π²Π΅Ρ› ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈΡ… ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ, Π΄ΠΎΠ·Π²ΠΎΡ™Π΅Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π΄ΠΎΠΌΠ΅Π½Π° Π·Π° Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΡˆΡ‚ΠΎ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΈΡ˜Π° - прогласитС Π³Π»Π°Π²Π½ΠΈ Ρ‚ΠΈΠΏ (Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½_Ρ‚), прогласитС Ρ‚ΠΈΠΏ који Ρ›Π΅ΠΌΠΎ користити Π΄Π° ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌΠΎ вишС ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° (Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½_Π΅ΠΊΠ΅Ρ†_Ρ‚), Π° Π·Π°Ρ‚ΠΈΠΌ подСситС ΠΏΡ€Π΅Π»Π°Π· Π΄Π° систСм исправно ΠΎΠ·Π½Π°Ρ‡ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ процСси. ПослСдњи Ρ€Π΅Π΄ поставља ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΊΠ°ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ ΠΎΠΌΠΎΠ³ΡƒΡ›Π΅Π½Ρƒ Ρƒ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ ΠΊΠ°Π΄Π° сС ΡƒΡ‡ΠΈΡ‚Π°.

Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½.Ρ‚Π΅:

policy_module(gunicorn, 1.0)

type gunicorn_t;
type gunicorn_exec_t;
init_daemon_domain(gunicorn_t, gunicorn_exec_t)
permissive gunicorn_t;

ΠœΠΎΠΆΠ΅Ρ‚Π΅ саставити ΠΎΠ²Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ ΠΈ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ јС свом систСму.

make -f /usr/share/selinux/devel/Makefile
sudo semodule -i gunicorn.pp

sudo semanage permissive -a gunicorn_t
sudo semodule -l | grep permissive

Π₯ајдС Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠΎ Π΄Π° Π»ΠΈ Π‘Π•Π›ΠΈΠ½ΡƒΠΊ Π±Π»ΠΎΠΊΠΈΡ€Π° Π½Π΅ΡˆΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ осим ΠΎΠ½ΠΎΠΌΠ΅ Ρ‡Π΅ΠΌΡƒ приступа наш Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ Π΄Π΅ΠΌΠΎΠ½.

sudo ausearch -m AVC

type=AVC msg=audit(1545315977.237:1273): avc:  denied { write } for pid=19400 comm="nginx" name="gunicorn.sock" dev="tmpfs" ino=52977 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:var_run_t:s0 tclass=sock_file permissive=0

Π‘Π•Π›ΠΈΠ½ΡƒΠΊ спрСчава Нгинк Π΄Π° ΡƒΠΏΠΈΡΡƒΡ˜Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ Ρƒ УНИКБ сокСт који користи Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½. ΠžΠ±ΠΈΡ‡Π½ΠΎ Ρƒ Ρ‚Π°ΠΊΠ²ΠΈΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΡ‡ΠΈΡšΡƒ Π΄Π° сС ΠΌΠ΅ΡšΠ°Ρ˜Ρƒ, Π°Π»ΠΈ ΠΏΡ€Π΅Π΄ Π½Π°ΠΌΠ° су Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠ·Π°Π·ΠΎΠ²ΠΈ. Π’Π°ΠΊΠΎΡ’Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ подСшавања Π΄ΠΎΠΌΠ΅Π½Π° са Π΄ΠΎΠΌΠ΅Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ° Π½Π° Π΄ΠΎΠΌΠ΅Π½ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅. Π‘Π°Π΄Π° прСмСстимо Ρ…Ρ‚Ρ‚ΠΏΠ΄_Ρ‚ Π½Π° Π΄ΠΎΠΌΠ΅Π½ Π΄ΠΎΠ·Π²ΠΎΠ»Π°. Ово Ρ›Π΅ Π΄Π°Ρ‚ΠΈ Нгинк-Ρƒ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π°Π½ приступ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ наставити са Π΄Π°Ρ™ΠΈΠΌ Ρ€Π°Π΄ΠΎΠΌ Π½Π° ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΡƒ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ°.

sudo semanage permissive -a httpd_t

Π”Π°ΠΊΠ»Π΅, ΠΊΠ°Π΄Π° стС успСли Π΄Π° сачуватС Π‘Π•Π›ΠΈΠ½ΡƒΠΊ Π·Π°ΡˆΡ‚ΠΈΡ›Π΅Π½ (заиста Π½Π΅ Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° остављатС Π‘Π•Π›ΠΈΠ½ΡƒΠΊ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΡƒ) ΠΈ ΠΊΠ°Π΄Π° сС Π΄ΠΎΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π° ΡƒΡ‡ΠΈΡ‚Π°Ρ˜Ρƒ, ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° схватитС ΡˆΡ‚Π° Ρ‚Π°Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΡƒΠ΄Π΅ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΎ ΠΊΠ°ΠΎ Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½_Π΅ΠΊΠ΅Ρ†_Ρ‚ Π΄Π° Π±ΠΈ свС функционисало ΠΊΠ°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° ΠΎΠΏΠ΅Ρ‚. ΠŸΠΎΠΊΡƒΡˆΠ°Ρ˜ΠΌΠΎ Π΄Π° посСтимо Π²Π΅Π± Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π΄Π° бисмо Π²ΠΈΠ΄Π΅Π»ΠΈ Π½ΠΎΠ²Π΅ ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠΈΠΌΠ° приступа.

sudo ausearch -m AVC -c gunicorn

Π’ΠΈΠ΄Π΅Ρ›Π΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΡƒΠΊΠ° којС садрТС 'Ρ†ΠΎΠΌΠΌ="Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½"' којС Ρ€Π°Π΄Π΅ Ρ€Π°Π·Π½Π΅ ствари Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°ΠΌΠ° Ρƒ /срв/дјангоапп, Ρ‚Π°ΠΊΠΎ Π΄Π° јС ΠΎΠ²ΠΎ ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ јСдна ΠΎΠ΄ Π½Π°Ρ€Π΅Π΄Π±ΠΈ којС Π²Ρ€Π΅Π΄ΠΈ ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΠΈ.

Али ΠΏΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ³Π°, ΠΏΠΎΡ˜Π°Π²Ρ™ΡƒΡ˜Π΅ сС ΠΏΠΎΡ€ΡƒΠΊΠ° ΠΏΠΎΠΏΡƒΡ‚ ΠΎΠ²Π΅:

type=AVC msg=audit(1545320700.070:1542): avc:  denied { execute } for pid=20704 comm="(gunicorn)" name="python3.6" dev="vda3" ino=8515706 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file permissive=0

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚Π΅ статус услугС Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ пс, Π½Π΅Ρ›Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚Π΅ процСсС. ИзглСда Π΄Π° Π³ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ ΠΏΠΎΠΊΡƒΡˆΠ°Π²Π° Π΄Π° приступи ΠŸΠΈΡ‚Ρ…ΠΎΠ½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π΅Ρ€Ρƒ Ρƒ нашСм Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ, Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΎ Π΄Π° Π±ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠΎ Ρ€Π°Π΄Π½Π΅ скриптС. Π”Π°ΠΊΠ»Π΅, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° сада ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌΠΎ ΠΎΠ²Π΅ Π΄Π²Π΅ ΠΈΠ·Π²Ρ€ΡˆΠ½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠΎ Π΄Π° Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌΠΎ Π½Π°ΡˆΡƒ Π”Ρ˜Π°Π½Π³ΠΎ тСст страницу.

chcon -t gunicorn_exec_t /srv/djangoapp/django/bin/gunicorn /srv/djangoapp/django/bin/python3.6

Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ услугу Ρ›Π΅ ΠΌΠΎΡ€Π°Ρ‚ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ ΠΏΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ сС ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π°Π±Ρ€Π°Ρ‚ΠΈ Π½ΠΎΠ²Π° ΠΎΠ·Π½Π°ΠΊΠ°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π³Π° ΠΎΠ΄ΠΌΠ°Ρ… ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ ΠΈΠ»ΠΈ зауставити услугу ΠΈ пустити сокСту Π΄Π° Π³Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ ΠΊΠ°Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Ρƒ ΠΏΡ€Π΅Ρ‚Ρ€Π°ΠΆΠΈΠ²Π°Ρ‡Ρƒ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π° Π»ΠΈ су процСси ΠΏΡ€ΠΈΠΌΠΈΠ»ΠΈ исправнС ΠΎΠ·Π½Π°ΠΊΠ΅ ΠΏΠΎΠΌΠΎΡ›Ρƒ пс.

ps -efZ | grep gunicorn

НС Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° каснијС ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΡ€ΠΌΠ°Π»Π½Ρƒ Π‘Π•Π›ΠΈΠ½ΡƒΠΊ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ!

Ако сада ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ‚Π΅ АВЦ ΠΏΠΎΡ€ΡƒΠΊΠ΅, послСдња ΠΏΠΎΡ€ΡƒΠΊΠ° садрТи пСрмиссивС=1 Π·Π° свС ΡˆΡ‚ΠΎ сС односи Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΈ пСрмиссивС=0 Π·Π° остатак систСма. Ако Ρ€Π°Π·ΡƒΠΌΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ°Π² приступ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Π½ ΡΡ‚Π²Π°Ρ€Π½ΠΎΡ˜ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ€Π·ΠΎ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Π½Π°Ρ˜Π±ΠΎΡ™ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠ²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅. Али Π΄ΠΎ Ρ‚Π°Π΄Π°, Π½Π°Ρ˜Π±ΠΎΡ™Π΅ јС Π΄Π° систСм Π±ΡƒΠ΄Π΅ сигуран ΠΈ Π΄Π° Π΄ΠΎΠ±ΠΈΡ˜Π΅Ρ‚Π΅ Ρ˜Π°ΡΠ½Ρƒ, ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Ρ™ΠΈΠ²Ρƒ Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Ρƒ Π”Ρ˜Π°Π½Π³ΠΎ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π°.

sudo ausearch -m AVC

ДСсило!

Појавио сС Ρ€Π°Π΄Π½ΠΈ Π”Ρ˜Π°Π½Π³ΠΎ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ са Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠΌ заснованим Π½Π° Нгинк-Ρƒ ΠΈ Π“ΡƒΠ½ΠΈΡ†ΠΎΡ€Π½ Π’Π‘Π“Π˜. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡΠ°Π»ΠΈ смо ΠŸΠΈΡ‚Ρ…ΠΎΠ½ 3 ΠΈ ΠŸΠΎΡΡ‚Π³Ρ€Π΅Π‘ΠšΠ› 10 ΠΈΠ· Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π° ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π°. Π‘Π°Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° наставитС Π΄Π°Ρ™Π΅ ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ (ΠΈΠ»ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅) Π”Ρ˜Π°Π½Π³ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΈΠ»ΠΈ истраТитС Π΄Ρ€ΡƒΠ³Π΅ доступнС Π°Π»Π°Ρ‚Π΅ Ρƒ Π Π₯Π•Π› 8 Π‘Π΅Ρ‚Π° Π΄Π° бистС Π°ΡƒΡ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ процСс ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π΅, ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°Π»ΠΈ пСрформансС ΠΈΠ»ΠΈ Ρ‡Π°ΠΊ спрСмили Ρ‚Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Ρƒ.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€