Como facer compatible con PCRE2 para Apache 2.4

Gustaríame compartir a miña experiencia de traducir Apache 2.4 a PCRE2, xa que incluso PHP 7 admitiu a biblioteca PCRE2 durante moito tempo, pero a Apache Software Foundation aínda non o fai.
Por suposto, agora probablemente estou por diante do lanzamento de Apache con soporte para PCRE2, xa que estou usando as fontes do Apache git, o que nos indica que o soporte para PCRE2 xa é posible na próxima versión, pero para aqueles que xa queren soporte para PCRE2 en Apache 2.4, e quen non queira esperar a liberación, comparto unha das formas.

O artigo asume que está a recompilar todo o software necesario do código fonte, unha lista de software e versións no momento de escribir:

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

Primeiro paso: construír e compilar PCRE2

Omitamos o momento de descargar as fontes das fontes oficiais xa que isto é demasiado obvio, polo que desempaquetou o arquivo, vaia ao cartafol coas fontes PCRE2 e execute o seguinte comando para admitir UTF:

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

Especifique o seu camiño no prefixo se non quere utilizar a localización estándar para instalar a biblioteca:

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

En caso contrario, recolles sen prefixo.

Os comandos restantes indican a inclusión de soportes para bloques de código PCRE de 8 bits, 16 bits e 32 bits, nesta versión realizouse a montaxe con eles.

E, por suposto, compilamos isto usando a execución secuencial de comandos:

make
make install

Se todo está ben e a compilación foi sen erros, pasa ao seguinte paso.

Segundo paso: conecte a biblioteca PCRE2 a APR

Dado que Apache compila fontes usando APR, necesitamos incluír a biblioteca na propia APR, se non, pode haber erros sobre funcións descoñecidas nas fontes de Apache, porque usaremos novas funcións PCRE2.

Omitamos o momento de descargar fontes de fontes oficiais xa que isto é demasiado obvio, polo que descomprimiches o arquivo e realizaches a configuración APR:

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

Por suposto, indica o seu camiño no prefixo se non quere utilizar a localización estándar para instalar a biblioteca, ou se non especifica:

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

Despois de completar a configuración, vai ao directorio: /etc/webserver/srcsrv/apr-1.7.0/build

Ou: /your/path/a biblioteca/build

Busca o ficheiro apr_rules.mk neste directorio e engade as liñas ao final onde:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Conectando a biblioteca:

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

Garda e vai ao directorio raíz das fontes APR: /your/path/to the library.

Imos compilar a nosa APR modificada:

make
make install

Se todo está ben e a compilación foi sen erros, pasa ao seguinte paso.

Paso tres: crea APR-util para Apache a partir de fontes

Descargaches esta biblioteca da fonte, vai ao cartafol raíz do arquivo descomprimido con APR-util e introduce os seguintes comandos secuencialmente:

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

Por suposto, indica o seu camiño no prefixo se non quere utilizar a localización estándar para instalar a biblioteca, ou se non especifica:

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

Tamén conectamos o noso APR aquí:

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

Paso catro: descarga fontes de Apache git para soportar PCRE2

Importante: descargamos as fontes da última edición do git.

Necesitamos descargar dúas fontes como ap_regex.h e util_pcre.c, ligazóns a continuación:
ap_regex.h
util_pcre.c

Agora vai ao teu directorio fonte httpd de Apache e crea Apache cos seguintes comandos:

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

Por suposto, indica o seu camiño no prefixo se non quere utilizar a localización estándar para instalar a biblioteca, ou se non especifica:

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

Tamén pode especificar comandos adicionais para construír Apache á súa discreción, refírome aos comandos para activar ou desactivar módulos e bibliotecas.

A continuación imos ao noso directorio fonte httpd de Apache, teño isto:

/etc/webserver/srcsrv/httpd-2.4.41

Vai naturalmente ao teu directorio, substitúeo no directorio:

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

O ficheiro ap_regex.h, que descargamos do git de Apache.

Tamén imos ao directorio:

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

Substituímos o ficheiro util_pcre.c polo que descargamos do Apache git

Agora só queda engadir a conexión PCRE2 no propio Apache, necesitas atopar o ficheiro ap_config_auto.h, que está no directorio:

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

Ao comezo deste ficheiro, insira as seguintes liñas:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Ben, agora estamos preparados para o momento real de compilar Apache httpd con soporte para PCRE2.
Imos ao noso directorio fonte httpd de Apache e compile isto executando secuencialmente os comandos:

make
make install

Agora, se todo saíu ben e sen erros, entón terás un Apache httpd construído e compilado con soporte para PCRE2, o que significa cambios positivos nos módulos Apache que usan expresións regulares PCRE, unha delas é a reescritura do módulo.

En conclusión, este método permite usar PCRE2 antes do lanzamento oficial da Apache Software Foundation, espero que pronto se publique unha versión con soporte para PCRE2.

Ademais, durante a proba do estándar .htaccess, non se produciron erros, se alguén ten algún erro, escriba nos comentarios.

PS

Estaba un pouco confuso pola situación de usar dúas versións diferentes de PCRE para a miña pila e decidín solucionalo.

Fonte: www.habr.com

Engadir un comentario