During extensive research and testing to write a proper question worthy of stackexchange I found a solution: rebuild the libapr1
package inside the guest.
I thought I'd nevertheless post this information as it could be useful to others.
Problem
When I install libapache2-mod-php5
inside the Wheezy guest and it tries to start up, I get the following:
root@test01:~# /usr/sbin/apache2ctl start
[crit] (22)Invalid argument: alloc_listener: failed to get a socket for (null)
Syntax error on line 9 of /etc/apache2/ports.conf:
Listen setup failed
Action 'start' failed.
The Apache error log may have more information.
root@test01:~# tail /var/log/apache2/error.log
root@test01:~#
root@test01:~# head -n 9 /etc/apache2/ports.conf|tail -n 1
Listen 80
This is the unchanged pristine package installation which by default doesn't manage to start up.
My testing
According to the official documentation, Listen 80 is actually fine. Turning it into Listen 127.0.0.1:80
gives me:
[crit] (22)Invalid argument: alloc_listener: failed to get a socket for 127.0.0.1
Syntax error on line 9 of /etc/apache2/ports.conf:
Listen setup failed
Action 'start' failed.
So why would Apache fail to get a socket? I've other deamons running (i.e. nginx on other Wheezy installation; exim4 listening on port 25 on the same installation) without problems.
Environment
Host
Debian Lenny on 2.6.26-2-vserver-amd64
# vserver-info
Versions:
Kernel: 2.6.26-2-vserver-amd64
VS-API: 0x00020303
util-vserver: 0.30.216-pre2772; Dec 13 2008, 04:56:19
Features:
CC: gcc, gcc (Debian 4.3.2-1) 4.3.2
CXX: g++, g++ (Debian 4.3.2-1) 4.3.2
CPPFLAGS: ''
CFLAGS: '-Wall -g -O2 -std=c99 -Wall -pedantic -W -funit-at-a-time'
CXXFLAGS: '-g -O2 -ansi -Wall -pedantic -W -fmessage-length=0 -funit-at-a-time'
build/host: x86_64-pc-linux-gnu/x86_64-pc-linux-gnu
Use dietlibc: yes
Build C++ programs: yes
Build C99 programs: yes
Available APIs: v13,net,v21,v22,v23,netv2
ext2fs Source: e2fsprogs
syscall(2) invocation: alternative
vserver(2) syscall#: 236/glibc
crypto api: beecrypt
use library versioning: yes
Paths:
prefix: /usr
sysconf-Directory: /etc
cfg-Directory: /etc/vservers
initrd-Directory: $(sysconfdir)/init.d
pkgstate-Directory: /var/run/vservers
vserver-Rootdir: /var/lib/vservers
Assumed 'SYSINFO' as no other option given; try '--help' for more information.
Guest
Debian Wheezy, built with vserver $VSERVER build -m debootstrap --hostname $VSERVER --netdev eth0 --context $CONTEXT --interface v$CONTEXT=x.y.z.$CONTEXT/zz -- -d wheezy -m http://apt-proxy:9999/debian/
Research so far
The internets provied me with the following things so far:
- Problem on fedorra fixed by upgrading APR
- Problem fixed by upgrading package
- Kernel incompatibility
- Another solution required a kernel upgrade
My greatest fear, and this is my current conclusion, is that apache inside the virtual server depends on some newer kernel feature which my host doesn't provide. After all, the Wheezy default kernel certainly isn't as old as my 2.6.26.
I want to avoid upgrading the host kernel at all costs.
Why?
- Lack of time and knowledge (hardware is HP server, no idea what to watch out)
- Wheezy does not support vserver anymore (out of the box; for self-installation see 1) ...)
- Already running vservers which are required to be available 24/7 (the whole system is company internal and not exposed to the internet)
- No second same hardware to perform testing
I'm willing to patch Apache
If it's possible to figure out what the problem is, I'm wiling to build a custom deb package for my Wheezy quests.