Jeg vil dele mine erfaringer med at oversætte Apache 2.4 til PCRE2, da selv PHP 7 længe har understøttet PCRE2-biblioteket, mens open source Apache Software Foundation stadig ikke har gjort det.
Selvfølgelig er jeg nok foran frigivelsen af Apache med PCRE2-support, da jeg bruger koden fra Apache's git, hvilket indikerer, at PCRE2-support måske allerede er med i næste udgave. Men for dem, der allerede nu ønsker PCRE2-support i Apache 2.4 og ikke vil vente på udgivelsen, deler jeg en af metoderne.
Artiklen forudsætter, at du kompilere al nødvendig software fra kilden. Listen over software og versioner på tidspunktet for artikelens skrivning:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Trin et: kompilér PCRE2
Vi springer over at downloade koden fra de officielle kilder, da det er for indlysende. Så, du har udpakket arkivet, går til mappen med PCRE2-koden og udfører følgende kommando for at aktivere UTF-support:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicodeI præfixen angiver du din egen sti, hvis du ikke ønsker at bruge standardplaceringen til installation af biblioteket:
--prefix=/din/st i/til/biblioteketEllers samles uden præfiks.
De øvrige kommandoer angiver inkluderende støtte til 8-bit, 16-bit og 32-bit PCRE kodeblokke. I denne variant blev byggeprocessen udført med dem.
Og selvfølgelig kompilér dette ved at køre følgende kommandoer:
make
make install Hvis alt går godt, og kompileringen forløber uden fejl, går vi videre til næste skridt.
Trin to: tilføj PCRE2-biblioteket til APR
Da Apache kompilerer koden ved hjælp af APR, skal vi tilføje biblioteket i selve APR, ellers kan der være fejl ved ukendte funktioner i Apache-koden, da vi vil bruge nye PCRE2-funktioner.
Vi springer over at downloade koden fra de officielle kilder, da det er for indlysende. Så, du har udpakket arkivet og udført konfigurationen for APR:
./configure --prefix=/etc/webserver/apr-170Naturligvis angiver du din egen sti i præfixen, hvis du ikke ønsker at bruge standardplaceringen til installation af biblioteket, eller så angiver du ikke noget:
--prefix=/din/st i/til/biblioteketEfter at have udført konfigurationen går du ind i mappen: /etc/webserver/srcsrv/apr-1.7.0/build
Eller: /din/st i/til/biblioteket/build
Find filen apr_rules.mk i denne mappe og tilføj til slutningen af rækken, hvor:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldlTilføjelse af biblioteket:
-lpcre2-8 -L/dit/dit/til/bibliotek/pcre2/libVi går i mappen med kildecodes for APR: /dit/dit/til/bibliotek.
Vi kompilerer vores modificerede APR:
make
make installHvis alt går godt, og kompileringen forløber uden fejl, går vi videre til næste skridt.
Tredje trin: bygge fra kilder til APR-util for Apache
Du har downloadet dette bibliotek fra den officielle kilde, gå til rodmappen af den udpakkede APR-util og indtast følgende kommandoer:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/dit/dit/til/bibliotek/apr
make
make installNaturligvis angiver du din egen sti i præfixen, hvis du ikke ønsker at bruge standardplaceringen til installation af biblioteket, eller så angiver du ikke noget:
--prefix=/din/st i/til/biblioteketHer tilslutter vi også vores APR:
--with-apr=/dit/dit/til/bibliotek/aprFjerde trin: download kilder fra Apache's git for at understøtte PCRE2
Vigtigt: Download kilder fra den nyeste version i git.
Vi skal downloade to kildesfiler, såsom ap_regex.h og util_pcre.c, links nedenfor:
Gå nu til din Apache httpd kilde mappe, og byg Apache med følgende kommandoer:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/dit/dit/til/bibliotek/apr --with-apr-util=/dit/dit/til/bibliotek/apr-util --with-pcre=/dit/dit/til/bibliotek/pcre2/bin/pcre2-configNaturligvis angiver du din egen sti i præfixen, hvis du ikke ønsker at bruge standardplaceringen til installation af biblioteket, eller så angiver du ikke noget:
--prefix=/dit/dit/til/Apache httpdYderligere kommandoer til at bygge Apache skal indtastes efter din præference, jeg mener kommandoerne til at aktivere/deaktivere moduler og biblioteker.
Dernæst går vi til vores Apache httpd kilde mappe, i mit tilfælde:
/etc/webserver/srcsrv/httpd-2.4.41Du går naturligvis ind i din mappe, og ændrer i mappen:
/etc/webserver/srcsrv/httpd-2.4.41/includeFil ap_regex.h til den, vi downloader fra Apache's git.
Gå også til mappen:
/etc/webserver/srcsrv/httpd-2.4.41/serverErstat filen util_pcre.c med den, vi downloader fra Apache's git.
Nu er det tid til at tilføje PCRE2 til selve Apache, vi skal finde filen ap_config_auto.h, som ligger i mappen:
/etc/webserver/srcsrv/httpd-2.4.41/includeI starten af denne fil skal vi indsætte følgende linjer:
/* Load PCRE2 */
#define HAVE_PCRE2 1 Nu er vi klar til det rigtige kompileringsøjeblik for Apache httpd med støtte for PCRE2.
Vi går til vores Apache httpd kilde mappe og kompilerer dette ved at udføre kommandoerne en ad gangen:
make
make installHvis alt er gået godt og uden fejl, vil du have en bygget og kompilert Apache httpd med støtte for PCRE2, hvilket betyder positive ændringer i Apache moduler, der bruger PCRE regulære udtryk, en af dem er Module rewrite.
Afslutningsvis giver denne metode mulighed for at bruge PCRE2 før den officielle udgivelse fra Apache Software Foundation, jeg håber, at der snart kommer en version med støtte for PCRE2.
Der opstod heller ingen fejl under test af standard .htaccess, hvis nogen oplever fejl, skriv det i kommentarerne.
P.S.
Jeg var lidt generet over situationen med at bruge to forskellige versioner af PCRE til mit stack, og jeg besluttede mig for at rette op på det.
Kilde: habr.com
