Preâmbulo
Isso funcionou para mim. Se houver uma maneira mais simples, tenho certeza que você vai me informar.
Em teoria, essas etapas devem funcionar para qualquer distribuição do Linux, você só precisa encontrar as opções de configuração originais que são usadas para compilar o apache para sua distribuição. Talvez você possa adicionar comentários a essa resposta sobre onde encontrou as opções.
A importante opção é:
--enable-layout=Debian
O Debian pode ser alterado para qualquer um dos layouts suportados no arquivo config.layout no diretório de compilação do apache, as opções são definidas como:
<Layout x>
...
</Layout>
Onde x seria a opção de layout. Tente googling "--enable-layout = x", onde x é a sua distribuição para encontrar suas opções. Tente encontrar as opções originais usadas pela sua distro e não algumas sugestões aleatórias.
EDIT: Como mencionado pelo falsificador, o problema com isso é que quando você atualiza usando o apt e há uma nova versão do apache2, a versão compilada será sobrescrita. Sua sugestão de construir um novo deb é boa. Infelizmente, devido a vários problemas de dependência de debings que são muito trabalhosos, não consegui fazê-lo. No entanto, sugiro que você tente essa rota primeiro, isso deve ajudá-lo:
Eu optei por mantê-lo como está, no entanto, eu agarrei o apache2 para que ele não seja atualizado até que eu esteja pronto para liberar a retenção. Alternativamente, você pode simplesmente remover o apache da máquina e adicioná-lo novamente quando estiver pronto.
Para segurar:
sudo apt-mark hold apache2
Para soltar:
sudo apt-mark unhold apache2
Também sugiro que você faça um clone do servidor que deseja alterar, trabalhe no processo no clone e faça-o funcionar antes de tentar em um ambiente de produção. Quebrar o apache por um dia ou mais em um ambiente de produção não é um estresse que você precisa em sua vida. Aqui é onde as máquinas virtuais são ótimas, tire um instantâneo e crie uma nova instância a partir do instantâneo. Ou replique o ambiente que você deseja alterar e faça as alterações lá.
Eu uso o oceano digital, eles rock, use este link para obter $ 10 de desconto na sua assinatura. Isenção de responsabilidade Eu recebo $ 25 do meu:
Aqui está como fazer isso no ubuntu como prometido
Isso pressupõe que você já tenha a versão padrão do apache instalada em seu sistema por ter executado anteriormente:
sudo apt-get install apache2
e você executou
sudo apt-get upgrade
Para atualizar todos os pacotes para o mais recente, incluindo o apache.
Se tiver havido grandes alterações na configuração da sua versão para a versão mais recente do apache, você mesmo precisará fazer essas alterações. Isso pode demorar um pouco, daí a sugestão de tentar isso em um clone do servidor, como mencionado no preâmbulo.
Você precisa instalar as dependências para fazer a compilação
sudo apt-get build-dep apache2
Você precisa fazer o download da fonte do apache e descompactá-la. Isso será chamado de diretório de compilação.
Faça backup de sua configuração atual: NÃO PASSE ESTE PASSO
sudo cp -r /etc/apache2 ~/apache2_conf_back
Você precisa estabelecer o nome do seu código de lançamento:
sudo cat /etc/lsb-release
A minha é confiável
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
Você deve então ser capaz de substituir as 2 ocorrências da palavra "trusty" no seguinte url para obter as opções usadas para construir a versão do apache do seu release
bazaar.launchpad.net/~ubuntu-branches/ubuntu/trusty/apache2/trusty/view/head:/debian/rules
Eu usei as opções definidas para as variáveis "AP2_COMMON_CONFARGS" e "AP2_worker_CONFARGS". Além disso, adicionei as opções:
--with-pcre=/usr \
--enable-mpms-shared=all \
--enable-unixd=static \
Como acabei tentando algumas vezes para acertar, criei o seguinte arquivo no diretório de compilação do apache que eu corria toda vez. Chame isso de myconfig.sh
#!/bin/bash
./configure \
--with-pcre=/usr \
--enable-mpms-shared=all \
--enable-unixd=static \
--enable-layout=Debian --enable-so \
--with-program-name=apache2 \
--with-ldap=yes --with-ldap-include=/usr/include \
--with-ldap-lib=/usr/lib \
--with-suexec-caller=www-data \
--with-suexec-bin=/usr/lib/apache2/suexec \
--with-suexec-docroot=/var/www \
--with-suexec-userdir=public_html \
--with-suexec-logfile=/var/log/apache2/suexec.log \
--with-suexec-uidmin=100 \
--enable-suexec=shared \
--enable-log-config=static --enable-logio=static \
--enable-version=static \
--with-apr=/usr/bin/apr-1-config \
--with-apr-util=/usr/bin/apu-1-config \
--with-pcre=yes \
--enable-pie \
--enable-authn-alias=shared --enable-authnz-ldap=shared \
--enable-disk-cache=shared --enable-cache=shared \
--enable-mem-cache=shared --enable-file-cache=shared \
--enable-cern-meta=shared --enable-dumpio=shared --enable-ext-filter=shared \
--enable-charset-lite=shared --enable-cgi=shared \
--enable-dav-lock=shared --enable-log-forensic=shared \
--enable-ldap=shared --enable-proxy=shared \
--enable-proxy-connect=shared --enable-proxy-ftp=shared \
--enable-proxy-http=shared --enable-proxy-ajp=shared \
--enable-proxy-scgi=shared \
--enable-proxy-balancer=shared --enable-ssl=shared \
--enable-authn-dbm=shared --enable-authn-anon=shared \
--enable-authn-dbd=shared --enable-authn-file=shared \
--enable-authn-default=shared --enable-authz-host=shared \
--enable-authz-groupfile=shared --enable-authz-user=shared \
--enable-authz-dbm=shared --enable-authz-owner=shared \
--enable-authnz-ldap=shared --enable-authz-default=shared \
--enable-auth-basic=shared --enable-auth-digest=shared \
--enable-dbd=shared --enable-deflate=shared \
--enable-include=shared --enable-filter=shared \
--enable-env=shared --enable-mime-magic=shared \
--enable-expires=shared --enable-headers=shared \
--enable-ident=shared --enable-usertrack=shared \
--enable-unique-id=shared --enable-setenvif=shared \
--enable-status=shared \
--enable-autoindex=shared --enable-asis=shared \
--enable-info=shared --enable-cgid=shared \
--enable-dav=shared --enable-dav-fs=shared \
--enable-vhost-alias=shared --enable-negotiation=shared \
--enable-dir=shared --enable-imagemap=shared \
--enable-actions=shared --enable-speling=shared \
--enable-userdir=shared --enable-alias=shared \
--enable-rewrite=shared --enable-mime=shared \
--enable-substitute=shared --enable-reqtimeout=shared;
Pare o apache atual
/etc/init.d/apache2 stop
Para construir e instalar o apache, execute os seguintes comandos no diretório de criação
./myconfig.sh
make
make install
Restaure sua configuração do apache. Espero que você apoiou sua configuração como descrito antes.
sudo rm -rf /etc/apache2
sudo cp -r ~/apache2_conf_back /etc/apache2
Eu precisava fazer os caminhos de inclusão absolutos em /etc/apache2/apache2.conf, os seguintes comandos fazem isso no vim
:%s/^IncludeOptional /IncludeOptional \/etc\/apache2\//
:%s/^Include /Include \/etc\/apache2\// /
Eu também precisei mudar o caminho para o envvars em / usr / sbin / apache2ctl para / etc / apache2 / envvars
Em seguida, reinicie o apache
/etc/init.d/apache2 start
Espero que isso funcione para você, se houver algum erro de sintaxe, por favor me avise para que eu possa corrigi-los. Muitos deles foram reescritos da memória.
Boa sorte!
Agradecimentos especiais a jrwren por seu post que foi a peça que faltava para o meu quebra-cabeça:how-to-build-configure-options-latest-apache-on-ubuntu