Durante uma extensa pesquisa e teste para escrever uma pergunta apropriada, digna de troca de pilha, encontrei uma solução: reconstruir o libapr1
pacote dentro do convidado.
No entanto, pensei em publicar essas informações, pois poderiam ser úteis para outras pessoas.
Problema
Quando instalo libapache2-mod-php5
dentro do convidado Wheezy e ele tenta iniciar, recebo o seguinte:
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
Esta é a instalação do pacote intocado inalterado que, por padrão, não consegue inicializar.
Meus testes
De acordo com a documentação oficial, o Listen 80 está realmente bom . Transformar em Listen 127.0.0.1:80
me dá:
[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.
Então, por que o Apache não conseguiu obter um soquete? Eu tenho outros deamons em execução (ou seja, nginx em outra instalação do Wheezy; exim4 escutando na porta 25 na mesma instalação) sem problemas.
Meio Ambiente
Hospedeiro
Debian Lenny em 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.
Hóspede
Debian Wheezy, construído com 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/
Pesquisa até agora
Os internets me forneceram as seguintes coisas até agora:
- Problema no fedorra corrigido com a atualização do APR
- Problema corrigido pela atualização do pacote
- Incompatibilidade do kernel
- Outra solução exigia uma atualização do kernel
Meu maior medo, e esta é minha conclusão atual, é que o apache dentro do servidor virtual depende de algum recurso mais recente do kernel que meu host não fornece. Afinal, o kernel padrão do Wheezy certamente não é tão antigo quanto o meu 2.6.26.
Quero evitar atualizar o kernel do host a todo custo.
Por quê?
- Falta de tempo e conhecimento (o hardware é o servidor HP, não faço ideia do que observar)
- O Wheezy não suporta mais o vserver (fora da caixa; para auto-instalação, veja 1) ...)
- Já está executando servidores vs que precisam estar disponíveis 24/7 (todo o sistema é interno da empresa e não está exposto à Internet)
- Nenhum segundo hardware para realizar testes
Estou disposto a corrigir o Apache
Se for possível descobrir qual é o problema, estou disposto a criar um pacote deb personalizado para minhas missões Wheezy.