НиС Π³ΠΎ составувамС Π½Π°ΡˆΠΈΠΎΡ‚ Nginx со Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

Π—Π΄Ρ€Π°Π²ΠΎ!
ΠœΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ΅ Π΅ Π‘Π΅Ρ€Π³Π΅Ρ˜, Ρ€Π°Π±ΠΎΡ‚Π°ΠΌ ΠΊΠ°ΠΊΠΎ инфраструктурСн ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π²ΠΎ Ρ‚ΠΈΠΌΠΎΡ‚ API Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° tinkoff.ru.

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ со ΠΊΠΎΠΈ сС соочи Π½Π°ΡˆΠΈΠΎΡ‚ Ρ‚ΠΈΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° балансСри Π²Ρ€Π· основа Π½Π° Nginx Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ЌС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΈ Π·Π° Π°Π»Π°Ρ‚ΠΊΠ° која ΠΌΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° Π³ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π°ΠΌ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΎΠ΄ Π½ΠΈΠ².

Nginx Π΅ ΠΌΡƒΠ»Ρ‚ΠΈΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΊΠΈ прокси-сСрвСр. Π‘Π΅ ΠΎΠ΄Π»ΠΈΠΊΡƒΠ²Π° со Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΎΠ²Π° Π½Π΅ Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π½Π° листа. БСкој ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Π±Π°Ρ€Π°ΡšΠ° Π·Π° функционалноста Π½Π° балансСрот ΠΈ Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π½Π° Nginx (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, присуството Π½Π° http/2 ΠΈ grpc прокси) ΠΈ составот Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π‘ΠΈ сакалС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π½ΠΎΠ²Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° со ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΎΡ‚ сСт Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ ΠΏΠΎΠ΄ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½Π° Linux. Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΎΠ²Π° сС систСми Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° deb ΠΈ Π²Ρ€Ρ‚Π΅ΠΆΠΈ Π²ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π°. ΠžΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° со ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π½Π΅ сС Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π° Π²ΠΎ овој напис.

Π‘Π°ΠΊΠ°ΠΌΠ΅ Π±Ρ€Π·ΠΎ Π΄Π° ја ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌΠ΅ функционалноста Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ балансСри. И Ρ‚ΡƒΠΊΠ° вСднаш сС поставува ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅Ρ‚ΠΎ: ΠΊΠ°ΠΊΠΎ Π΄Π° сС постигнС Ρ‚ΠΎΠ° Π΄ΠΎΠ΄Π΅ΠΊΠ° сС Ρ‚Ρ€ΠΎΡˆΠ°Ρ‚ ΡˆΡ‚ΠΎ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ рСсурси? Π£ΡˆΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° Π³ΠΎ поставимС процСсот Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° поставимС ΠΊΠΎΠ½Π΅Ρ‡Π΅Π½ Π±Ρ€ΠΎΡ˜ Π½Π° Π²Π»Π΅Π·Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, Π° Π½Π° ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ deb/rpm Π·Π° саканиот ОБ.

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π°Ρ‚ Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ:

  • НС сСкогаш ΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ со Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Nginx.
  • НСма ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ со ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.
  • Π‘ΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ Π³Ρ€Π°Π΄Π΅ΡšΠ΅Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ€Π°Ρ‡Π½ΠΎ Π΅ ΠΎΠ΄Π·Π΅ΠΌΠ° Π²Ρ€Π΅ΠΌΠ΅ ΠΈ цСлосно досадно.
  • НСма опис Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΅ склопСн овој ΠΈΠ»ΠΈ оној ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Nginx.

Π—Π° Π΄Π° сС Ρ€Π΅ΡˆΠ°Ρ‚ ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, сС Π½Π°ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π·Π° Π°Π»Π°Ρ‚ΠΊΠ° која Π±ΠΈ Π·Π΅ΠΌΠ°Π»Π° ΠΊΠ°ΠΊΠΎ Π²Π»Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ‡ΠΈΡ‚Π»ΠΈΠ² Π·Π° Π»ΡƒΡ“Π΅ ΠΈ ќС состави Nginx ΠΏΠ°ΠΊΠ΅Ρ‚ со ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°Ρ‚Π° функционалност Π²Ρ€Π· основа Π½Π° Π½Π΅Π³ΠΎ.

НС Π½Π°ΠΎΡ“Π°Ρ˜ΡœΠΈ соодвСтна ΠΎΠΏΡ†ΠΈΡ˜Π° Π·Π° нас Π½Π° пространоста Π½Π° Github, Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° создадСмС сопствСна Π°Π»Π°Ρ‚ΠΊΠ° - nginx-Π³Ρ€Π°Π΄ΠΈΡ‚Π΅Π».

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π’ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ°, сакавмС Π΄Π° создадСмС опис Π½Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° ΠΊΠΎΠ΄, кој ΠΏΠΎΡ‚ΠΎΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС стави Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π° Git. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, Π³ΠΎ ΠΈΠ·Π±Ρ€Π°Π²ΠΌΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ ΠΏΠΎΠ·Π½Π°Ρ‚ Π·Π° Ρ‚Π°ΠΊΠ²ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ - yaml. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°:

nginx_version: 1.14.1
output_package: deb
modules:
  - module:
      name: nginx-auth-ldap
      git_url: https://github.com/kvspb/nginx-auth-ldap.git
      git_branch: master
      dependencies:
        - libldap2-dev
  - module:
      name: ngx_http_substitutions_filter_module
      git_url: https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
  - module:
      name: headers-more-nginx-module
      web_url: https://github.com/openresty/headers-more-nginx-module/archive/v0.261.zip
  - module:
      name: nginx-module-vts
      git_url: https://github.com/vozlt/nginx-module-vts.git
      git_tag: v0.1.18
  - module:
      name: ngx_devel_kit
      git_url: https://github.com/simplresty/ngx_devel_kit.git
      git_tag: v0.3.0
  - module:
      name: ngx_cache_purge
      git_url: https://github.com/FRiCKLE/ngx_cache_purge.git
  - module:
      name: ngx_http_dyups_module
      git_url: https://github.com/yzprofile/ngx_http_dyups_module.git
  - module:
      name: nginx-brotli
      git_url: https://github.com/eustas/ngx_brotli.git
      git_tag: v0.1.2
  - module:
      name: nginx_upstream_check_module
      git_url: https://github.com/yaoweibin/nginx_upstream_check_module.git
  - module:
      name: njs
      git_url: https://github.com/nginx/njs.git
      git_tag: 0.2.5
      config_folder_path: nginx

ОвдС ΡƒΠΊΠ°ΠΆΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° сакамС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ deb ΠΏΠ°ΠΊΠ΅Ρ‚ со Nginx Π²Π΅Ρ€Π·ΠΈΡ˜Π° 1.14.2 со ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΎΡ‚ сСт Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π”Π΅Π»ΠΎΡ‚ со ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½. Π—Π° сСкој ΠΎΠ΄ Π½ΠΈΠ² ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС:

  • ИмС.
  • АдрСса ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја Π½Π°Π±Π°Π²ΠΈΡ‚Π΅:
    • Git ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ исто Ρ‚Π°ΠΊΠ° Π΄Π° Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ Π³Ρ€Π°Π½ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΠ·Π½Π°ΠΊΠ°.
    • Π’Π΅Π±-врска Π·Π° Π°Ρ€Ρ…ΠΈΠ²Π°.
    • Π›ΠΎΠΊΠ°Π»Π΅Π½ Π»ΠΈΠ½ΠΊ Π΄ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚Π°.

НСкои ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π±Π°Ρ€Π°Π°Ρ‚ Π΄Π° сС инсталираат Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ зависности, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, nginx-auth-ldap Π±Π°Ρ€Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° libldap2-dev. МоТС Π΄Π° сС Π½Π°Π²Π΅Π΄Π°Ρ‚ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ зависности ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚.

Π–ΠΈΠ²ΠΎΡ‚Π½Π° срСдина

Π’ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ€Π·ΠΎ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ срСдина со инсталирани Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π°, ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ помошСн софтвСр. Π”ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ со сС ΡˆΡ‚ΠΎ Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ ΠΎΠ²Π΄Π΅ (ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ вСќС ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Docker Π·Π° ubuntu ΠΈ centos).

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС сС ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ ќС сС ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π°, Π³ΠΎ лансирамС Π½Π°ΡˆΠΈΠΎΡ‚ Π³Ρ€Π°Π΄ΠΈΡ‚Π΅Π», ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π³ΠΈ инсталиравмС Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ зависности:

pip3 install -r requirements.txt
./main.py build -f [ΠΊΠΎΠ½Ρ„ΠΈΠ³_Ρ„Π°ΠΉΠ»].yaml -r [Π½ΠΎΠΌΠ΅Ρ€_Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ]

Π‘Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π° ΠΎΠ²Π΄Π΅ Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈ сС користи Π·Π° Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° склопови. Π’ΠΎΠ° Π΅ запишано Π²ΠΎ ΠΌΠ΅Ρ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚, ΡˆΡ‚ΠΎ Π³ΠΎ олСснува Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° сСрвСритС.
Од Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° слСдитС ΡˆΡ‚ΠΎ сС случува. Π•Π²Π΅ Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ:

builder - INFO - Parse yaml file: example.config.yaml
builder - INFO - Download scripts for build deb package
builder - INFO - Downloading nginx src...
builder - INFO - --> http://nginx.org/download/nginx-1.14.1.tar.gz
builder - INFO - Downloading 3d-party modules...
builder - INFO - Module nginx-auth-ldap will download by branch
builder - INFO - -- Done: nginx-auth-ldap
builder - INFO - -- Done: ngx_http_substitutions_filter_module
builder - INFO - Module headers-more-nginx-module will downloading
builder - INFO - Module nginx-module-vts will download by tag
builder - INFO - -- Done: nginx-module-vts
builder - INFO - Module ngx_devel_kit will download by tag
builder - INFO - -- Done: ngx_devel_kit
builder - INFO - -- Done: ngx_cache_purge
builder - INFO - -- Done: ngx_http_dyups_module
builder - INFO - Downloading dependencies
builder - INFO - Building .deb package
builder - INFO - Running 'dh_make'...
builder - INFO - Running 'dpkg-buildpackage'...
dpkg-deb: building package 'nginx' in '../nginx_1.14.1-1_amd64.deb'.

Π’Π°ΠΊΠ°, со само Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ја ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π° ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°Ρ‚Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π½Π° Nginx, Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ сС ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π° Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ ΠΎΠ΄ ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сС стартува скриптата.

Π’Π³Ρ€Π°Π΄ΡƒΠ²Π°ΡšΠ΅

НиС исто Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ја ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ° Π²ΠΎ процСситС Π½Π° CI/CD. БСкој ΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΡƒΡ‚Π΅ CI систСми ΡˆΡ‚ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ дСнСс ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ ΠΎΠ²Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Вимски Π³Ρ€Π°Π΄ ΠΈΠ»ΠΈ Π“ΠΈΡ‚Π»Π°Π± CI.

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, сСкогаш ΠΊΠΎΠ³Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° сС ΠΌΠ΅Π½ΡƒΠ²Π° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Git, ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° Π½Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ‚ автоматски сС стартува. Π‘Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π°Ρ‚Π° Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со Π±Ρ€ΠΎΡ˜Π°Ρ‡ΠΎΡ‚ Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π°.
Π‘ΠΎ ΠΌΠ°Π»ΠΊΡƒ повСќС Π²Ρ€Π΅ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π° сС ΠΈΡΠΏΡ€Π°ΡœΠ° Π΄ΠΎ Π²Π°ΡˆΠ΅Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Nexus, Artifactory ΠΈΡ‚Π½.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° прСдност Π΅ ΡˆΡ‚ΠΎ конфигурациската Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° yaml ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ со Ansible ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ систСм Π·Π° автоматска ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° ΠΈ ΠΎΠ΄ Ρ‚Π°ΠΌΡƒ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π·Π΅ΠΌΠ΅ΠΌΠ΅ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° ΠΈ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ сакамС Π΄Π° Π³ΠΈ распорСдимС.

Π¨Ρ‚ΠΎ Π΅ слСдно

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ сС ΡƒΡˆΡ‚Π΅ Π½Π΅ Π΅ Π·Π°Π²Ρ€ΡˆΠ΅Π½. Π•Π²Π΅ Π½Π° ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ сСга:

  • Ја ΠΏΡ€ΠΎΡˆΠΈΡ€ΡƒΠ²Π°ΠΌΠ΅ моТноста Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°, Π½ΠΎ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ ја ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°ΠΌΠ΅ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ поСдноставна. НС сакатС Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ илјада ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π°ΠΊΠΎ Π²ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ само Π΄Π²Π°, Π° остатокот стандардно ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°. Ова Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ΠΎΠ·Π½Π°ΠΊΠΈΡ‚Π΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π° (сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° конфигурациска Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° src/config.py), ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° ΠΈ корисникот Π·Π° ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅.
  • Π”ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° автоматско ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π·Π° Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ.
  • Π˜Π·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΠ³Π° Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ» (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° github.com/nginx-modules/nginx_upstream_check_module ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π° Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Π»Π΅ΠΏΠ΅Π½ΠΊΠ° ΠΎΠ΄ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°)
  • Π”ΠΎΠ΄Π°Π²Π°ΡšΠ΅ тСстови:
    • ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ инсталиран.
    • Nginx ја ΠΈΠΌΠ° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° ΠΈ Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ со ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ Π·Π½Π°ΠΌΠ΅Π½Ρ†Π° ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.
    • Π‘Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ‚Π΅ΠΊΠΈ, смСтки ΠΈ Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°ΠΌΡƒ.

Но, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја користитС ΠΎΠ²Π°Π° Π°Π»Π°Ρ‚ΠΊΠ° сСга, Π° исто Ρ‚Π°ΠΊΠ° Π΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ° - github.com/TinkoffCreditSystems/Nginx-builder Π”ΠΎΠ±Ρ€Π΅Π΄ΠΎΡ˜Π΄Π΅!

Π˜Π·Π²ΠΎΡ€: www.habr.com

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