Como fazer suporte PCRE2 para Apache 2.4

Gostaria de compartilhar minha experiência de tradução do Apache 2.4 para PCRE2, já que até o PHP 7 suporta a biblioteca PCRE2 há muito tempo, mas a Apache Software Foundation de código aberto ainda não.
Claro, agora provavelmente estou à frente do lançamento do Apache com suporte PCRE2, pois estou usando as fontes do Apache git, o que nos diz que o suporte PCRE2 já é possível na próxima versão, mas para aqueles que já desejam suporte PCRE2 em Apache 2.4, e para quem não quer esperar o lançamento compartilho uma das formas.

O artigo pressupõe que você está coletando todo o software necessário do código-fonte, uma lista de software e versões no momento da redação:

PCRE2-10.33
ABR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41

Etapa um: construir e compilar PCRE2

Vamos pular o momento de baixar as fontes das fontes oficiais, pois isso é muito óbvio, então você descompactou o arquivo, vá para a pasta com as fontes PCRE2 e execute o seguinte comando para suportar UTF:

./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode

Especifique seu caminho no prefixo se não quiser usar o local padrão para instalar a biblioteca:

--prefix=/ваш/путь/до библиотеки

Caso contrário, você coleta sem prefixo.

Os demais comandos indicam a inclusão de suportes para blocos de código PCRE de 8 bits, 16 bits e 32 bits, nesta versão a montagem foi realizada com eles.

E, claro, compilamos isso usando a execução sequencial de comandos:

make
make install

Se tudo estiver bem e a compilação ocorrer sem erros, passe para a próxima etapa.

Etapa dois: conectar a biblioteca PCRE2 ao APR

Como o Apache compila fontes usando APR, precisamos incluir a biblioteca no próprio APR, caso contrário pode haver erros sobre funções desconhecidas nas fontes do Apache, pois usaremos novas funções PCRE2.

Vamos omitir o momento de baixar fontes de fontes oficiais, pois isso é muito óbvio, então você descompactou o arquivo e realizou a configuração do APR:

./configure --prefix=/etc/webserver/apr-170

Naturalmente, você indica seu caminho no prefixo se não quiser usar o local padrão para instalação da biblioteca ou se não especificar:

--prefix=/ваш/путь/до библиотеки

Após concluir a configuração, acesse o diretório: /etc/webserver/srcsrv/apr-1.7.0/build

Ou: /seu/caminho/para a biblioteca/compilação

Encontre o arquivo apr_rules.mk neste diretório e adicione as linhas no final onde:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Conectando a biblioteca:

-lpcre2-8 -L/ваш/путь/до библиотеки pcre2/lib

Salve e vá para o diretório raiz das fontes APR: /seu/caminho/para a biblioteca.

Vamos compilar nosso APR modificado:

make
make install

Se tudo estiver bem e a compilação ocorrer sem erros, passe para a próxima etapa.

Etapa três: construir APR-util para Apache a partir de fontes

Você baixou esta biblioteca da fonte, vá para a pasta raiz do arquivo descompactado com APR-util e digite os seguintes comandos sequencialmente:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/ваш/путь/до библиотеки apr
make
make install

Naturalmente, você indica seu caminho no prefixo se não quiser usar o local padrão para instalação da biblioteca ou se não especificar:

--prefix=/ваш/путь/до библиотеки

Também conectamos nosso APR aqui:

--with-apr=/ваш/путь/до библиотеки apr

Etapa quatro: baixe fontes do Apache git para suportar PCRE2

Importante: baixamos os fontes da última edição do git.

Precisamos baixar duas fontes como ap_regex.h e util_pcre.c, links abaixo:
ap_regex.h
util_pcre.c

Agora vá para o diretório de origem httpd do Apache e construa o Apache com os seguintes comandos:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/ваш/путь/до библиотеки apr --with-apr-util=/ваш/путь/до библиотеки apr-util --with-pcre=/ваш/путь/до библиотеки pcre2/bin/pcre2-config

Naturalmente, você indica seu caminho no prefixo se não quiser usar o local padrão para instalação da biblioteca ou se não especificar:

--prefix=/ваш/путь/до Apache httpd

Você também pode especificar comandos adicionais para construir o Apache a seu critério, ou seja, comandos para ativar ou desativar módulos e bibliotecas.

Em seguida, vamos para nosso diretório de origem Apache httpd, eu tenho isto:

/etc/webserver/srcsrv/httpd-2.4.41

Você naturalmente vai para o seu diretório e substitui no diretório:

/etc/webserver/srcsrv/httpd-2.4.41/include

O arquivo ap_regex.h, que baixamos do Apache git.

Também vamos ao diretório:

/etc/webserver/srcsrv/httpd-2.4.41/server

Substituímos o arquivo util_pcre.c por aquele que baixamos do Apache git

Agora só falta adicionar a conexão PCRE2 no próprio Apache, você precisa encontrar o arquivo ap_config_auto.h, ele está localizado no diretório:

/etc/webserver/srcsrv/httpd-2.4.41/include

No início deste arquivo, insira as seguintes linhas:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Bem, agora estamos prontos para o verdadeiro momento de compilar o Apache httpd com suporte PCRE2.
Vamos ao nosso diretório de origem Apache httpd e compilar isso executando sequencialmente os comandos:

make
make install

Agora, se tudo correu bem e sem erros, então você terá montado e compilado o Apache httpd com suporte PCRE2, o que significa mudanças positivas nos módulos Apache que usam expressões regulares PCRE, uma delas é a reescrita do módulo.

Concluindo, este método possibilita a utilização do PCRE2 antes do lançamento oficial da Apache Software Foundation, espero que uma versão com suporte ao PCRE2 seja lançada em breve.

Além disso, durante o teste do .htaccess padrão, nenhum erro ocorreu, se alguém tiver algum erro, escreva nos comentários.

PS

Fiquei um pouco confuso com a situação de usar duas versões diferentes do PCRE para minha pilha e resolvi consertar.

Fonte: habr.com

Adicionar um comentário