Como habilitar o suporte PCRE2 para o Apache 2.4

Quero compartilhar minha experiência na tradução do Apache 2.4 para PCRE2, uma vez que até o PHP 7 já suporta a biblioteca PCRE2 há bastante tempo, enquanto a open source Apache Software Foundation ainda não o fez.
Claro, agora provavelmente estou antecipando o lançamento do Apache com suporte ao PCRE2, já que estou usando os fontes do git do Apache, o que indica que o suporte ao PCRE2 pode já estar na próxima versão. Mas para aqueles que desejam suporte ao PCRE2 no Apache 2.4 agora e não querem esperar pelo lançamento, compartilho um dos métodos.

Este artigo presume que você está compilando todo o software necessário a partir do código-fonte. A lista de software e versões no momento da redação do artigo:

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

Passo um: compilar e instalar o PCRE2

Vamos pular a parte de baixar os fontes dos sites oficiais, pois isso é muito óbvio. Assim, você descompactou o arquivo, acessa a pasta com os fontes do PCRE2 e executa o seguinte comando para suporte a UTF:

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

No prefixo, você indica seu caminho se não quiser usar o local padrão para a instalação da biblioteca:

--prefix=\/seu\/caminho\/até a biblioteca

Caso contrário, compile sem prefixo.

Os demais comandos especificam a inclusão de suporte aos blocos de código PCRE de 8, 16 e 32 bits, nesta variante, a compilação foi realizada com eles.

E, é claro, compilamos isso com a execução sequencial dos comandos:

make
make install

Se tudo estiver normal e a compilação foi feita sem erros, passamos para o próximo passo.

Passo dois: conectar a biblioteca PCRE2 no APR

Como o Apache compila os fontes usando o APR, precisamos conectar a biblioteca no próprio APR, caso contrário, podem ocorrer erros de funções desconhecidas nos fontes do Apache, pois usaremos novas funções do PCRE2.

Vamos pular a parte de baixar os fontes dos sites oficiais, já que isso é muito óbvio. Assim, você descompactou o arquivo e executou a configuração do APR:

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

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

--prefix=\/seu\/caminho\/até a biblioteca

Após a configuração, vá para o diretório: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build

Ou: \/seu\/caminho\/até a biblioteca\/build

Encontre o arquivo apr_rules.mk nesse diretório e adicione ao final da linha onde:

EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl

Conectando a biblioteca:

-lpcre2-8 -L\/seu\/caminho\/até a biblioteca pcre2\/lib

Estamos indo para o diretório raiz dos fontes do APR: /seu/caminho/para a biblioteca.

Compilamos nosso APR modificado:

make
make install

Se tudo estiver normal e a compilação foi feita sem erros, passamos para o próximo passo.

Passo três: compilar os fontes do APR-util para o Apache

Você baixou esta biblioteca da fonte oficial, vá para a pasta raiz do arquivo descompactado com o APR-util e insira os seguintes comandos, um por um:

./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/seu/caminho/para a biblioteca apr
make
make install

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

--prefix=\/seu\/caminho\/até a biblioteca

Aqui também conectamos nosso APR:

--with-apr=/seu/caminho/para a biblioteca apr

Passo quatro: baixamos os fontes do git do Apache para suporte ao PCRE2

Importante: Baixamos os fontes da versão mais recente do git.

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

Agora vamos para o seu diretório de fontes do Apache httpd e compilamos o Apache com os seguintes comandos:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/seu/caminho/para a biblioteca apr --with-apr-util=/seu/caminho/para a biblioteca apr-util --with-pcre=/seu/caminho/para a biblioteca pcre2/bin/pcre2-config

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

--prefix=/seu/caminho/para Apache httpd

Além disso, comandos adicionais para a construção do Apache podem ser indicados conforme sua preferência, referindo-se a comandos para ativar ou desativar módulos e bibliotecas.

Em seguida, vá para o seu diretório de fontes do Apache httpd, no meu caso é:

/etc/webserver/srcsrv/httpd-2.4.41

Você naturalmente acessa seu diretório, substituindo no diretório:

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

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

Também vamos para o diretório:

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

Substituímos o arquivo util_pcre.c, pelo que baixamos do git do Apache.

Agora falta adicionar a conexão do PCRE2 ao próprio Apache, é necessário encontrar o arquivo ap_config_auto.h, que está no diretório:

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

No começo deste arquivo, insira as seguintes linhas:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Agora estamos prontos para o verdadeiro momento da compilação do Apache httpd com suporte ao PCRE2.
Vamos para o seu diretório de fontes do Apache httpd e compilamos isso executando os comandos sequencialmente:

make
make install

Agora, se tudo correu bem e sem erros, você terá um Apache httpd compilado com suporte ao PCRE2, o que significa melhorias positivas nos módulos do Apache que utilizam expressões regulares PCRE, um deles é o módulo rewrite.

Em conclusão, este método permite o uso do PCRE2 antes do lançamento oficial pela Apache Software Foundation, espero que em breve a versão com suporte ao PCRE2 seja lançada.

Além disso, durante os testes dos .htaccess padrão, não ocorreram erros, se alguém encontrar erros, escreva nos comentários.

P.S.

A situação de usar duas versões diferentes do PCRE me deixou um pouco preocupado, então decidi corrigir isso.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster