En mettant à jour un vserver web de Debian Squeeze en Wheezy sur un hôte vserver en Debian Lenny, je suis tombé sur une coquille…. La plupart des services ont correctement redémarré sauf Apache… Il refusait de se lancer… J’ai eu ces erreurs en fonction des options de Listen que j’ai essayé :

[crit] (22)Invalid argument: alloc_listener: failed to get a socket for (empty) Syntax error on line 9 of /etc/apache2/ports.conf: Listen setup failed Action 'start' failed.
Starting web server: apache2no listening sockets available
Invalid argument: alloc_listener: failed to get a socket for 0.0.0.0

Il s’agit d’un problème lié au vserver et la librairie libapr1, utilisée par Apache, qui fait des appels noyau… Ce qui est embêtant pour mon vserver…

Il faut recompiler cette librairie.

Je me suis inspiré du sujet suivant et j’ai eu quelques soucis en chemin : debian – Apache in linux-vserver won’t start, can’t create socket – Server Fault.

Attention que les dépenses sont importantes ~900Mo, veillez à supprimer les paquets de développement par après si c’est un serveur en production.

Réinstaller la libapr1 nécessaire à Apache

$ apt-get install debhelper autoconf autotools-dev uuid-dev doxygen libtool

Pour compiler les sources :

$ apt-get source libapr1
$ tar -xf apr_1.4.6.orig.tar.gz
$ cd apr-1.4.6
$ tar -xf ../apr_1.4.6-3+deb7u1.debian.tar.gz
$ dpkg-buildpackage

Dans mon cas, j’ai eu un souci à la compilation sur le vserver, il y avait besoin de l’environnement /dev/shm, la compilation s’arrêtait sans cela…

if grep -q APR_HAS_POSIXSEM_SERIALIZE.*0 build-i386/include/apr.h ;\
then \
echo "WARNING: This is Linux but configure did not detect POSIX semaphores." ;\
if [ "" = "" ] ;\
then \
echo "ERROR: POSIX semaphores not usable and /dev/shm not mounted." ;\
echo "ERROR: Aborting." ;\
echo "HINT: If you are using pbuilder or cowbuilder, add /dev/shm to BINDMOUNTS" ;\
echo "HINT: in pbuilderrc" ;\
exit 1 ;\
fi ;\
fi
WARNING: This is Linux but configure did not detect POSIX semaphores.
ERROR: POSIX semaphores not usable and /dev/shm not mounted.
ERROR: Aborting.
HINT: If you are using pbuilder or cowbuilder, add /dev/shm to BINDMOUNTS
HINT: in pbuilderrc
make: *** [build-i386/config.status] Erreur 1
dpkg-buildpackage: erreur: debian/rules build a produit une erreur de sortie de type 2

J’ai donc modifié le fichier fstab du vserver dans la configuration du serveur hote :

$ vim /etc/vservers/SERVER/fstab

none    /dev/shm    tmpfs    size=50m,mode=1777    0 0

Et j’ai redémarré le vserver. Pour info, il existe des commandes pour le faire à chaud également.

 

Après compilation réussie :

$ dpkg -i libapr1_1.4.6-3+deb7u1_i386.deb
$ /etc/init.d/apache2 start
[ ok ] Starting web server: apache2.

Notre serveur Apache démarre correctement 🙂

Nettoyage des paquets inutiles

On supprime les paquets qui avaient était nécessaires pour la compilation :

$ apt-get remove debhelper autoconf autotools-dev uuid-dev doxygen libtool && apt-get autoremove && apt-get clean