samedi 4 décembre 2010

Git over https by Apache 2 & Apache Directory (Ubuntu)








Pré-requis


Pour ce tutorial, nous travaillons avec une version d'Ubuntu 10.10 server, JDK 1.6.0_22.
Nous commencerons par installer Apache Directory, Git et Apache 2.

Apache Directory



Download d'Apache Directory 1.5.X depuis http://directory.apache.org/apacheds/1.5/download/download-linux-bin.html.



1) cd /opt
2) mkdir dl
3) cd dl
4) wget http://mirror.ibcp.fr/pub/apache//directory/apacheds/unstable/1.5/1.5.7/apacheds-1.5.7-x86_64.bin
5) chmod a+x apacheds-1.5.7-x86_64.bin
6) ./apacheds-1.5.7-x86_64.bin


Where do you want to install Apache DS? [Default: /opt/apacheds-1.5.7]
we have keep the default folder
Where do you want to install Apache DS instances? [Default: /var/lib/apacheds-1.5.7]
we have keep the default folder
What name do you want for the default instance? [Default: default]
we have use the name of the company
Where do you want to install the startup script? [Default: /etc/init.d]
we have keep the default folder
Which user do you want to run the server with (if not already existing, the specified user will be created)? [Default: apacheds]
we have keep the default name


Rapel des commandes :



/etc/init.d/apacheds-1.5.7-company-name start
/etc/init.d/apacheds-1.5.7-company-name restart
/etc/init.d/apacheds-1.5.7-company-name stop


Pour manipuler la configuration et l'utilisation de votre server LDAP Apache Directory, il est fortement conseillé d'utiliser Apache Directory Studio :
http://directory.apache.org/studio/

Votre LDAP étant probablement ouvert sur le net, pensez à changer le mot de passe par défaut qui est :



uid=admin,ou=system

password=secret



Git



Installation rapide de Git.


sudo apt-get install git-core gitweb



- The git repository will be here : /var/cache/git


Création du repository avec le nom que vous souhaitez.


cd /var/cache/git
mkdir your-company.git
cd your-company.git



Nous changerons les droits plus tard pour le user d'Apache.


Création du repository avec le nom que vous souhaitez.


cd /var/cache/git/your-company.git
git init
créer un lien sympolique si besoin


Testons rapidement la connexion depuis Eclipse et son plugin (qui ATTENTION ne fonctionnera pas en http/https avec la version testée).

Check http://www.eclipse.org/egit/


ssh://git@your-ip-or-domain/your-repository-path



On observe :

Branches

Tags

Symbolic References

Remotes

Working directory (branch master)




Apache 2



Dernière étape :)


sudo apt-get install apache2
cd /etc/apache2/
a2enmod ssl
a2enmod authnz_ldap  


Les commandes habituelles pour mémoire :


/etc/init.d/apache2 start
/etc/init.d/apache2 restart
/etc/init.d/apache2 stop


Création de votre fichier de conf VirtualHost :


nano /etc/apache2/sites-available/yourcompany-ssl


Exemple de configuration :


SetEnv GIT_PROJECT_ROOT /var/cache/git
SetEnv GIT_HTTP_EXPORT_ALL

NameVirtualHost git.yourdomain.com:443

<VirtualHost git.yourdomain.com:443>
    DocumentRoot /var/cache/git
    ServerName git.yourdomain.com
    ErrorLog /var/log/apache2/git.error.log
    LogLevel warn
    CustomLog /var/log/apache2/git.access.log combined
    ServerSignature On
    Options Indexes FollowSymLinks MultiViews
    SSLEngine On
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
    SSLCertificateFile /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key

    ScriptAlias / /usr/lib64/git-core/git-http-backend/

    <Location "/">
        AuthBasicProvider ldap
        AuthType Basic
        AuthzLDAPAuthoritative on
        AuthName "Git server"
        AuthLDAPURL "ldap://ldap.yourdomain.com:10389/ou=users,ou=system" NONE
        AuthLDAPBindDN "uid=yourUserGitName,ou=users,ou=system"
        AuthLDAPBindPassword yourUserPassword
        require valid-user
        Order deny,allow
    </Location>

</VirtualHost>


Attention, si comme nous, vous travaillez avec des changements de configuration sur votre nom de domaine, il peut être utile de modifier votre host.



Check if your address is up

ERROR : (EAI 2)Name or service not known: Could not resolve host name


nano /etc/hosts
add the line
91.121.143.131 git.your-domain.com


Activer votre configuration et donnez les droits à Apache pour qu'il puisse par la suite manipuler le repository.


cd /etc/apache2/
a2ensite yourcompany-ssl
chown -R www-data.www-data /var/cache/git/


Création de vos certificat/clé.



cd /etc/ssl/private/
openssl genrsa -out your-company.key 1024

cd /etc/ssl/certs/
openssl req -new -key ../private/your-company.key -out your-company.csr
openssl x509 -req -days 365 -in your-company.csr -signkey ../private/your-company.key -out your-company.crt


Redémarrer ou recharger votre server SSH.
Rapel des commandes :



sudo /etc/init.d/ssh reload

sudo /etc/init.d/ssh restart

sudo /etc/init.d/ssh start

sudo /etc/init.d/ssh stop



Fin de la configuration entre Git et Apache



Vous aller maintenant pouvoir récuperer votre projet depuis votre server git via https.

Votre URL pour manipuler Git sera de la forme :



https://yourUserGitName:yourUserPassword@git.your-domain.com/your-git-repository/


Pour simplifier les choses, désactivons la verification SSL.


git config --global http.sslverify "false"


Récupération du projet depuis votre repo en ligne. Cette commande va créer un projet du même nom que votre repo (sans le .git).


git clone https://yourUserGitName:yourUserPassword:@git.your-domain.com/your-git-repository/


Depuis Eclipse, importer ce projet comme projet Java, ou créer un projet Java pointant sur ce projet checkouté.
La version d'Egit 0.9.3 ne m'a pas permis de travailler en http ou https.



Commance ici, l'utilisation de Git en mode commande. On vous laisse découvrir la doc ou d'autres blogs traitant du sujet.
Vous pouvez déjà créer dans votre nouveau projet un fichier text pour vérifier que votre server Apache possède les droits afin de manipuler le repository Git.


git add your-test-file
git commit
you had just commit on your local repository, so now you will push to your remote project on the git server
git push





Aucun commentaire:

Publier un commentaire