Anyị na-eji iwu ole na ole na-achịkọta Nginx anyị

Ndewo!
Aha m bụ Sergey, m na-arụ ọrụ dị ka onye injinia akụrụngwa n'ime otu API nke ikpo okwu tinkoff.ru.

N'isiokwu a, m ga-ekwu maka nsogbu ndị otu anyị chere ihu mgbe ha na-akwadebe ndị na-edozi ihe na-adabere na ya Nginx maka ọrụ dị iche iche. M ga-agwakwa gị banyere ngwá ọrụ mere ka m merie ọtụtụ n'ime ha.

Nginx bụ multifunctional ma na-arụsi ọrụ ike nkesa proxy. Ọ nwere ọnụ ọgụgụ dị ukwuu nke modulu, nke a abụghị ndepụta zuru oke. Ihe oru ngo ọ bụla na-amanye ụfọdụ ihe achọrọ na arụmọrụ nke onye nhazi na ụdị Nginx (dịka ọmụmaatụ, ọnụnọ nke http/2 na grpc proxying), yana nhazi nke modul ya.

Ọ ga-amasị anyị ịhụ ụdị ọhụrụ nwere usoro modulu achọrọ, na-agba ọsọ n'okpuru nkesa Linux akọwapụtara. N'ọnọdụ anyị, ndị a bụ deb- na rpm dabeere na usoro. Nhọrọ na arịa adịghị atụle n'isiokwu a.

Anyị chọrọ ịgbanwe ngwa ngwa ọrụ nke ndị na-edozi anyị. Na ebe a ajụjụ a na-ebilite ozugbo: otu esi enweta nke a mgbe ị na-emefu ego ole na ole ka o kwere mee? Ọ ga-akacha mma ịtọlite ​​​​usoro ka anyị nwee ike ịtọ ọnụọgụ ntinye ntinye, na na mmepụta na-enweta ihe arịa dị n'ụdị ngwugwu deb/rpm maka OS achọrọ.

N'ihi ya, enwere ike ịmepụta ọtụtụ nsogbu:

  • Ọ bụghị mgbe niile ka enweghị ngwungwu nwere ụdị Nginx kachasị ọhụrụ.
  • Enweghị ngwugwu nwere modul achọrọ.
  • Ịchịkọta na iji aka wuo ngwugwu na-ewe oge ma na-agwụ ike.
  • Enweghị nkọwa gbasara otu esi agbakọta nke a ma ọ bụ nke Nginx.

Iji dozie nsogbu ndị a, mkpa a na-ebilite maka ngwá ọrụ ga-ewere dị ka ntinye nkọwa n'ụdị mmadụ nwere ike ịgụ ma chịkọta ngwugwu Nginx na ọrụ dị mkpa dabere na ya.

Na-achọtaghị nhọrọ dabara adaba maka anyị na oke Github, anyị kpebiri ịmepụta ngwá ọrụ nke anyị - nginx-ewu.

Nkọwa

N'ime ngwa ọrụ anyị, anyị chọrọ ịmepụta nkọwa nke nkọwapụta n'ụdị koodu, nke enwere ike itinye ya na ebe nchekwa Git. Iji mee nke a, anyị họọrọ usoro a maara nke ọma maka ihe ndị dị otú ahụ - yaml. Ọmụmaatụ nkọwapụta:

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

N'ebe a, anyị na-egosi na anyị chọrọ ịhụ ngwugwu ụgwọ na ụdị Nginx 1.14.2 nwere usoro modulu achọrọ. Ngalaba nwere modul bụ nhọrọ. Maka nke ọ bụla n'ime ha ị nwere ike ịtọ:

  • Aha.
  • Adreesị ebe ị nwere ike nweta ya:
    • Ebe nchekwa Git. Ị nwekwara ike ịkọwa alaka ma ọ bụ mkpado.
    • Chekwaa njikọ weebụ.
    • Njikọ mpaghara na ebe nchekwa.

Ụfọdụ modul chọrọ ka etinyere ndabere ndị ọzọ, dịka ọmụmaatụ nginx-auth-ldap chọrọ arụnyere libldap2-dev. Enwere ike ịkọwa ihe ndabere dị mkpa mgbe ị na-akọwa modul.

Gburugburu

N'ime ngwá ọrụ anyị, ị nwere ike nweta gburugburu ngwa ngwa nwere ngwa arụnyere maka nchịkọta, mgbakọ ngwugwu na ngwanrọ enyemaka ndị ọzọ. Akpa Docker nwere ihe niile ịchọrọ dị mma ebe a (ebe nchekwa ahụ enweelarị ihe atụ nke faịlụ Docker maka ubuntu na centos).

Mgbe edechara nkọwapụta ma kwadoo gburugburu ebe obibi, anyị na-ebupụta onye nrụpụta anyị, ebe etinyere ya dabere na mbụ:

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

Nọmba ngbanwe ebe a bụ nhọrọ ma ejiri ya maka mgbakọ nsụgharị. Edere ya na ozi meta nke ngwugwu, na-eme ka ọ dị mfe imelite na sava.
Site na ndekọ ị nwere ike nyochaa ihe na-eme. Nke a bụ ọmụmaatụ nke isi ihe:

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

Ya mere, n'ụzọ nkịtị site na iwu ole na ole, anyị na-emepụta gburugburu ebe obibi na mgbakọ Nginx achọrọ, na ngwugwu ahụ na-apụta na ndekọ ebe a na-ewepụta edemede ahụ.

Ntinye

Anyị nwekwara ike itinye ngwa anyị n'ime usoro CI/CD. Nke ọ bụla n'ime ọtụtụ usoro CI dị taa nwere ike inye aka na nke a, dịka ọmụmaatụ Ịgbakọ ọnụ ma ọ bụ Gitlab CI.

N'ihi ya, oge ọ bụla nkọwapụta na-agbanwe na ebe nchekwa Git, a na-ewepụta ihe nrụpụta ihe ahụ na-akpaghị aka. Ejikọrọ nọmba ngbanwe ahụ na counter mmalite ihe nrụpụta.
Site na obere oge, ị nwere ike hazie arịa a ga-eziga na ebe nchekwa ngwugwu mpaghara gị, Nexus, Artifacty na ndị ọzọ.

Uru ọzọ bụ na faịlụ nhazi yaml nwere ike ijikọ na Ansible ma ọ bụ usoro nhazi akpaka ọzọ, na anyị nwere ike were nọmba ụdị na ụdị ngwugwu anyị chọrọ ibunye.

Kedu ihe na-esote

Emechabeghị ọrụ a. Nke a bụ ihe anyị na-arụ ọrụ ugbu a:

  • Anyị na-agbasawanye ohere nke nhazi, ma n'otu oge ahụ na-eme ka ọ dị mfe dị ka o kwere mee. Ịchọghị ịkọwa otu puku paramita ma ọ bụrụ na ị chọrọ naanị abụọ, ndị ọzọ dabara na ndabara. Nke a gụnyere ọkọlọtọ mkpokọta (ugbu a ị nwere ike ịgbanwe ha na faịlụ nhazi nke ime src/config.py), ụzọ nwụnye, yana onye ọrụ mmalite.
  • Anyị na-agbakwunye nhọrọ maka izipu ngwugwu na-akpaghị aka na ebe nchekwa ihe dị iche iche.
  • Mezue iwu omenala mgbe ị na-ebu modul (dịka ọmụmaatụ, iji github.com/nginx-modules/nginx_upstream_check_module ị ga-ebu ụzọ tinye patch nke otu ụdị)
  • Na-agbakwunye ule:
    • Awụnyere ngwugwu ahụ nke ọma.
    • Nginx nwere ụdị achọrọ ma jiri ọkọlọtọ na modul achọrọ.
    • A na-emepụta ụzọ ndị dị mkpa, akaụntụ, na ihe ndị ọzọ.

Ma ị nwere ike iji ngwá ọrụ a ugbu a, ma na-atụ aro ndozi - github.com/TinkoffCreditSystems/Nginx-builder daalụ!

isi: www.habr.com

Tinye a comment