Como fazer o suporte PCRE2 para o Apache 2.4

Quero compartilhar minha experiência na tradução do Apache 2.4 para o PCRE2, já que até o PHP 7 oferece suporte à biblioteca PCRE2 e a Apache Software Foundation de código aberto ainda não está lá.
É claro que provavelmente estou à frente do lançamento do Apache com suporte ao PCRE2 agora, já que uso as fontes da área geográfica do Apache, que nos informa sobre o suporte ao PCRE2 já é possível no próximo lançamento, mas para quem já deseja suporte para o PCRE2 no Apache 2.4 e não quer esperar liberação compartilhando uma das maneiras.

O artigo pressupõe que você colete todo o software necessário a partir da fonte, uma lista de software e versões no momento da redação deste documento:

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

Etapa 1: criar e compilar o PCRE2


Omitiremos o momento de baixar a fonte das fontes, pois é muito óbvio. Assim, você descompactou o arquivo morto, foi para a pasta com a fonte PCRE2 e executou o seguinte comando para oferecer suporte à UTF:

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

No prefixo, especifique seu caminho se não desejar usar o local padrão para instalar a biblioteca:

 --prefix=///  

Caso contrário, colete sem um prefixo.

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

E, é claro, compilamos esse caso usando a execução sequencial de comandos:

 make make install 

Se todas as regras e compilação ocorrerem sem problemas, vá para a próxima etapa.

Etapa 2: conectar a biblioteca PCRE2 ao APR


Como o Apache compila as fontes usando APR, precisamos conectar a biblioteca na própria APR, caso contrário, pode haver erros sobre funções desconhecidas nas fontes Apache, porque usaremos as novas funções PCRE2.

Omitiremos o momento de baixar a fonte das fontes, pois é muito óbvio. Assim, você desempacotou o arquivo e configurou o APR:

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

Naturalmente, indique seu caminho no prefixo se você não quiser usar o local padrão para instalar a biblioteca ou não especificar:

 --prefix=///  

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

Bem, ou: / your / path / para a biblioteca / build

Localize o arquivo apr_rules.mk neste diretório e adicione no final da linha onde:

 EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl 

Conexão de biblioteca:

 -lpcre2-8 -L///  pcre2/lib 

Salve, vá para o diretório raiz das fontes APR: / your / path / para a biblioteca.

Compile nosso APR modificado:

 make make install 

Se todas as regras e compilação ocorrerem sem problemas, vá para a próxima etapa.

Etapa 3: Criar APR-util para Apache a partir da fonte


Você baixou esta biblioteca do escritório de origem, acesse a pasta raiz do arquivo descompactado com APR-util e insira os seguintes comandos em sequência:

 ./configure --prefix=/etc/webserver/apr-util-161 --with-apr=///  apr make make install 

Naturalmente, indique seu caminho no prefixo se você não quiser usar o local padrão para instalar a biblioteca ou não especificar:

 --prefix=///  

Também aqui conectamos nosso APR:

 --with-apr=///  apr 

Etapa 4: Baixar fontes do Apache Git para oferecer suporte ao PCRE2


Importante: Baixe o código-fonte da versão mais recente do gita.

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

Agora vamos ao nosso diretório de origem httpd do Apache e construímos 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, indique seu caminho no prefixo se você não quiser usar o local padrão para instalar a biblioteca ou não especificar:

 --prefix=/// Apache httpd 

Além disso, especifique comandos adicionais para a construção do Apache a seu critério, quero dizer os comandos para ativar a desativação de módulos e bibliotecas.

Em seguida, vá para o diretório de origem httpd do Apache, tenho o seguinte:

 /etc/webserver/srcsrv/httpd-2.4.41 

Você naturalmente vai para o seu diretório, substitua no diretório:

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

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

Acesse também o diretório:

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

Substitua o arquivo util_pcre.c pelo Apache que baixamos de

Agora resta adicionar a conexão PCRE2 no próprio Apache; você precisa encontrar o arquivo ap_config_auto.h, 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 para PCRE2.
Vamos ao nosso diretório de origem httpd Apache, compilamos este caso usando a execução sequencial de comandos:

 make make install 

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

Concluindo, esse método possibilita o uso do PCRE2 antes do lançamento 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 erros, escreva nos comentários.

PS


Fiquei um pouco incomodado com a situação de usar duas versões diferentes do PCRE para minha pilha e decidi corrigi-lo.

Source: https://habr.com/ru/post/pt474556/


All Articles