Ka kohia e matou a Nginx me nga whakahau e rua

Kia pai!
Ko Sergey toku ingoa, kei te mahi ahau hei miihini hangahanga i roto i te roopu API o te papanga tinkoff.ru.

I roto i tenei tuhinga ka korero ahau mo nga raruraru i pa ki to taatau kapa i te wa e whakarite ana i nga pauna Nginx mo nga momo kaupapa. Ka korero ano ahau ki a koe mo te taputapu i taea ai e au te wikitoria i te nuinga o era.

Ko Nginx he kaiwhakarato takawaenga maha me te kaha te whakawhanake. He maha nga waahanga whakauru, ehara tenei i te rarangi katoa. Ka tukuna e ia kaupapa etahi whakaritenga mo te taumahinga o te taurite me te putanga o Nginx (hei tauira, te aroaro o te http/2 me te grpc takawaenga), me te hanganga o ona waahanga.

Kei te pirangi matou ki te kite i tetahi putanga hou me nga huinga huinga e hiahiatia ana, e rere ana i raro i te tohatoha Linux motuhake. I roto i a maatau, he punaha nama me te rpm enei. Ko te whiringa me nga ipu kaore i te whakaarohia i tenei tuhinga.

Kei te pirangi matou ki te whakarereke tere i nga mahi o a maatau taurite. Na konei ka puta tonu te patai: me pehea te whakatutuki i tenei i te wa e whakapau moni ana nga rauemi ka taea? He pai ake ki te whakarite i te mahi kia taea ai e tatou te tautuhi i te maha o nga tawhā whakaurunga, a, i te putanga ka whiwhi i tetahi taonga i te ahua o te putea deb/rpm mo te OS e hiahiatia ana.

Ko te mutunga, he maha nga raru ka taea te hanga:

  • Karekau he kohinga me te putanga hou o Nginx.
  • Karekau he kete me nga waahanga e hiahiatia ana.
  • Ko te whakahiato me te hanga a-ringa i tetahi kete ka pau te wa me te tino hoha.
  • Karekau he korero mo te pehea e whakahiatohia ai tenei tauira Nginx ranei.

Hei whakaoti i enei raru, ka puta te hiahia mo tetahi taputapu hei whakauru i tetahi tohu ki roto i te whakatakotoranga ka taea e te tangata te panui me te whakahiato i tetahi kete Nginx me nga mahi e tika ana i runga.

Kaore i kitea he whiringa pai mo matou i runga i te whanuitanga o Github, i whakatau matou ki te hanga i a maatau ake taputapu - nginx-kaihanga.

Whakatakotoranga

I roto i ta maatau taputapu, i hiahia matou ki te hanga i tetahi whakaahuatanga mo te tohu ki te ahua o te waehere, ka taea te whakauru ki roto i te putunga Git. Hei mahi i tenei, i whiriwhiria e matou te whakatakotoranga e mohiotia ana mo enei mea - yaml. Tauira Whakatakotoranga:

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

I konei ka tohuhia e hiahia ana matou ki te kite i tetahi putea nama me te putanga Nginx 1.14.2 me te huinga o nga waahanga e hiahiatia ana. Ko te waahanga me nga waahanga he mea whiriwhiri. Mo ia o ratou ka taea e koe te whakarite:

  • Ingoa.
  • Wāhitau ka taea e koe te tiki:
    • Putanga Git. Ka taea hoki e koe te tohu he peka, he tohu ranei.
    • Pūranga hononga tukutuku.
    • Hononga rohe ki te puranga.

Ko etahi o nga waahanga e hiahia ana kia whakauruhia etahi atu taapiri, hei tauira ko te nginx-auth-ldap me whakauru libldap2-dev. Ka taea hoki te whakatau i nga whakawhirinakitanga e tika ana ina whakaahua ana i te kōwae.

Taiao

I roto i ta maatau taputapu ka taea e koe te tiki i tetahi taiao me nga taputapu kua whakauruhia mo te whakahiato, te huihuinga kete me etahi atu taputapu awhina. He ipu Docker me nga mea katoa e hiahia ana koe he pai ki konei (kei te rua nga tauira o nga konae Docker mo ubuntu me centos kei roto i te putunga).

Whai muri i te whakatakotoranga o te tohu me te whakarite i te taiao, ka whakarewahia e matou to maatau kaihanga, kua oti te whakauru i ona whakawhirinakitanga:

pip3 install -r requirements.txt
./main.py build -f [конфиг_файл].yaml -r [номер_ревизии]

Ko te nama whakahou kei konei he mea whiriwhiri, ka whakamahia mo nga huihuinga whakaputa. Kua tuhia ki roto i nga korero meta o te kete, he ngawari ki te whakahou i runga i nga kaitoro.
Mai i nga raarangi ka taea e koe te aro turuki i nga mea kei te tupu. Anei tetahi tauira o nga kaupapa matua:

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'.

Na, me te rua noa o nga whakahau, ka hangaia e matou te taiao me te huihuinga Nginx e hiahiatia ana, a ka puta te kete i roto i te raarangi mai i te waahi ka whakarewahia te tuhinga.

Whakamau

Ka taea hoki te whakauru i a maatau taputapu ki nga tukanga CI/CD. Ko tetahi o nga punaha CI e noho ana i enei ra ka awhina i tenei, hei tauira Teamcity ranei Gitlab CI.

Ko te mutunga mai, i nga wa katoa ka huri te tohu ki roto i te whare putunga Git, ka whakarewa aunoatia te hanga o te taonga. E hono ana te nama whakahou ki te porotiti whakarewanga hanga.
He iti ake te wa, ka taea e koe te whirihora i te taonga toi kia tukuna atu ki to putunga kete a rohe, Nexus, Artifactory, me etahi atu.

Ko tetahi atu painga ko te konae whirihoranga yaml ka taea te hono atu ki te Ansible, ki tetahi atu punaha whirihoranga aunoa ranei, a mai i reira ka taea te tango i te nama putanga me te momo kete e hiahia ana matou ki te tuku.

He aha te muri

Kaore ano kia oti te kaupapa. Anei ta matou e mahi ana inaianei:

  • Ka whakawhānuihia e matou te waahi o te whirihoranga, engari i te wa ano ka mau tonu kia ngawari. Kaore koe e hiahia ki te tautuhi i te mano tawhā mena ka hiahia koe kia rua anake, ko te toenga ka pai ki te taunoa. Kei roto i tenei ko nga haki whakahiato (inaianei ka taea e koe te whakarereke i roto i te konae whirihoranga o roto src/config.py), ara whakauru, me te whakarewatanga o te kaiwhakamahi.
  • Kei te taapiri i nga whiringa mo te tuku aunoa i tetahi kete ki nga momo putunga toi.
  • Whakahaerehia he tono ritenga ina utaina he kōwae (hei tauira, hei whakamahi github.com/nginx-modules/nginx_upstream_check_module me tono tuatahi koe i tetahi papaki o tetahi putanga motuhake)
  • Te taapiri i nga whakamatautau:
    • Kua tika te whakaurunga o te kete.
    • Kei a Nginx te putanga e hiahiatia ana ka hangaia me nga haki me nga waahanga e hiahiatia ana.
    • Ko nga huarahi e tika ana, nga kaute, me etahi atu ka hangaia.

Engari ka taea e koe te whakamahi i tenei taputapu inaianei, me te whakaatu hoki i nga whakapainga - github.com/TinkoffCreditSystems/Nginx-builder nau mai!

Source: will.com

Tāpiri i te kōrero