Depois de algumas pesquisas e de brincar com arquivos, descobri o problema.
O problema para mim foi com a compatibilidade retroativa do Upstart com o sysvinit, causando um conflito transparente entre dois arquivos. O Upstart suporta scripts no diretório /etc/init.d
com suporte de compatibilidade com versões anteriores para o sysvinit, já que esse é o diretório antigo usado pelo sysvinit para scripts. No entanto, o Upstart usa /etc/init/
para seus scripts. O uso pretendido é ter um script em um ou outro diretório. Meu problema foi ter os dois (ainda não sei como o script /etc/init/
chegou lá). Como o script em /etc/init
não era um script funcional (estava apontando para o apache exe errado), ele falhou na inicialização, o que foi bom, já que o do init.d estava em execução. Mas uma vez que eu tentei executá-lo através do serviço, o erro se tornou visível.
Eu deletei /etc/init/apache2.conf
e agora faço o serviço do apache2 corretamente no script do init.d, como eu quero.