Différences entre les pages « Roundcube » et « Lxc »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
imported>XavierBéguin
(Précisions sur les prérequis)
 
 
Ligne 1 : Ligne 1 :
Cette page rassemble quelques informations sur l'installation de Roundcube, un webmail simple à l'interface moderne et soignée. Certains détails donnés sont spécifiques à une installation sous Debian GNU/Linux, mais la plupart des informations sont valables sur tout système GNU/Linux.
+
== Construire un serveur LXC ==
  
== Téléchargement ==
+
LXC offre les possibilités d'un chroot avec quelques points en plus:
 +
* séparation des process (une sorte de chroot des process)
 +
* virtualisation du réseau (il est possible de simuler un circuit réseau avec
 +
les bridges (brctl) le routage/NAT (iptables)
  
Roundcube est disponible sur le site http://www.roundcube.net/.
+
LXC souffre encore de quelques problèmes de jeunesse:
 +
* lxc-stop est un vilain kill -9 -1 exécuté dans le container. Il faudrait que lxc-stop fasse un shutdown propre (init 0)
 +
* le système de fichier /sys montre des éléments faisant partie de l'hôte et n'est pas encore suffisamment étanche.
  
Comme toute application web, il est très important de la maintenir bien à jour et d'installer les nouvelles version qui corrigent des failles de sécurité. Vous serez averti de l'arrivé d'une nouvelle version en suivant le flux RSS http://sourceforge.net/export/rss2_projnews.php?group_id=139281
 
  
== Installation ==
+
* Construction de la machine hôte [[lxc_host]]
 +
* Construction/conversion de la machine invitée [[lxc_guest]]
  
Commencez par désarchiver l'application (je modifie aussi le propriétaire des droits qui sont différents dans le tar):
+
== Todo ==
tar xvzf roundcubemail-0.X.Y.tar.gz
+
=== Questions résolues (et développées) ===
chown -R root: roundcubemail-0.X.Y
+
* quels scripts enlever dans /etc/rc{S,3,0}.d et comment cf [[lxc_guest]]
  
Pour les instructions d'installation, reférez-vous au fichier INSTALL fourni dans le répertoire Roundcube.
+
=== Questions résolues (a développer) ===
Vous trouverez aussi un bon guide d'installation (en anglais) à cette adresse http://trac.roundcube.net/wiki/Howto_Install
+
* mise en place du réseau avec veth, brctl et consort
 +
* modif de base: inittab et /dev
 +
* lxc-console sans mot de passe (modif inittab)
  
=== Prérequis ===
+
=== Questions partiellement résolues ===
 +
* Serveur IMAP et inotify (FAM/gamin) ? est ce que le serveur IMAP est prévenu de manière efficace de l'arrivée de nouveaux mails?
 +
* Arreter proprement un serveur lxc depuis l'hote (methode ssh, lxc-console + expect, lxc-attach quand ca voudra bien marcher ?)
  
Roundcube a besoin des modules PHP suivants:
+
=== liens ===
* fileinfo : sous Squeeze, ce module est intégré à PHP (donc pas besoin de paquet supplémentaire). Sous Lenny, aucun paquet ne le fournit, mais on pourra en créer un à l'aide du paquet ''dh-make-php''.
+
* le site de developpement lxc: [[http://lxc.sourceforge.net]]
* intl : fourni sous Squeeze par le paquet ''php5-intl'' (il est optionel et utile uniquement pour les fonctions d'internationalisation)
+
* un howto bien fourni: [[http://lxc.teegra.net]]
* mcrypt : fourni par le paquet php5-mcrypt. (module optionnel)
+
* le wiki debian / lxc: [[http://wiki.debian.org/LXC]]
* modules PEAR nécesaires (une version est fournie avec Roundcube s'ils ne sont pas installé sur le système; vous n'êtes donc pas obligés des les installer):
+
* conversion vserver -> lxc : [[http://schmidi2.blog.com/2010/10/25/migrating-from-vserver-to-lxc/]]
** MDB : paquet php-mdb2. Vous aurez aussi besoni des paquets dépendant de votre système de base de données :php-mdb2-driver-pgsql ou php-mdb2-driver-mysql.
+
* un autre site interessant: [[http://www.jotschi.de/?p=554]]
** Mail_Mime : paquet php-mail-mime
 
** Net_Smtp : paquet php-net-smtp
 
 
 
Les modules apache suivant doivent être activés si vous souhaitez profiter de la compression et de la mise en cache de certaines pages: mod_deflate, mod_expires, et mod_headers. Sous debian, vous pouvez les activer en exécutant les commandes suivantes:
 
a2enmod deflate
 
a2enmod expires
 
a2enmod headers
 
/etc/init.d/apache2 reload
 
 
 
D'autres prérequis sont précisés dans le fichier ''INSTALL'' fourni par Roundcube, notamment la configuration PHP suivante:
 
* error_reporting E_ALL & ~E_NOTICE (ou moins)
 
* memory_limit > 16MB (augmenter si nécessaire pour le support de grosses pièces jointes)
 
* file_uploads enabled (pour l'upload des pièces jointes)
 
* session.auto_start disabled
 
* zend.ze1_compatibility_mode disabled
 
* suhosin.session.encrypt disabled
 
* mbstring.func_overload disabled
 
 
 
=== Configuration PHP ===
 
 
 
La configuration PHP est réalisée via les directives du fichier ''.htaccess'' fourni dans le répertoire de roundcube.
 
 
 
Si vous utilisez Apache 2.2.9 ou supérieur, il est conseillé de changer le fichier ''.htaccess'': décommentez la ligne suivante et modifiez le mot « append » en « merge » pour éviter certains de ducplication d'en-tête HTTP (si vous ne le
 
faites pas, ça n'a pas de grosse conséquence):
 
#Header append Cache-Control public env=!NO_CACHE
 
devient donc:
 
Header merge Cache-Control public env=!NO_CACHE
 
 
 
=== Droits des répertoires ===
 
 
 
Il faut s'assurer que les répertoires ''temp/'' et ''logs/'' sont modifiables par l'utilisateur système utilisé par le serveur web. La façon de permettre cela dépend de votre configuration, mais sous Debian, cela signifie généralement que l'utilisateur www-data doit avoir les droits d'écrire dans ces répertoires, donc il faut par exemple utiliser les commandes:
 
chgrp www-data {temp,logs}; chmod g+w {temp,logs}
 
 
 
=== Création de la base de données ===
 
 
 
On utilise dans notre cas un serveur MySQL. Connectez-vous sous un utilisateur administrateur (généralement root), et
 
effectuez les requêtes indiqués dans le guide d'installation :
 
 
 
CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'votremotdepasse';
 
 
 
Importer ensuite les données initiales manuellement, par exemple avec la commande suivante (ajoutez l'option ''-p''):
 
mysql roundcubemail < SQL/mysql.initial.sql
 
 
 
=== Configuration de l'application ===
 
 
 
L'installation continue en se rendant à l'URL <tt><nowiki>http://url-vers-votre-installation-roundcube/installer/</nowiki></tt> où il suffit de suivre les instructions.
 
 
 
Le script d'installation indiquera une heure incorrecte. Pour corriger cela, on peut changer le fuseau horaire utilisé par PHP. Dans notre cas, il pourra le configurer à l'heure de la France avec la commande suivante:
 
cat <<_EOD_ > /etc/php5/apache2/conf.d/local.ini
 
date.timezone = "Europe/Paris"
 
_EOD_
 
/etc/init.d/apache2 restart
 
 
 
La documentation recommande d'exécuter le script « bin/cleandb.sh » périodiquement pour supprimer tous les enregistrements marqués comme effacés. Pour cela, mettez en place un job cron. J'ai l'habitude, par souci de lisibilité, de regrouper tous les jobs cron que je mets en place sur un serveur dans un même fichier ''/etc/cron.d/local''. Pour ajouter le nouveau job (qui s'exécutera à 1h02 tous les jours), je peux donc utiliser la commande suivante (pensez à adapter le chemin votre votre répertoire d'installation de roundcube):
 
echo -e '\n# Nettoyage roundcube\n2 1 * * *  root    /var/www/roundcube/bin/cleandb.sh' >> /etc/cron.d/local
 
 
 
=== Sécurisation miimale après installation ===
 
 
 
Après configuration, n'oubliez pas de supprimer le répertoire ''installer/'' sous peine de laisser l'accès à des mots de passe (et/ou désactivez l'option « enable_installer» dans main.inc.php).
 
 
 
De même, assurez-vous que l'accès aux répertoires ''config/'', ''temp/'', et ''logs/'' est bien interdit (ceci est normalement pris en charge par les directives apache dans les fichiers .htaccess de ces répertoires).
 
 
 
= Mise à jour =
 
 
 
En ce qui concerne la mise à jour, le fichier UPGRADING fourni par Roundcube propose de remplacer les fichiers dans la plupart des répertoires de votre installation, puis de lancer la mise à jour.
 
 
 
Personnellement, je préfère recopier les fichiers nécessaires vers un nouveau répertoire d'installation pour mieux maîtriser les fichiers que je modifie par rapport aux fichiers fournis par l'application.
 
 
 
Voici donc la procédure de mise à jour que je suis (il s'agit bien sûr d'un exemple de mise à jour de la version 0.5.2 à la 0.5.4. Adaptez les numéros de version à votre cas):
 
 
 
* 1. Désarchivage de l'application dans un nouveau répertoire
 
tar xvzf roundcubemail-0.5.4.tar.gz
 
chown -R root: roundcubemail-0.5.4
 
chgrp www-data roundcubemail-0.5.4/{temp,logs}
 
chmod g+w roundcubemail-0.5.4/{temp,logs}
 
 
 
* 2. Copie des fichiers de configuration (les seules fichiers qui ont été modifiés dans mon cas. Si vous avez un thème particulier, vous voudrez probablement aussi le recopier):
 
cp roundcubemail-0.5.2/config/{db.inc.php,main.inc.php} roundcubemail-0.5.4/config/
 
 
 
* 3. Lancement de la procédure de mise à jour
 
** soit par le web. Dans ce cas il faut modifier le fichier ''config/main.inc.php'' pour passer la variable ''enable_installer'' à ''true'', puis rendez-vous sur <tt><nowiki>http://url-vers-votre-installation-roundcube/installer/</nowiki></tt>.
 
** ou bien en ligne de commande, auquel cas il suffit de lancer la commande:
 
./roundcubemail-0.5.4/bin/update.sh
 
 
 
* 4. Mise à jour de la base de données. Cette étape n'est nécessaire que si le script ou la page de mise à jour ci-dessus vous l'a suggéré:
 
./SQL/[votretypedebdd].update.sql
 
 
 
* 5. Sécurisation: remettre enable_installer à false dans config/main.inc.php si vous l'avez modifié
 
 
 
* 6. Évolution de la configuration PHP: vérifier éventuellement les directives dans .htaccess qui peuvent avoir évolué.
 
 
 
Votre installation Roundcube est à jour. Connectez-vous pour vérifiez que tout fonctionne bien.
 

Version du 8 mars 2012 à 19:03

Construire un serveur LXC

LXC offre les possibilités d'un chroot avec quelques points en plus:

  • séparation des process (une sorte de chroot des process)
  • virtualisation du réseau (il est possible de simuler un circuit réseau avec

les bridges (brctl) le routage/NAT (iptables)

LXC souffre encore de quelques problèmes de jeunesse:

  • lxc-stop est un vilain kill -9 -1 exécuté dans le container. Il faudrait que lxc-stop fasse un shutdown propre (init 0)
  • le système de fichier /sys montre des éléments faisant partie de l'hôte et n'est pas encore suffisamment étanche.


  • Construction de la machine hôte lxc_host
  • Construction/conversion de la machine invitée lxc_guest

Todo

Questions résolues (et développées)

  • quels scripts enlever dans /etc/rc{S,3,0}.d et comment cf lxc_guest

Questions résolues (a développer)

  • mise en place du réseau avec veth, brctl et consort
  • modif de base: inittab et /dev
  • lxc-console sans mot de passe (modif inittab)

Questions partiellement résolues

  • Serveur IMAP et inotify (FAM/gamin) ? est ce que le serveur IMAP est prévenu de manière efficace de l'arrivée de nouveaux mails?
  • Arreter proprement un serveur lxc depuis l'hote (methode ssh, lxc-console + expect, lxc-attach quand ca voudra bien marcher ?)

liens

  • le site de developpement lxc: [[1]]
  • un howto bien fourni: [[2]]
  • le wiki debian / lxc: [[3]]
  • conversion vserver -> lxc : [[4]]
  • un autre site interessant: [[5]]