Pix, Unix, Agility & Co

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

samedi 2 février 2013

Commandes utiles pour activer un compte github

Pour protéger les synchronisations entre le dépot git local et celui stocké sur github nous utilisons une paire de clé publique/privée. Pour générer ce couple de clés on peut utiliser la commande :

$ ssh-keygen -t rsa -C "mon-nom@mondomaine.fr" -f githubrsa

Il nous faut ensuite déposer la clé publique dans le compte github au moyen de l'interface web. La clé privée est déposée dans : ~/.ssh/

Pour faciliter l'utilisation on définit un alias grace au fichier de config : ~/.ssh/config

 Host github
      Hostname github.com
      Port 22
      User git
      IdentityFile ~/.ssh/githubrsa

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.

jeudi 23 février 2012

Sauvegarde et restauration d'un dépot de code sous Subversion

En supposant que je sauvegarde ainsi le contenu de mon dépot de cote :

/usr/bin/svnadmin dump /var/svn/repos > /home/sauvegarde/sauv_svn/sauv_svn_dev1.bak

La commande pour restaurer cette sauvegarde dans un nouveau dépot sera :

/usr/bin/svnadmin load /var/svn/repos < /home/sauvegarde/sauv_svn/sauv_svn_dev1.bak

C'est presque trop simple

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.

dimanche 3 janvier 2010

Afficher le panneau latéral de Nautilus

Ces jours-ci, j'ai dû ré-installer mon PC suite à un crash disque. Heureusement grâce à smart-notifier sous Gnome et aux utilitaires SMART, j'ai bénéficié d'une alerte assez précoce qui m'a permis de sauvegarder correctement mes données.
En revanche après une réinstallation, il n'en reste pas moins tous les petits réglages de confort à retrouver et à re-mettre en place.
J'ai par exemple l'habitude d'utiliser nautilus le gestionnaire de fichiers de gnome avec un panneau latéral dans lequel je peux visualiser au choix :

  • les raccourcis classiques (dossier perso, bureau, système de fichiers, réseau et corbeille plus des raccourcis personnalisés comme les partages réseaux ou un dossier music...
  • des informations détaillées sur l'élément sélectionné dans la fenêtre principale
  • l'arborescence des fichiers
  • l'historique de mon parcours dans le système de fichier
  • des notes ou des emblèmes qu'en fait je n'utilise jamais.

Eh bien figurez-vous que je n'arrivais pas à remettre en place ce fameux panneau latéral. J'ai dû comparer avec une autre config. pour retrouver l'astuce. En fait il suffit de paramétrer le lanceur, que j'insère dans le tableau de bord supérieur pour accéder, comme avec un raccourcis, à Nautilus. Au lieu de juste demander de lancer nautilus on ajoute l'argument --no-desktop :

nautilus --no-desktop

On peut également noter que le panneau peut être masqué ou affiché au moyen de la touche de raccourci clavier F9.

jeudi 5 mars 2009

VirtualBox c'est génial : surtout avec le NAT et la redirection de ports réseaux

une solution du virtualisation pour les ordinateurs personnels

J'ai découvert, il y a presque un an sur internet VirtualBox, une machine virtuelle qui permet avec un PC ou un Mac d'ailleurs de disposer de plusieurs machines "virtuelles". C'est un outil merveilleux pour tester de nouveaux OS ou même de nouveaux logiciels.
On peut ainsi préserver un ordinateur de tous les jours qui sert pour travailler et dont on ne s'amuse pas à changer la configuration toutes les 5 min. On préserve ainsi la stabilité.
Et dans les machines virtuelles que l'on peut créer en de multiples versions et ainsi installer les dernières nouveautés. Avec le système de snapshot, on va encore plus loin car on peut se préparer une petite configuration impeccable. Puis on fait un snapshot (une sorte de copie) que l'on met de coté. Ensuite on peut tout casser sans aucun remord. Quand plus rien ne marche on reprend une copie du snapshot et on repart pour une nouvelle séance de destruction.

L'avantage c'est qu'entre les 2 il ne s'écoule que le temps de recopier le fichier image et pas celui de configurer un OS entier.

Optimisation de la configuration réseau de la machine virtuelle

Le NAT (Network Adresse Translation) est l'une des solutions pour donner accès au réseau aux différentes machines virtuelles. C'est même la solution utilisée par défaut par la VirtualBox.
Le problème étant que dans ce cas, la machine virtuelle sort sur le réseau (internet par exemple) en étant cachée derrière la machine réelle qui l'héberge. Pour accéder de la machine virtuelle vers l'extérieur tout va bien, en revanche si jamais on veut atteindre la machine virtuelle depuis l'extérieur problème elle n'a pas d'adresse IP, c'est celle de la machine hôte qui apparaît.

Voici donc le problème si on veut prendre le contrôle en ssh de la machine virtuelle ou si l'on veut tester la dernière version d'une application web que l'on est en train de développer, comment faire ?

Voici donc les 3 commandes à passer sur l'ordinateur qui héberge une machine virtuelle. A partir de se moment et dans l'exemple si dessous le port 80 qui correspond au web (site web servi par Apache 2 par exemple) sera accessible via une requête sur le port 8000 de l'ordinateur qui héberge la machine virtuelle.
Ainsi pour accéder au site web à tester on utilisera l'url : http://x.y.z.t:8000/ au lieu de http://x.y.z.t/ car dans notre cas cette url nous emmènerai sur la machine réelle et non sur la machine virtuelle.

hb@R131PC249:~$ VBoxManage setextradata "debian_test01" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestapache2/Protocol" TCP VirtualBox Command Line Management Interface Version 2.0.6 (C) 2005-2008 Sun Microsystems, Inc. All rights reserved.

hb@R131PC249:~$ VBoxManage setextradata "debian_test01" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestapache2/GuestPort" 80
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

hb@R131PC249:~$ VBoxManage setextradata "debian_test01" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestapache2/HostPort" 8000
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Sun Microsystems a racheté cette technologie à l'automne 2008. Je vous garantis que je n'ai aucune action chez eux mais une fois de plus je trouve qu'ils ont fait un très bon choix, en matière d'open-source nous avons pas mal de centres d'intérêts en commun que soit avec :

mercredi 21 janvier 2009

Téléphone et logiciel

Qui aurait cru qu'un téléphone pouvait changer aussi souvent de version de logiciel ?
Je viens de découvrir sur le site de Nokia la manipe pour vérifier la version du software de mon n95. Il faut saisir la combinaison de touche suivante:

*#0000#

et là il me répond :
V 12.0.013
19-06-07
RM-159
Nokia N95 (D5.01)
Ensuite il est expliquer que pour connaître la dernière version disponible du logiciel il faut récupérer le code produit inscrit sur une étiquette sous la batterie de l'engin et le saisir dans le champ de recherche sur le site du constructeur.
Verdict :

Latest available software for Nokia N95, product code 0550349
Version: 30.0.015
Compare numbers

Juste un peu plus de 18 versions majeures de différence, cela me semble énorme. Voici un truc à rajouter à ma todo liste : penser à mettre à jour son téléphone. Il y avait déjà les ordi.

lundi 15 décembre 2008

Le lien entre les noms d'interface réseau et le matériel sous Gnu-Linux

Pour le boulot, nous déployons une même config. à base de GNU-Linux Debian sur des PC destinés à remplir la fonction de serveur de fichiers sur différents sites. Pour gagner un peu temps nous avons cloné la configuration et nous dupliquons le clone sur des machines identiques.
Nous avons alors rencontré le problème suivant : le paramétrage figé sur la machine initiale l'est avec une carte réseau donnée. Or comme vous le savez chaque carte réseau possède une adresse mac (adresse physique) unique qui lui est propre. D'une machine à l'autre cette adresse change avec chaque carte réseau.
Quand nous déployons le clone, le système trouve une nouvelle carte réseau qu'il configure donc sur une nouvelle interface. Par exemple, si la configuration initiale s'appuyait sur eth0, les clones vont utiliser une interface réseau configurer sur eth1.
Il s'agit de la même problématique que lorsqu'on est obligé de changer une carte réseau sur machine par exemple lorsqu'elle a grillé.
Après moult recherches, mon collègue a trouvé une solution dans un fichier de configuration de la forme :
/etc/udev/rules.d/xx-persistent-net-rules
Le contenu de ce fichier ressemble à :

/etc/udev/rules.d# cat 70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.

# PCI device 11ab:4320 (skge)
SUBSYSTEM=="net", DRIVERS=="?*", SYSFS{address}=="00:11:22:33:ee:ff", NAME="eth0"

Quand on déploie l'image, une deuxième ligne s'ajoute pour décrire eth1 avec les paramètre de la nouvelle carte. Il suffit alors de faire un copier-coller de l'adresse MAC dans la première ligne, de supprimer la deuxième ligne puis après une sauvegarde de ce fichier. Un redémarrage et le tour et jouer.

mercredi 10 décembre 2008

Samba, charset utf-8 & compagnie

Et oui une fois le serveur SAMBA configuré, il faut migrer les données depuis l'ancien vers le futur. C'est là qu'on se dit que finalement le travail de configuration c'était hyper simple.
En effet, l'ancien partage de fichiers, était utilisé par des vrais utilisateurs de bons français qui donnent des noms en français à leurs fichiers avec des accents, des espaces et même peut-être des cédilles. C'est la que tout se complique car notre ancien serveur utilisé une locale du type fr_FR avec un jeu de caractère qui devait être iso 8859-15 ou cp850 mais avec l'évolution des technologies c'est l'occasion de passé à UTF-8.
Problème, quand on fait un tar des dossiers à migrer ou même une copie en scp vers le nouveau système dont la locale est paramétrée en : fr_FR.UTF-8 rien ne va plus. Les accents sont remplacés dans le terminal par des hiéroglyphes bizarres ou des '?', là encore c'est pas très grave ça ne concerne que les informaticiens.
Le problème c'est depuis windows sur le partage les accents sont remplacés par des '_' et là je vous raconte pas la tête puis les cris des utilisateurs sans parler de leurs raccourcis qui ne fonctionnent plus, etc...
Après moult googling je tombe enfin sur le petit utilitaire magique qui semble pouvoir résoudre mes problèmes, j'ai nommé : convmv, je connaissais iconv pour traiter certaines chaînes de caractères venant de windows par exemple dans les traitements en bash.
convmv travaille pour sa part sur les nom de fichiers ou de répertoires de façon à migrer d'un jeux de caractères vers un autre. Par exemple, dans mon cas :
convmv -f cp850 -t utf-8 -r --notest ./*
La magie opère je retrouve les accents dans le terminal. En revanche, ce n'est toujours pas ça depuis windows. Point positif nous sommes prêt pour le futur sur le serveur nous n'avons plus que de l'utf-8. C'est la que je me souviens d'un des paramètre du smb.conf. En effet alors que je configurais samba la semaine dernière, j'avais trouvé 3 directives qui ne me semblaient pas avoir beaucoup d'effet :
unix charset = UTF-8
dos charset = UTF-8
display charset = UTF-8
pourquoi ne pas essayer de modifier un peu celle concernant l'affichage car après tout il s'agit juste de permettre à windows d'afficher les noms de fichier à son habitude avec son jeu de caractères habituel. Je tente donc :
unix charset = UTF-8
dos charset = UTF-8
display charset = cp850
suivi d'un petit reload du fichier de conf pour en voir les effets :
/etc/init.d/samba reload
Formidable, ça fonctionne !!!

jeudi 27 novembre 2008

Créer des mots de passe vraiment bizarres

En ce moment au boulot, je configure un serveur de fichiers basé sur SAMBA bien sûr. Et il se trouve que nous avons à y créer des comptes pour des utilisateurs qui ne se connecterons probablement jamais sous GNU-Linux (ils ne savent pas ce qu'ils perdent ;-).
Il me fallait donc trouver des mots de passe vraiement complets pour sécuriser ces comptes. En cherchant sur internet, j'ai trouvé cette petite ligne de commande :
$< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c10
Il est vrai que j'aurais pu choisir une autre méthode pour bloquer ces comptes. Mais bon ça marche c'est le principal non ?

- page 1 de 2