LP ASRALL Outils Logiciels Libres LDAP, CMS et Haute Disponibilitée Auteurs : Rémi Jachniewicz, Julien Lacava, Gatien Gaspard, Romain Gegout, Benoit Henryon 21 mars 2009
Table des matières I. LDAP 4 1. Installation du serveur openldap 5 2. Inspection des schémas 5 3. Configuration du serveur 5 4. Création du DIT 5 5. Démarrage du serveur 6 6. Insertion des données dans l annuaire 6 7. Recherche d informations 6 7.1. afficher les valeurs de tous les attributs de tous les étudiants et de tous les profs 6 7.2. afficher les noms des attributs cn, description et telephonenumber des étudiants de NANCY..................................... 7 7.3. afficher les valeurs de l attribut mail des étudiants qui ont un title....... 11 7.4. afficher les valeurs de tous les attributs des étudiants dont le sn commence par la lettre M et qui n ont pas de title........................ 12 7.5. afficher les valeurs de tous les attributs opérationnels et non opérationnels de tous les étudiants.................................. 13 7.6. afficher les membres du Groupe 2......................... 13 7.7. afficher les valeurs des attributs cn des Administrateurs............. 13 7.8. afficher les informations relatives à l annuaire en interrogeant l objet rootdse 13 7.9. afficher les informations relatives aux schémas utilisés par l annuaire en interrogeant l objet subschemasubentry........................ 13 7.10. Lister tout les étudiants (via navigateur)..................... 13 7.11. lister les mails des étudiants qui ont un title (via navigateur).......... 13 7.12. lister les attributs des étudiants dont le nom commence par M (via navigateur) 13 7.13. Lister tous les étudiants (avec phpldapadmin).................. 14 7.14. liste des étudiants dont le nom commence par M (avec phpldapadmin).... 14 7.15. liste des étudiants du group ASRALL2 (avec phpldapadmin).......... 14 7.16. recherche les mails des étudiants qui ont le titre Monsieur au format ldif... 14 7.17. Refaire une recherche en testant le paramètre z de ldapsearch (limitez à 12 entrées maximales).................................. 14 8. Journalisation 16 9. Modifications de données existantes 17 10.Mise en place du partitionnement 18 2
11.Mise en place de la réplication 18 12.Mise en place des ACL 18 II. Drupal 19 13.Guide d installation : 19 14.Guide d administration : 19 14.1. Configurer LDAP.................................. 19 14.2. Gestion des groupes LDAP............................. 20 14.3. Ajout de modules à Drupal............................. 20 14.4. Prise en main.................................... 20 15.Évaluation des fonctionnalités : 20 15.1. Gestion du Versionning............................... 21 III. Haute Disponibilité 22 16.LVS 23 17.Heartbeat 24 18.Zabbix 25 19.Mon 28 20.Mysql 29 21.Monitoring 31 3
Première partie. LDAP 4
1. Installation du serveur openldap Voici les options telles que configurée lors de l installation : sudo apt-get install slapd ldap-utils mot de passe admin : admin sudo dpkg-reconfigure ommetre config -> non nom de domaine -> asrall.com nom organisation -> asrallssh mot de passe admin -> admin module de base de donnees -> hdb supprimer bdd autoriser ldapv2 2. Inspection des schémas Les classes filles de personnes sont : organizationalperson et residentialperson Mettre le tableau ici Les classes héritent des attributs parents obligatoires, c est pourquoi par exemple l attribut sn ou encore cn n est pas redéclaré dans les autres classes. 3. Configuration du serveur Création d un utilisateur : sudo slappasswd -h MD5 // Récupération du hash MD5 placer le résultat dans le fichier /etc/ldap/slapd.conf : rootdn cn=manager,dc=asrall,dc=com rootpw SSHAyCcwfMW2zG5iCiTEh8ZogGWtkf0qpPxr 4. Création du DIT 5
Fichier dit.ldif : On crée un DIT avec : sudo slapadd -l./dit.ldif On vérifie : sudo slapcat 5. Démarrage du serveur Démarrer le serveur en forçant un niveau de debug de 5 et en gardant les options par défaut (ne lancez pas le serveur en tâche de fond en ajoutant un & à la fin de la ligne de commande pour pouvoir voir ce qu il retournera) Il existe 14 loglevel possibles (cumulables entre eux) (voir page 2 Tutoriel) Pour choisir le loglevel il y a 2 possibilités : -éditer loglevel dans slapd.conf -soit en ligne de commandes au lancement de ldap sudo /usr/sbin/slapd -d 5 // 5 pour loglevel 5 Vérifier que le process id du demon slapd est bien contenu dans le fichier pidfile en faisant un cat du fichier pidfile. Le fichier pidfile = /var/run/slapd/slapd.pid cat slapd.pid -> 5744 Le fichier pidfile = /var/run/slapd/slapd.args cat slapd.args -> /usr/sbin/slapd -d 5 start 6. Insertion des données dans l annuaire ldapadd -f asrall.ldif -x -W -D cn=manager,dc=asrall,dc=com ldapadd -f etudiant.ldif insertion de données via phpldapadmin : installation : sudo apt-get install phpldapadmin modification de /etc/php5/apache2/php.ini : memory limit = 50M acces a l interface : http ://adresse serveur/p test 7. Recherche d informations 7.1. afficher les valeurs de tous les attributs de tous les étudiants et de tous les profs ldapsearch -x -b ou=profs,ou=nancy,dc=asrall,dc=com -s sub * # extended LDIF 6
# # LDAPv3 # base <ou=profs,ou=nancy,dc=asrall,dc=com> with scope subtree # filter: (objectclass=*) # requesting: Desktop mod # # Profs, NANCY, asrall.com dn: ou=profs,ou=nancy,dc=asrall,dc=com # p.dosch, Profs, NANCY, asrall.com dn: cn=p.dosch,ou=profs,ou=nancy,dc=asrall,dc=com # b.mangeol, Profs, NANCY, asrall.com dn: cn=b.mangeol,ou=profs,ou=nancy,dc=asrall,dc=com # e.nataf, Profs, NANCY, asrall.com dn: cn=e.nataf,ou=profs,ou=nancy,dc=asrall,dc=com # d.maringer, Profs, NANCY, asrall.com dn: cn=d.maringer,ou=profs,ou=nancy,dc=asrall,dc=com # j.longchamp, Profs, NANCY, asrall.com dn: cn=j.longchamp,ou=profs,ou=nancy,dc=asrall,dc=com # m.simon, Profs, NANCY, asrall.com dn: cn=m.simon,ou=profs,ou=nancy,dc=asrall,dc=com 7.2. afficher les noms des attributs cn, description et telephonenumber des étudiants de NANCY ldapsearch -x -b ou=etudiants,ou=nancy,dc=asrall,dc=com -s one cn description telephonenumber # extended LDIF # # LDAPv3 # base <ou=etudiants,ou=nancy,dc=asrall,dc=com> with scope onelevel # filter: (objectclass=*) # requesting: cn description telephonenumber # # g.gaspard, Etudiants, NANCY, asrall.com dn: cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: g.gaspard description: Gatien Gaspard 7
# j.lacava, Etudiants, NANCY, asrall.com dn: cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: j.lacava description: Julien Lacava # d.rard, Etudiants, NANCY, asrall.com dn: cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: d.rard description: David Rard # f.chassagne, Etudiants, NANCY, asrall.com dn: cn=f.chassagne,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: f.chassagne description: Felix Chassagne # j.leemans, Etudiants, NANCY, asrall.com dn: cn=j.leemans,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: j.leemans description: Jerome Leemans # l.dominguez, Etudiants, NANCY, asrall.com dn: cn=l.dominguez,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: l.dominguez description: Luis Dominguez # r.gegout, Etudiants, NANCY, asrall.com dn: cn=r.gegout,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: r.gegout description: Romain Gegout # s.jean, Etudiants, NANCY, asrall.com dn: cn=s.jean,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: s.jean description: Sebastien Jean # f.lambert, Etudiants, NANCY, asrall.com 8
dn: cn=f.lambert,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: f.lambert description: Florian Lambert # g.lambert, Etudiants, NANCY, asrall.com dn: cn=g.lambert,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: g.lambert description: Gael Lambert # l.lemal, Etudiants, NANCY, asrall.com dn: cn=l.lemal,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: l.lemal description: Ludovic Lemal # r.dervin, Etudiants, NANCY, asrall.com dn: cn=r.dervin,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: r.dervin description: Romain Dervin # y.baris, Etudiants, NANCY, asrall.com dn: cn=y.baris,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: y.baris description: Yusuf Baris # s.lecaille, Etudiants, NANCY, asrall.com dn: cn=s.lecaille,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: s.lecaille description: Simon Lecaille # j.nogre, Etudiants, NANCY, asrall.com dn: cn=j.nogre,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: j.nogre description: Joel Nogre # q.hourlier, Etudiants, NANCY, asrall.com dn: cn=q.hourlier,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: q.hourlier description: Quentin Hourlier 9
# a.bailly, Etudiants, NANCY, asrall.com dn: cn=a.bailly,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: a.bailly description: Alexandre Bailly # c.mathieu, Etudiants, NANCY, asrall.com dn: cn=c.mathieu,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: c.mathieu description: Cedric Mathieu # h.meloni, Etudiants, NANCY, asrall.com dn: cn=h.meloni,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: h.meloni description: Hugo Meloni # j.fritz, Etudiants, NANCY, asrall.com dn: cn=j.fritz,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: j.fritz description: Jean Fritz # y.ilhan, Etudiants, NANCY, asrall.com dn: cn=y.ilhan,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: y.ilhan description: Yilmaz Ilhan # b.seclier, Etudiants, NANCY, asrall.com dn: cn=b.seclier,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: b.seclier description: Benjamin Seclier # v.meslard, Etudiants, NANCY, asrall.com dn: cn=v.meslard,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: v.meslard description: Vincent Meslard # g.farinet, Etudiants, NANCY, asrall.com 10
dn: cn=g.farinet,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: g.farinet description: Geoffry Farinet # r.jachniewicz, Etudiants, NANCY, asrall.com dn: cn=r.jachniewicz,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: r.jachniewicz description: Remi Jachniewicz # b.henryon, Etudiants, NANCY, asrall.com dn: cn=b.henryon,ou=etudiants,ou=nancy,dc=asrall,dc=com cn: b.henryon description: Benoit Henryon # search result search: 2 result: 0 Success # numresponses: 27 # numentries: 26 7.3. afficher les valeurs de l attribut mail des étudiants qui ont un title ldapsearch -x -b ou=etudiants,ou=nancy,dc=asrall,dc=com -s one title= monsieur mail # extended LDIF # # LDAPv3 # base <ou=etudiants,ou=nancy,dc=asrall,dc=com> with scope onelevel # filter: title=monsieur # requesting: mail # # g.gaspard, Etudiants, NANCY, asrall.com dn: cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr # j.lacava, Etudiants, NANCY, asrall.com dn: cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr # d.rard, Etudiants, NANCY, asrall.com 11
dn: cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr # f.chassagne, Etudiants, NANCY, asrall.com dn: cn=f.chassagne,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: felix.chassagne@etudiants-univ-nancy2.fr # j.leemans, Etudiants, NANCY, asrall.com dn: cn=j.leemans,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: jerome.leemans@etudiants-univ-nancy2.fr # l.dominguez, Etudiants, NANCY, asrall.com dn: cn=l.dominguez,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: luis.dominguez@etudiants-univ-nancy2.fr # search result search: 2 result: 0 Success # numresponses: 7 # numentries: 6 7.4. afficher les valeurs de tous les attributs des étudiants dont le sn commence par la lettre M et qui n ont pas de title * ldapsearch -x -b ou=etudiants,ou=nancy,dc=asrall,dc=com -s one (&(sn=m*)(!(title=*))) # extended LDIF # # LDAPv3 # base <ou=etudiants,ou=nancy,dc=asrall,dc=com> with scope onelevel # filter: (\&(sn=m*)(!(title=*))) # requesting: Desktop mod # # c.mathieu, Etudiants, NANCY, asrall.com dn: cn=c.mathieu,ou=etudiants,ou=nancy,dc=asrall,dc=com # h.meloni, Etudiants, NANCY, asrall.com dn: cn=h.meloni,ou=etudiants,ou=nancy,dc=asrall,dc=com # v.meslard, Etudiants, NANCY, asrall.com dn: cn=v.meslard,ou=etudiants,ou=nancy,dc=asrall,dc=com # search result 12
search: 2 result: 0 Success # numresponses: 4 # numentries: 3 7.5. afficher les valeurs de tous les attributs opérationnels et non opérationnels de tous les étudiants 7.6. afficher les membres du Groupe 2 ldapsearch -x -b ou=group,ou=nancy,dc=asrall,dc=com -s one cn=asrall2 7.7. afficher les valeurs des attributs cn des Administrateurs ldapsearch -x -b cn=administrateurs,ou=groups,ou=nancy,dc=asrall,dc=com -s one cn 7.8. afficher les informations relatives à l annuaire en interrogeant l objet rootdse 7.9. afficher les informations relatives aux schémas utilisés par l annuaire en interrogeant l objet subschemasubentry 7.10. Lister tout les étudiants (via navigateur) ldap ://192.168.10.11 :389/ou=Etudiants,ou=NANCY,dc=asrall,dc=com?*?sub?(cn=*) 7.11. lister les mails des étudiants qui ont un title (via navigateur) ldap ://192.168.10.11 :389/ou=Etudiants,ou=NANCY,dc=asrall,dc=com?mail?sub?(title=*) 7.12. lister les attributs des étudiants dont le nom commence par M (via navigateur) ldap ://192.168.10.11 :389/ou=Etudiants,ou=NANCY,dc=asrall,dc=com?*?sub?(sn=M*) 13
7.13. Lister tous les étudiants (avec phpldapadmin) 7.14. liste des étudiants dont le nom commence par M (avec phpldapadmin) 7.15. liste des étudiants du group ASRALL2 (avec phpldapadmin) 7.16. recherche les mails des étudiants qui ont le titre Monsieur au format ldif ldapsearch -LLL -x -b ou=etudiants,ou=nancy,dc=asrall,dc=com -s one title= monsieur mail dn: cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr dn: cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr dn: cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr dn: cn=f.chassagne,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: felix.chassagne@etudiants-univ-nancy2.fr dn: cn=j.leemans,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: jerome.leemans@etudiants-univ-nancy2.fr dn: cn=l.dominguez,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: luis.dominguez@etudiants-univ-nancy2.fr 7.17. Refaire une recherche en testant le paramètre z de ldapsearch (limitez à 12 entrées maximales). Que retourne le serveur si jamais il y a plus de 12 entrées correspondant au filtre de recherche? ldapsearch -z 10 -x -b ou=etudiants,ou=nancy,dc=asrall,dc=com -s one title= monsieur mail # extended LDIF # # LDAPv3 # base <ou=etudiants,ou=nancy,dc=asrall,dc=com> with scope onelevel # filter: title=monsieur # requesting: mail # 14
# g.gaspard, Etudiants, NANCY, asrall.com dn: cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr # j.lacava, Etudiants, NANCY, asrall.com dn: cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr # d.rard, Etudiants, NANCY, asrall.com dn: cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr # f.chassagne, Etudiants, NANCY, asrall.com dn: cn=f.chassagne,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: felix.chassagne@etudiants-univ-nancy2.fr # j.leemans, Etudiants, NANCY, asrall.com dn: cn=j.leemans,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: jerome.leemans@etudiants-univ-nancy2.fr # l.dominguez, Etudiants, NANCY, asrall.com dn: cn=l.dominguez,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: luis.dominguez@etudiants-univ-nancy2.fr # search result search: 2 result: 0 Success # numresponses: 7 # numentries: 6 dans le cas où on limite a une valeut inférieure au nombre réel de résultats : ldapsearch -z 3 -x -b ou=etudiants,ou=nancy,dc=asrall,dc=com -s one title= monsieur mail # extended LDIF # # LDAPv3 # base <ou=etudiants,ou=nancy,dc=asrall,dc=com> with scope onelevel # filter: title=monsieur # requesting: mail # # g.gaspard, Etudiants, NANCY, asrall.com dn: cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr 15
# j.lacava, Etudiants, NANCY, asrall.com dn: cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr # d.rard, Etudiants, NANCY, asrall.com dn: cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr # search result search: 2 result: 4 Size limit exceeded # numresponses: 4 # numentries: 3 \subsection{refaire une recherche en testant le paramètre {S de ldapsearch. Comment so les résultats par rapport à une recherche sans paramètre {S?} recherche les 3 premiers mails des étudiants et affiche par ordre alphabétique ldapsearch -S mail -z 3 -x -b "ou=etudiants,ou=nancy,dc=asrall,dc=com" -s one title="m \begin{verbatim} # extended LDIF # # LDAPv3 # base <ou=etudiants,ou=nancy,dc=asrall,dc=com> with scope onelevel # filter: title=monsieur # requesting: mail # # d.rard, Etudiants, NANCY, asrall.com dn: cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr # g.gaspard, Etudiants, NANCY, asrall.com dn: cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr # j.lacava, Etudiants, NANCY, asrall.com dn: cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr 8. Journalisation en debug 0 - aucune info en debug 32 (traitement des filtres de recherche) on obtient une info par résultat de recherche 16
begin get_filter PRESENT end get_filter 0 => bdb_filter_candidates AND => bdb_list_candidates 0xa0 => bdb_filter_candidates PRESENT <= bdb_filter_candidates: id=-1 first=1 last=51 <= bdb_list_candidates: id=-1 first=8 last=33 <= bdb_filter_candidates: id=-1 first=8 last=33 => test_filter PRESENT <= test_filter 6 => test_filter PRESENT <= test_filter 6 => test_filter PRESENT <= test_filter 6 => test_filter PRESENT <= test_filter 6 en debug 512(statistique sur les résultats renvoyées au client) slapd starting conn=0 op=1 ENTRY dn= cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com conn=0 op=1 EN- TRY dn= cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com conn=0 op=1 ENTRY dn= cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com 9. Modifications de données existantes 9.1. Ajouter l attribut departmentnumber à 4 étudiants de NANCY de votre choix. a) on cré un fichier texte modif1.txt : dn : cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com changetype : modify add : departementnumber departementnumber : 57 dn : cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com changetype : modify add : departementnumber departementnumber : 57 dn : cn=r.gegout,ou=etudiants,ou=nancy,dc=asrall,dc=com changetype : modify add : departementnumber departementnumber : 54 dn : cn=y.baris,ou=etudiants,ou=nancy,dc=asrall,dc=com changetype : modify add : departementnumber departementnumber : 88 b) On lance l intégration de ce fichier : ldapmodify -x -D cn=manager,dc=asrall,dc=com -f modif1.txt -w managerpwd 17
9.2. Supprimer l attribut description à 3 profs de TOULOUSE de votre choix a) on cré le fichier : dn : cn=j.hallyday,ou=profs,ou=toulouse,dc=asrall,dc=com changetype : modify delete : telephonenumber b) on lance : ldapmodify -x -D cn=manager,dc=asrall,dc=com -f modif2.txt -w managerpwd 9.3. Modifier les attributs mail et telephonenumber de 3 profs de votre choix 9.4. Supprimer les entrées de 2 étudiants de TOULOUSE et celle d un prof de NANCY 9.5. Déplacer un étudiant de TOULOUSE vers les profs de NANCY 9.6. Renommer une étudiante en changeant son attribut cn en conservant l ancien cn (par exemple si elle a changé de nom en se mariant et qu elle veut quand même voir apparaître son nom de jeune fille) 9.7. Supprimer un des étudiants du groupe Utilisateurs 10. Mise en place du partitionnement 11. Mise en place de la réplication 12. Mise en place des ACL 18
Deuxième partie. Drupal 13. Guide d installation : Téléchargement de drupal sur http://drupalfr.org/ Version intallée : Drupal6.9 Prérequis : php5, mysql, apache2, phpmyadmin, php5-gd Décompresser l archive contenant Drupal dans un répertoire accessible par Apache (/var/www/drupal par exemple). Rendre www-data propriétaire de l ensemble du CMS (chown www-data :www-data -R /var/www/drupa Renommer le fichier /var/www/drupal/sites/defaults.settings.php en settings.php Rajouter les droits d écriture à ce fichier (chmod u+w settings.php). Rajouter les droits d écriture au répertoire /var/www/drupal/sites/defaults/files (chmod u+w -R files) Créer une base de données pour Drupal. Ouvrir un navigateur à l adresse http ://ipduserveur/drupal/install.php Dans le navigateur : Remplir les informations pour la création d un utilisateur : Login : drupal MDP : drupal54 Préciser le nom de la base de données. Sauvegarder Enlever les droits d écriture sur settings.php (chmod u-w settings.php) 14. Guide d administration : Suppression de l authentification par mail lors de la création d un compte : aller dans Administer -> UserManagement -> UserSettings et décocher la case Require e-mail verification Par defaut, il y a deux types de users, anonyme et identifié. Afin de donner des droits spécifiques, il faut créer des rôles que l on pourra affecter aux utilisateurs voulus. Pour ce faire, il faut définir les permissions désirées : Administer -> UserManagement -> Roles 14.1. Configurer LDAP Pour gérer les utilisateurs depuis un serveur LDAP, il faut installer le module php5-ldap. Pour l intégration de LDAP dans Drupal, il faut y installer le module ldap integration. 19
configuration de Ldap authentication : Mixed mode. The LDAP authentication is performed only if Drupal authentication fails Disallow login and log the conflict Add server : Base DNs : dc=asrall,dc=com UserName attribute : cn Email attribute : mail 14.2. Gestion des groupes LDAP Groups exist as LDAP entries where a multivalued attribute contains the members CNs Nodes containing groups (one per line) : cn=administrateurs,ou=groups,ou=nancy,dc=asrall,dc=co Attribute holding group members : uniquemember 14.3. Ajout de modules à Drupal Copier coller le contenu d une archive contenant le module dans le répertoire /var/www/drupal/module (si celui-ci n est pas disponible par défaut) Aller sur administer->site building->modules et activer le module désiré. exemple : shoutcast : extraction dans le dossier modules activation via administer->site building->modules->shoutbox ajout du block aux pages : administer->site building->blocks->shoutbox exemple : blog : activation via administer->site building->modules->blog Ajout du support de la langue francaise : récupération de l archive contenant le français puis activation via administer->site configuration->l 14.4. Prise en main Drupal s avère extremement rapide et aisé à installer et à mettre en oeuvre. L ajout de fonctionnalité est également trés intuitif puisqu il suffit d ajouter le module dans le répertoire module de drupal et activer celui-ci via l interface d administration. 15. Évaluation des fonctionnalités : L authentification et la gestion des utilisateurs via LDAP s avére relativement simple à mettre en place. La traduction dans diverses langues également. Quant à l édition du contenu, Drupal dispose d un éditeur de texte très sommaire, il est néanmoins possible d installer un éditeur Wysiwyg via un module complémentaire. La connexion à une base de données se fait naturellement lors de l installation, drupal se charge de créer ce qu il a besoin. 20
15.1. Gestion du Versionning Créer du contenu. Modifier le contenu (en cochant la case Information sur les revisions créer une revision). La liste des revisions est accessible via le menu revisions sur les pages contenant plusieurs revisions. 21
Troisième partie. Haute Disponibilité 22
16. LVS Linux Virtual Server (LVS) est une solution avancée de répartition de charge pour GNU/Linux. C est un logiciel libre commencé par Wensong Zhang en mai 1998. La mission de ce projet était de construire un serveur de haute performance pour Linux utilisant la technologie du clustering. L équilibrage de type NAT via LVS que nous allons mettre en place s appuie essentiellement sur ipvsadm qui est l outil d administration d LVS mais aussi de Ldirectord qui va s occuper de la configuration et la détection de serveurs web down. Sur le/les équilibreur(s) : Tout d abord on installe Ldirectord : sudo apt-get install ldirectord Ensuite on crée une interface virtuelle, qui sera utilisée par le client désirant visiter le site web : sudo ifconfig eth0 :virt 192.168.2.110 Configuration de Ldirectord : Les fichiers de configurations portent l extension.cf et ont pour répertoire /etc/ha.d/. Dans ce fichier il faut renseigner plusieurs éléments : virtual=192.168.2.110:80 protocol=tcp scheduler=rr real=192.168.10.91:90 masq 1 real=192.168.10.110:80 masq 1 request="test.html" receive="200" Virtual renseigne sur l adresse ip virtuelle qui sera accédée par le client. Protocol permettant de définir le type de protocole utilisé, ici tcp car http est basé sur celui-ci. Scheduler correspond a l agorithme utilisé pour l équilibrage, rr signifiant Round Robin. real liste les serveurs constituant la pool avec l adresse ip de chacuns d eux, sont type de forward et le poid.le type masq (pour masquerade) correspond au LVS de type NAT et le poid permet de définir une priorité de l aiguillage. Request défini le nom de la resource qui sera accedée pour vérifier que les serveurs web sont toujours disponibles. Receive contient la valeur que devra contenir la resource pour être considéré comme disponible. Sur les serveurs web : Il y a deux petits points à mettre en place sur les serveurs : La première consiste à changer la passerelle actuelle par l ip de l équilibreur : 23
/sbin/route add default gw 192.168.10.221 Ensuite il faut créer à la racine le fichier test.html et y mettre comme contenu 200. Lancement : En mode débug : En mode normal : 17. Heartbeat /usr/sbin/ldirectord -d /etc/ha.d/www.cf start /etc/init.d/ldirectord start La haute disponibilité va être assurée par heartbeat, celui-ci doit être installé sur chacun des équilibreurs. On installe heartbeat : sudo apt-get install heartbeat Configuration : Il y a 3 fichiers à configurer pour qu heartbeat fonctionne comme désiré : /etc/ha.d/ha.cf : bcast eth0 <= Interface utilisée pour le battement debugfile /var/log/ha-debug <= fichier de débug logfile /var/log/ha-log <= fichier de log logfacility local0 <= Log utilisant syslog-ng keepalive 2 <= temps (en s) entre chaque battement deadtime 10 <= temps au bout du quel on considère une machine morte warntime 6 <= on considère que la machine met du temps à répondre après 6s initdead 60 <= temps avant de lancer le premier battement au démarrage udpport 694 <= port utilisé pour l envoi du battement node equ1 <= déclaration des machines devant ^etre surveillées node equ2 auto_failback on <= réintegre une machine qui repasse en état de marche /etc/had.d/haresources : /etc/ha.d/authkeys : equ1 Ipaddr :: 192.168.10.221 } {{ } } {{ } Node Ip virt à attribuer auth 1 <= on utilise la méthode d authentification 1 1 sha1 CleSecrete <= Numéro de méthode, Type de cryptage et clé Ensuite il ne nous reste plus qu a lancer heartbeat sur les machines : /etc/init.d/heartbeat start 24
18. Zabbix Prérequis avant installation : Il faut disposer d un serveur Web gérant le PHP avec une base de données MySql ou PostgreSQL. Installation : Il y a trois paquet à installer : zabbix-server-mysql pour utiliser une base MySQL ou zabbix-server-pgsql pour utiliser une base PostGRES zabbix-frontend-php : l interface PHP pour le serveur zabbix-agent : pour pouvoir monitorer le serveur lui-même Dans php.ini, il faut changer quelques options : L option max execution time qui fixe le temps maximal d exécution d un script, en secondes doit être mise à 600 pour l installation de zabbix. Il y a aussi l option date.timezone qui doit être renseigner pour pouvoir afficher un temps correct sur le frontend en php. La configuration de l agent est très simple car il y a trois directives à renseigner dans les fichiers zabbix agent.conf zabbi agentd.conf. Dans le premier il faut préciser l adresse du serveur Server=localhost. Dans l autre fichier, il faut renseigner deux champs. L un précisant aussi l adresse du serveur et l autre indiquant le nom de machine qui sera utilisé par le frontend : Server=127.0.0.1 et Hostname=ZabbixServ. Pour ajouter une machine : Menu Configuration -> Hotes -> Créer un h^ote Figure 1: Ajout d une machine Voici le menu pour ajouter une machine. Il faut préciser son nom, son adresse IP, son statut, 25
et pour pouvoir monitorer des services, par exemples snmp, il faut lui ajouter le template snmp (il faut bien entendu que snmp soit installer sur cette machine). Pour afficher l occupation du disque par exemple : Menu Configuration -> Graphiques -> Création de graphiques Figure 2: Ajout d un graphique Comme on le voit sur l image, on peut selectionner différents items pour la machine. Ici, on selectionne Free disk space on /. On peut choisir la couleur afficher sur le graphique, le style de dessin affiché... Pour voir par exemple qu un serveur Web est tombé : Menu Configuration -> Actions -> Créer une action 26
Figure 3: Ajout d un graphique Ici, on peut choisir différent services à monitorer. On clique sur le nom du service pour le monitorer. Dans le menu Métriques -> Evennements, on peut voir le status des services monitorer ainsi que les actions liées au changement de status de certains services. Par exemple si on veut envoyer un mail à l administrateur quand le serveur web d une machine tombe, il faut configurer zabbix de la manière suivante : Menu Administration -> Types Media -> Email Donc dans l onglet Administration / Media Type) Figure 4: Configuration mail SMTP server : l adresse IP ou le nom DNS de ton serveur de mail (SMTP) exemple : 27
smtp.free.fr ici localhost SMTP helo : c est la chaine qu il va renvoyer au serveur pour s identifier ; en général ce n est pas très important ; par exemple zabbixserver ici localhost SMTP email : Email avec laquelle les mails sont envoyé (le From ) ; exemple zabbixserver@free.fr ici julien@xionis.home Ensuite, il faut associer un media Email (une adresse Email de destination) à l utilisateur Zabbix qui va envoyer les mail. La configuration des emails à envoyer se passe dans le menu "Configuration -> Actions qui est décrit au dessus. Figure 5: Configuration mail Ici on voit que si Apache tombe sur le serveur ldap, alors un mail sera envoyé à l utilisateur Admin dont l adresse a été précisé dans le menu Administration -> Utilisateurs. 19. Mon Installation de mon via : sudo apt-get install mon Configuration pour surveillance du service http et envoi de mail en conséquent : hostgroup local localhost equ1 <=définition des h^otes watch local <= surveillance du groupe local service http <= surveillance http monitor http.monitor interval 2m <= On vérifire toutes les 2 min depend SELF::fping period wd {Sun-Sat} <= période de vérification alert mail.alert remi@localhost <= envoi de mail en cas de soucis alertafter 10m <= alert après n minutes 28