PCRE2-ondersteuning maken voor Apache 2.4

Ik wil graag mijn ervaring delen met het vertalen van Apache 2.4 naar PCRE2, aangezien zelfs PHP 7 de PCRE2-bibliotheek al lange tijd ondersteunt, maar de open source Apache Software Foundation nog steeds niet.
Natuurlijk loop ik nu waarschijnlijk voor op de Apache-release met PCRE2-ondersteuning, aangezien ik de bronnen uit de Apache git gebruik, die ons vertelt dat PCRE2-ondersteuning al mogelijk is in de volgende release, maar voor degenen die PCRE2-ondersteuning al willen in Apache 2.4, en voor wie niet wil wachten op de release deel ik een van de manieren.

In het artikel wordt ervan uitgegaan dat u alle benodigde software verzamelt uit de broncode, een lijst met software en versies op het moment van schrijven:

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

Stap één: PCRE2 bouwen en compileren

Laten we het moment van het downloaden van de bronnen uit de officiële bronnen overslaan, aangezien dit te voor de hand liggend is. U heeft het archief dus uitgepakt, gaat naar de map met de PCRE2-bronnen en voert de volgende opdracht uit om UTF te ondersteunen:

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

Geef uw pad op in het voorvoegsel als u de standaardlocatie niet wilt gebruiken om de bibliotheek te installeren:

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

Anders verzamel je zonder voorvoegsel.

De overige commando's geven de opname aan van ondersteuning voor 8-bit, 16-bit en 32-bit PCRE-codeblokken, in deze versie werd de assemblage ermee uitgevoerd.

En natuurlijk compileren we dit ding met behulp van sequentiële uitvoering van opdrachten:

make
make install

Als alles in orde is en de compilatie zonder fouten is verlopen, ga dan verder met de volgende stap.

Stap twee: sluit de PCRE2-bibliotheek aan op APR

Omdat Apache bronnen compileert met behulp van APR, moeten we de bibliotheek in APR zelf opnemen, anders kunnen er fouten optreden over onbekende functies in Apache-bronnen, omdat we nieuwe PCRE2-functies gaan gebruiken.

Laten we het moment van het downloaden van bronnen uit officiële bronnen achterwege laten, omdat dit te voor de hand liggend is, dus u heeft het archief uitgepakt en de APR-configuratie uitgevoerd:

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

Uiteraard geeft u in het voorvoegsel uw pad aan als u de standaardlocatie voor het installeren van de bibliotheek niet wilt gebruiken, of als u niet opgeeft:

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

Ga na het voltooien van de configuratie naar de directory: /etc/webserver/srcsrv/apr-1.7.0/build

Of: /uw/pad/naar de bibliotheek/build

Zoek het bestand apr_rules.mk in deze map en voeg de regels aan het einde toe waar:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

De bibliotheek aansluiten:

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

Sla op en ga naar de hoofdmap van de APR-bronnen: /uw/pad/naar de bibliotheek.

Laten we onze aangepaste APR samenstellen:

make
make install

Als alles in orde is en de compilatie zonder fouten is verlopen, ga dan verder met de volgende stap.

Stap drie: bouw APR-util voor Apache vanuit bronnen

Je hebt deze bibliotheek gedownload van de broncode, ga met APR-util naar de hoofdmap van het uitgepakte archief en voer achtereenvolgens de volgende opdrachten in:

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

Uiteraard geeft u in het voorvoegsel uw pad aan als u de standaardlocatie voor het installeren van de bibliotheek niet wilt gebruiken, of als u niet opgeeft:

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

We verbinden hier ook onze APR:

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

Stap vier: download bronnen van Apache git om PCRE2 te ondersteunen

Belangrijk: we downloaden de bronnen van de nieuwste editie van de git.

We moeten twee bronnen downloaden, zoals ap_regex.h en util_pcre.c, onderstaande links:
ap_regex.h
util_pcre.c

Ga nu naar je Apache httpd-bronmap en bouw Apache met de volgende opdrachten:

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

Uiteraard geeft u in het voorvoegsel uw pad aan als u de standaardlocatie voor het installeren van de bibliotheek niet wilt gebruiken, of als u niet opgeeft:

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

Je kunt naar eigen inzicht ook extra commando's opgeven voor het bouwen van Apache, ik bedoel de commando's voor het in- of uitschakelen van modules en bibliotheken.

Vervolgens gaan we naar onze Apache httpd-bronmap, ik heb dit:

/etc/webserver/srcsrv/httpd-2.4.41

Je gaat natuurlijk naar je directory en vervangt in de directory:

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

Het bestand ap_regex.h, dat we hebben gedownload van de Apache git.

We gaan ook naar de map:

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

We vervangen het bestand util_pcre.c door het bestand dat we hebben gedownload van de Apache git

Nu hoeft u alleen nog maar de PCRE2-verbinding in Apache zelf toe te voegen, u moet het bestand ap_config_auto.h vinden, het bevindt zich in de map:

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

Helemaal aan het begin van dit bestand voegt u de volgende regels in:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Welnu, nu zijn we klaar voor het echte moment van het compileren van Apache httpd met PCRE2-ondersteuning.
Laten we naar onze Apache httpd-bronmap gaan en deze compileren door achtereenvolgens de opdrachten uit te voeren:

make
make install

Als alles goed en zonder fouten is gegaan, dan heb je Apache httpd samengesteld en gecompileerd met PCRE2-ondersteuning, wat positieve veranderingen betekent in Apache-modules die PCRE-reguliere expressies gebruiken, een daarvan is het herschrijven van modules.

Concluderend maakt deze methode het mogelijk om PCRE2 te gebruiken vóór de release van de Apache Software Foundation, ik hoop dat er binnenkort een versie met PCRE2-ondersteuning uitkomt.

Ook zijn er tijdens het testen van standaard .htaccess geen fouten opgetreden. Als iemand fouten heeft, schrijf dit dan in de reacties.

PS

Ik was een beetje in de war door de situatie waarin ik twee verschillende versies van PCRE voor mijn stapel gebruikte, en ik besloot het te repareren.

Bron: www.habr.com

Voeg een reactie