Pix, Unix, Agility & Co

Aller au contenu | Aller au menu | Aller à la recherche

Tag - authentification LDAP

Fil des billets - Fil des commentaires

jeudi 5 juillet 2012

Installer un MoinMoin wiki sur RHEL 6.2

Une rapide recherche avec yum et c'est la déception :

 # yum search moin
 ...
 ================================= Matched: moin =================================
 lx.x86_64 : Converts PBM data to Lexmark 1000 printer language
 #

Il faut donc se résoudre à travailler à l'ancienne à partir de l'archive tgz. Le site de référence est alors la principale source d'information : http://moinmo.in/ J'ai ensuite travaillé avec la version 1.9.4 de moin moin et le HowTo Quick MoinMoin on CentOS qui s'approche sûrement le plus de ce que je vais rencontrer sur la RHEL.


Pré-requis

Je travaille sur RHEL 6 x86_64 sur laquelle apache 2.2.x et python dans mon cas 2.6.x sont déjà présents. Je vais ajouter mod_wsgi pour servir des applications web basées sur python :

 # yum install mod_wsgi
 ...
   Installed:
   mod_wsgi.x86_64 0:3.2-1.el6                                                                                                                                
 Complete!
 #


Installation MoinMoin

Je me place dans un répertoire MoinMoinWiki dans mon home qui servira de base à l'installation et je travaille en tant que root.

 # wget http://static.moinmo.in/files/moin-1.9.4.tar.gz
 # tar xzvf moin-1.9.4.tar.gz
 # cd moin-1.9.4
 # ls -rtl
 total 72
 -rw-rw-r--  1 1000 1000  1025  7 févr. 22:36 MANIFEST.in
 -rw-rw-r--  1 1000 1000 13704  7 févr. 22:36 setup.py
 -rw-rw-r--  1 1000 1000   238  7 févr. 22:36 setup.cfg
 -rw-rw-r--  1 1000 1000  2458  7 févr. 22:36 README
 -rw-rw-r--  1 1000 1000  1992  7 févr. 22:36 moin.spec
 -rwxrwxr-x  1 1000 1000  1251  7 févr. 22:36 wikiserver.py
 -rw-rw-r--  1 1000 1000   818  7 févr. 22:36 wikiserverlogging.conf
 -rw-rw-r--  1 1000 1000  3087  7 févr. 22:36 wikiserverconfig.py
 -rw-rw-r--  1 1000 1000  2259  7 févr. 22:36 wikiconfig.py
 drwxrwxr-x  6 1000 1000  4096  7 févr. 22:39 wiki
 -rw-rw-r--  1 1000 1000  3203  7 févr. 22:39 PKG-INFO
 drwxrwxr-x 29 1000 1000  4096  7 févr. 22:39 MoinMoin
 drwxrwxr-x  3 1000 1000  4096  7 févr. 22:39 jabberbot
 drwxrwxr-x  3 1000 1000  4096  7 févr. 22:39 docs
 drwxrwxr-x 10 1000 1000  4096  7 févr. 22:39 contrib
 #

On remarque le répertoire docs et notamment docs/README_FIRST qui est la source d'information pour les détails sur l'installation et enfin on lance l'installation au moyen du script python setup.py :

 #python setup.py install --force --prefix /usr/local --record=install.log


Configuration du serveur

 # cd /usr/local/share/moin/
 # ls -rtl
 total 16
 drwxr-xr-x 5 root root 4096  5 juil. 11:55 config
 drwxr-xr-x 3 root root 4096  5 juil. 11:55 underlay
 drwxr-xr-x 2 root root 4096  5 juil. 11:55 server
 drwxr-xr-x 7 root root 4096  5 juil. 11:55 data
 #

On copie le répertoire /usr/local/share/moin et sa sous-arborescence dans un dossier spécifique à l'instance que l'on veut créer par exemple /appli/wikis/da/ (étape facultative) :

 # cp -pR /usr/local/share/moin /appli/wikis/da/

On active les fichiers de configuration en les copiant dans le dossier père :

 # cd /appli/wikis/da/moin
 # cp server/moin.wsgi .
 # cp config/wikiconfig.py .


Le VirtualHost apache

Il nous faut maintenant modifier la configuration apache :

 # cd /etc/httpd/conf

après une petite sauvegarde du httpd.conf on peut l'éditer pour ajouter en fin de fichier :

 #
 #  MoinMoin WSGI configuration
 #
 <VirtualHost wiki-da.mondomaine.fr:80>
    ServerName wiki-da.mondomaine.fr
    ServerAdmin admin@wiki-da.mondomaine.fr
    LoadModule wsgi_module modules/mod_wsgi.so
    # you will invoke your moin wiki at the root url, like http://wiki-da.mondomaine.fr/FrontPage:
    WSGIScriptAlias /   /usr/local/share/moin/moin.wsgi
    # create some wsgi daemons - use user/group same as your data_dir:
    WSGIDaemonProcess moin user=apache group=apache processes=5 threads=10 maximum-requests=1000 umask=0007
    # use the daemons we defined above to process requests!
    WSGIProcessGroup moin
    # WSGISocketPrefix
    WSGISocketPrefix /var/run/moin-wsgi
 </VirtualHost>

Ne pas oublier de demande à Apache d'écouter sur le port sur lequel on a configuré le VirtualHost.


Le mod_wsgi

On édite :

 # vim /appli/wikis/da/moin/moin.wsgi

Pour y ajouter les lignes suivantes :

* paragraphe a1) :
 sys.path.insert(0, '/usr/local/lib/python2.6/site-packages')
* paragraphe a2) :
 sys.path.insert(0, '/appli/wikis/da/moin')

On doit ensuite penser à ajuster les droits :

 # cd /usr/local/share
 # chown -R apache:apache moin
 # chmod -R 0770 moin

et de la même façon pour /appli/wikis/da/moin.

On redémarre apache avant de tester voir si tout cela a servi à quelque chose :

 # /etc/init.d/httpd restart


Configuration de base de l'application MoinMoin

Dans le fichier /appli/wikis/da/moin/wikiconfig.py on décommente les lignes suivantes :

 vim wikiconfig.py

Pour activer l'affichage de la page d'accueil du wiki :

 page_front_page = u"FrontPage"

Pour déterminer le compte administrateur fonctionnel :

 superuser = [u"WikiAdmin", ]

Pour que les modifications soient prises en compte il faut sauvegarder le fichier et relancer le serveur apache.


Ajouter une authentification basée sur un LDAP

Je m'appuie sur la documentation fournie sur le site officiel : http://moinmo.in/HelpOnAuthentication qui décrit différents mécanisme d'authentification dont un travaille avec la classe MoinMoin.auth.ldap_login.LDAPAuth.

mercredi 15 décembre 2010

Subversion et authentification LDAP

Installation sur GNU-Linux Debian

Ajouter les paquets : subversion, apache2 (si il n'est pas déjà présent) et libapache2-svn

Création d'un premier Repository :

   dev1:/etc/ssh# cd /var
   dev1:/var# mkdir svn
   dev1:/var# cd svn
   dev1:/var/svn#
   dev1:/var/svn# svnadmin create /var/svn/repos
   dev1:/var/svn# ls -rtl
   total 4
   drwxr-xr-x 6 root root 4096 mai 29 11:34 repos
   dev1:/var/svn#

On crée un utilisateur dédié à SVN :

   dev1:/var/svn# adduser –shell /bin/null svn

puis on lui attribue la propriété des dépots :

   dev1:/var/svn# chown -R svn:svn /var/svn

On ajoute les utilisateurs Unix pour qu'ils puissent utiliser svn au groupe svn du système par exemple :

   adduser <user> svn

On configure le VirtualHost Apache pour que le mod_dav de svn soit accessible :

   dev1:/etc/apache2/sites-available# cat 001-svn
   <VirtualHost 192.168.1.7>
   ServerName svn.dev1.mondomaine.fr
   ServerAdmin admin@mondomaine.fr
   <Location /repos>
   DAV svn
   SVNPath /var/svn/repos
   </Location>
   </VirtualHost>
   dev1:/etc/apache2/sites-available
   #

On limite l'accès via Apache, en créant un fichier de mots de passe basique comme ceci :

   dev1:/var/svn/repos/conf# htpasswd -c -m /var/svn/repos/conf/htpasswd monutilisateur
   New password:
   Re-type new password:
   Adding password for user monutilisateur
   dev1:/var/svn/repos/conf
   #

Pour rajouter un utilisateur, il suffit de supprimer l'option ”-c” à la commande. Puis on modifie la config du VirtualHost pour prendre en compte l'authentification.

   <VirtualHost 192.168.1.7>
   ServerName dev1.mondomaine.fr
   ServerAdmin admin@mondomaine.fr
   <Location /repos>
   DAV svn
   SVNPath /var/svn/repos
   AuthType Basic
   AuthName “Depot subversion dev1”
   AuthUserFile /var/svn/repos/conf/htpasswd
   Require valid-user
   </Location>
   </VirtualHost>

Pour ne pas avoir de problème en écriture il nous faut ajouter www-data dans le groupe svn.

La config apache2 pour l'authentification via le LDAP :

<Location /svn >
       DAV svn
       SVNParentPath /var/lib/svn
       Options Indexes FollowSymLinks
       order allow,deny
       allow from all
       AuthType Basic
       AuthName "Mon depot sur dev1"
       AuthBasicProvider ldap
       AuthLDAPURL "ldap://ldap.mondomaine.fr/ou=developpeur,ou=monorganisation,o=asso,c=fr?uid"
       Require valid-user
       ErrorDocument 404 default
</Location>

Il faut également activer le module Authnz_ldap pour que la configuration ci-dessus est un sens :

#  a2enmod authnz_ldap
Considering dependency ldap for authnz_ldap:
Enabling module ldap.
Enabling module authnz_ldap.
Run '/etc/init.d/apache2 restart' to activate new configuration!
#

puis comme indiqué dans le résultat de la commande demander un restart d'apache2.