Como faço para compilar o ultimo apache2 no Ubuntu usando o layout original, configuração e opções de configuração

2

Eu precisava compilar o apache2 no Ubuntu, mas queria que ele usasse a configuração e o layout originais. Levei muito tempo para encontrar as informações para fazer isso, então pensei em criar essa pergunta e responder para ajudar os outros.

Nota: Eu precisava da versão mais recente do Apache que ainda não era suportada pela minha versão do Ubuntu e não queria atualizar minha versão do Ubuntu.

    
por Rian 01.01.2015 / 10:06

1 resposta

1

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:

link

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:

link

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

    
por 01.01.2015 / 10:11