Bonjour à tous.
Je cherche à monter un serveur git accessible en http/https avec un contrôle d'accès via LDAP.
La partie ldap est ok de même que la partie clone/pull via http, le tout paramétré comme il faut dans apache2.
Par contre j'ai des problèmes pour faire un git push sur le dépot distant.
Joli message d'erreur:
Cannot access URL http://monurl.com/dépot/.git/, return code 22
fatal: git-http-push failed
Et un git remote -v me donne les bonnes adresses de push et de fetch (fetch fonctionne par ailleurs, ce qui me fait penser que c'est vraiment un problème de git-http-push).
J'ai lu qu'il y a 2 solutions, une première avec un webdav et la seconde avec le smart http. La solution webdav ne me plait pas trop (moins j'ai de composants à maintenir mieux je me porterai...). J'ai lu cette doc mais j'ai toujours le même problème. git-http-push est installé (il fait partie de git-core sous debian).
L'un d'entre vous a-t-il une idée salvatrice pour moi ou a-t-il rencontré le même problème ???
Merci d'avance !
P.S: Je précise que l'accès http/https n'est pas une option, les dev internes auront accès à git via ssh avec un compte sur le serveur, par contre les clients doivent accéder via http/https.
Voilà le vhost si ça peut vous aider (j'ai modifié certaines informations sensibles qui ne sont pas affichées ici...):
#file managed by puppet
<VirtualHost *:80>
ServerName SERVEUR
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
<Location />
AuthLDAPURL "ldap://SERVEUR-LDAP"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
</Location>
DocumentRoot /srv/git
LogLevel warn
ErrorLog /var/www/FQDN/logs/error.log
CustomLog /var/www/FQDN/logs/access.log "combined"
HostnameLookups On
Include /var/www/FQDN/conf/*.conf #useless, no config files in here NEED FIX
ScriptAlias /git /usr/lib/git-core/git-http-backend/
<Directory /srv/git>
# Options +ExecCGI
# AddHandler cgi-script .cgi
AllowOverride None
Options Indexes FollowSymlinks
Order Allow,Deny
Allow From All
Authname "Restricted Access"
Authtype Basic
require ldap-group RULES
require ldap-user sysadmin
</Directory>
ServerSignature Off
</VirtualHost>
# de ce que je comprend
Posté par NeoX . Évalué à 2.
tu cherches à joindre ton SERVEUR (monurl.com)
puis à rentrer dans un dossier dépot
mais dans ton virtualhost
tu definis bien un ServerName SERVEUR
qui va chercher ses pages dans /srv/git (DocumentRoot)
puis plus loin tu definis que /git est un alias vers le backend
donc il faudrait aller sur http://SERVEUR/git pour le faire fonctionner
enfin et sinon, que dit le manuel à propos d'un git push qui renverrait une erreur 22.
ne serait-ce pas simplement que ton utilisateur web (www-data) ne peut pas ecrire dans le dossier du projet ?
[^] # Re: de ce que je comprend
Posté par napster2core . Évalué à 1.
Il ne s'agit pas du tout d'accéder au serveur via un navigateur web mais d'utiliser le dépôt git avec http:// plutôt que git:// en tant que remote, ce dernier pouvant poser problème en cas de par feu un peut trop zélé et aussi de permettre l'utilisation via un proxy (le serveur git est dans une dmz, inaccessible depuis le net).
J'aurai un sous domaine avec gitweb mais c'est un tout autre outil.
Si tu ne sais pas demande, si tu sais partage !
# J'utilise grack pour ça
Posté par cichlid . Évalué à 1.
https://github.com/schacon/grack
avec en plus Apache et mod_perl juste pour le contrôle d'accès ainsi que le server rack passenger (libapache2-mod-passenger)
Un virtualHost apache avec le serveurName qui va bien le documentRoot qui pointe vers les fichiers de conf du rack, notamment le fichier config.ru configuré pour utiliser ton dépôt git ex: /var/git/your.project.fr/PROJECT_NAME
La couche access control (surement inutile pour toi, tu veux un accès public au repository?) se caractérise dans le vhost de cette façon
J'ai à disposition un gitweb par défaut public que je peux baliser en accès a mes users, le niveau en sécurité est en retrait par rapport à un cryptage asymétrique ssh
C'est une solution packagé avec un soft de gestion de projet écrit en RoR: Chiliproject/redmine
D'ailleurs le module perl_apache d'authentification est fournit avec le soft
Je sais pas à quelle niveau c'est crade mais chezmoiçamarche
envoyé depuis mon clavier bépo
[^] # Re: J'utilise grack pour ça
Posté par cichlid . Évalué à 1.
je rajouterai juste que: (je crois que c'est ta préoccupation principale)
git ls-remote http://your.project.fr/PROJECT_NAME fonctionne
git clone http://your.project.fr/PROJECT_NAME fontionne
avec le setup vu au dessus et un Vhost positionn sur le port TCP 80
envoyé depuis mon clavier bépo
# ?
Posté par siegfried . Évalué à 0.
http://monurl.com/dépot/.git/
SetEnv GIT_PROJECT_ROOT /srv/git
Ca serait pas /srv/git/.git ton git plutot?
# bad ScriptAlias
Posté par sora . Évalué à 1.
Salut,
Moi aussi je cherche à faire la même chose.
Si tu est sur un base debian déjà ton ScriptAlias est faux.
/usr/lib/git-core/git-http-backend/
Ce n'est pas un dossier mais un fichier
ton ScriptAlias devrais plutôt être
ScriptAlias /git/ /usr/lib/git-core/
Et d'après ta conf ton adresse vers un dépôt est de type http://SERVEUR/DEPOT
DEPOT étant un dossier de /srv/git
[^] # Re: bad ScriptAlias
Posté par napster2core . Évalué à 1.
Merci, en effet de cette manière ça fonctionne beaucoup mieux !!!
En fait c'était le scriptAlias qui ne trouvait que le git-http-backend et donc ne pouvait pas accéder à d'autres fonctionnalités.
Si tu ne sais pas demande, si tu sais partage !
# Solution trouvé
Posté par sora . Évalué à 1.
Alors en faite faut bien pointer sur git-http-backend même si c'est un exe.
Le slash à la fin est primordiale !
source => http://p0l0.binware.org/index.php/2011/08/26/git-over-http-git-http-backend/
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.