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:
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ụ:
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.