Vi ste ovdje: start » hr » Interna dokumentacija » DokuWiki proširenja (WvdS) » ADO-Git » Puštanje git posrednika u rad na prijenosnom poslužitelju

Puštanje git posrednika u rad na prijenosnom poslužitelju

Stanje

Prihvaćeno. Opisano stanje jest ono koje radi.

Okolnosti

Paket radi na prijenosnom poslužitelju: Apache s PHP-om kao modulom, ne IIS i ne FastCGI. Git posrednik jedini je dio paketa koji ne radi preko doku.php, nego preko vlastite krajnje točke, s PATH_INFO iza imena datoteke. Upravo su ta dva svojstva – zasebna krajnja točka i prijenosni poslužitelj – pri puštanju u rad sudarila na dva mjesta.

Dodatak donosi datoteku web.config. Ona je isključivo za IIS i na ovom poslužitelju nema učinka; njezina su tri zahtjeva morala biti pojedinačno dokazana ili nadomještena.

Mehanizam

AcceptPathInfo po datoteci umjesto za cijeli poslužitelj. Prijenosni Apache u datoteci server/conf/httpd.conf postavlja AcceptPathInfo off za cijeli poslužitelj. Na svaki zahtjev oblika …/git.php/code/{projekt}/{repozitorij}/info/refs zato odgovara pogreškom 404 prije nego što se PHP pokrene – posrednik zahtjev nikad ne vidi. Datoteka .htaccess u mapi dodatka uključuje tu mogućnost samo za git.php:

<Files "git.php">
    AcceptPathInfo On
</Files>

Postavka za cijeli poslužitelj ostaje netaknuta jer je za ostatak wikija ispravna.

Preostala dva zahtjeva iz datoteke web.config već su bila ispunjena i bila su dokazana, a ne ponovno izgrađena: modul mod_deflate nije učitan, pa nema sažimanja gzip koje bi pokvarilo packfile, a LimitRequestBody nije postavljen. Budući da PHP radi kao modul, i zaglavlje Authorization dolazi do PHP-a bez dodatnih postavki – uz FastCGI za to bi trebalo vlastito pravilo.

Proširenje curl instalirano je naknadno. Prijenos do Azure DevOpsa i cijeli put REST idu preko njega; bez njega se konektor javlja kao neaktivan, preglednik repozitorija se ne učitava, a posrednik prekida rad. Prijenosni poslužitelj ga nije donio. Dodani su datoteka ext/php_curl.dll te ovisnosti libssh2.dll i nghttp2.dll iz službenog paketa php-8.2.13-Win32-vs16-x64.zip; redak extension=curl stoji u datoteci server/php/php.ini.

Putovi provjereni nakon puštanja u rad. Popis je dokaz, a ne obećanje rada:

Put Stanje
git clone, fetch i push preko posrednika radi; protuprovjera izravno prema Azure DevOpsu potvrđuje gurnutu granu
provjera prava po identitetu prijavljen korisnik bez administratorskih prava na razini readonly: čitanje 200, pisanje 403
preglednik repozitorija s dohvaćanjem mapa radi
{{source>ado:…}} izravno na stranici projekta radi
{{source>ado:…}} u ladici, pri odabiru datoteke radi
uređivanje pojedinog odjeljka stranice s prikazanim sadržajem Markdown radi; svako uređivanje pogađa samo svoj odjeljak

Posljedice

  • Datoteku .htaccess iz mape dodatka nemojte uklanjati. Izgleda suvišno jer uz nju stoji web.config; bez nje posrednik na ovom poslužitelju odgovara pogreškom 404, a kvar ne izgleda kao problem s postavkama poslužitelja.
  • Mogućnost AcceptPathInfo nemojte uključivati za cijeli poslužitelj da biste postigli isto. Postavka po datoteci uže je rješenje.
  • Pri nadogradnji PHP-a curl mora ići zajedno. Proširenje se mora poklapati s točnom izvedbom poslužitelja: ista podverzija, ista sigurnost niti i isti prevoditelj. Pouzdana je provjera usporedba kontrolnog zbroja datoteke php8ts.dll iz paketa i one na poslužitelju.
  • Pri prelasku na FastCGI treba iznova provjeriti zaglavlje Authorization; današnja pretpostavka vrijedi samo za PHP kao modul.
  • max_execution_time iznosi 30 sekundi. Za provjerene veličine repozitorija bezopasno, kod vrlo velikih sljedeća granica.

Povezane teme

hr/wiki/dwe/wkdoadogit/note-commissioning.txt · Zadnja izmjena: od 0.0.0.0