segunda-feira, 13 de junho de 2016

4.6 Git sur la servilo - Smart HTTP

4.6 Git sur la servilo - Smart HTTP

Ni nun aŭtentikigita aliro kvankam SSH kaj unauthenticated aliro tra git:// , sed ekzistas ankaŭ protokolo kiu povas fari ambaŭ samtempe. Starigadon Smart HTTP estas esence nur ebligante CGI skripto kiu estas provizita kun Git nomita git-http-backend sur la servilo. Ĉi CGI legos la padon kaj titolaj sendis per git fetchgit push al HTTP URL kaj determini se la kliento povas komuniki super HTTP (kiu estas vera por ĉiu kliento ekde versio 1.6.6). Se la CGI vidas ke la kliento estas inteligenta, ĝi komunikos smartly kun ĝi, alie ĝi falos reen al muta konduto (tia estas retrokongrua por legas kun malnovaj klientoj).
Ni iras tra tre baza agordo. Ni povas tion supren kun Apache kiel la CGI servilo. Se vi ne havas Apache instalinstrukciojn, vi povas fari ĝin sur Linukso skatolo kun io tiamaniere:
  $ sudo apt-get install apache2 apache2-utils
 $ a2enmod CGI alias env reverki 
Ĉi ankaŭ ebligas la mod_cgi , mod_alias , mod_env kaj mod_rewrite moduloj, kiuj estas ĉiuj bezonataj por ĉi labori konvene.
Vi ankaŭ devas agordi la Uniksa uzanto grupo de la /opt/git dosierujojn al www-data tiel via retservilo povas read- kaj skribi-aliro la deponejoj, ĉar la Apache ekzemple kurado la CGI skripto estos (defaŭlte) esti kurante kiel tiu uzanto:
  $ Chgrp -R Www-data / opt / git 
Ni tuj devas aldoni kelkajn aferojn al la Apache agorda kuri la git-http-backend kiel la traktilo por nenio venanta en la /git vojon de via retservilo.
 SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ 
Se vi ellasas GIT_HTTP_EXPORT_ALL Mediovariablo do Git nur utilos por unauthenticated klientoj la deponejoj kun la git-daemon-export-ok dosieron en ili, same kiel la Git-demono faris.
Fine vi volas diri Apache permesi petoj al git-http-backend kaj fari skribas legalizita iel, eble kun auth bloko tiel:
 RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
RewriteCond %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=AUTHREQUIRED]

<Files "git-http-backend">
 AuthType Basic
 AuthName "Git Access"
 AuthUserFile /opt/git/.htpasswd
 Require valid-user
 Order deny,allow
 Deny from env=AUTHREQUIRED
 Satisfy any
</Files> 
Kiu postulos vin krei .htpasswd dosiero enhavanta la pasvortoj de ĉiuj validaj uzantoj. Jen ekzemplo de aldonanta "schacon" uzanto al la dosiero:
  $ Htpasswd -c /opt/git/.htpasswd schacon 
Estas tunoj de manieroj havi Apache autenticar uzantoj, vi devos elekti kaj efektivigi unu el ili. Tiu estas nur la plej simpla ekzemplo ni povus elpensi. Vi ankaŭ preskaŭ certe volas agordi tion, super SSL por ĉiuj ĉi tiuj datumoj estas ĉifrita.
Ni ne volas iri tro ege malsupren la kuniklotruon de Apache agorda specifaj, ĉar vi bone povus uzi alian servilo aŭ havas malsamajn autenticación bezonoj. La ideo estas ke Git venas kun CGI nomita git-http-backend ke kiam alvokebla faros cxiujn intertraktado por sendi kaj ricevi datumojn sur HTTP. Ne apliki ajnan identigan mem, sed kiuj povas facile esti kontrolita ĉe la mantelo de la retservilo kiu alpreĝas lin. Vi povas fari tion kun preskaŭ ajna CGI-kapabla retservilo, ke vi iru kun kiu vi scias plej bone.
noto
Por pli informo sur agordi autenticación en Apache, kontrolu la Apache dokumentojn tie: http://httpd.apache.org/docs/current/howto/auth.html

Nenhum comentário:

Postar um comentário