Kā nodrošināt PCRE2 atbalstu Apache 2.4

Vēlos padalīties ar savu pieredzi, tulkojot Apache 2.4 uz PCRE2, jo pat PHP 7 jau ilgu laiku atbalsta PCRE2 bibliotēku, bet atvērtā koda Apache Software Foundation joprojām neatbalsta.
Protams, tagad, iespējams, esmu priekšā Apache laidienam ar PCRE2 atbalstu, jo es izmantoju avotus no Apache git, kas mums norāda, ka PCRE2 atbalsts ir iespējams jau nākamajā laidienā, bet tiem, kas jau vēlas PCRE2 atbalstu Apache 2.4, un kuri nevēlas gaidīt izlaišanu, es dalos vienā no veidiem.

Rakstā tiek pieņemts, ka rakstīšanas laikā apkopojat visu nepieciešamo programmatūru no pirmkoda, programmatūras un versiju saraksta:

PCRE2-10.33
1.7.0. gada APR
GPL-līdz 1.6.1
Apache httpd 2.4.41

Pirmais solis: izveidojiet un kompilējiet PCRE2

Izlaidīsim avotu lejupielādes brīdi no oficiālajiem avotiem, jo ​​tas ir pārāk acīmredzami, tāpēc esat izsaiņojis arhīvu, dodieties uz mapi ar PCRE2 avotiem un palaidiet šādu komandu, lai atbalstītu UTF:

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

Norādiet savu ceļu prefiksā, ja nevēlaties izmantot standarta atrašanās vietu bibliotēkas instalēšanai:

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

Pretējā gadījumā jūs vācat bez prefiksa.

Atlikušās komandas norāda uz 8 bitu, 16 bitu un 32 bitu PCRE koda bloku atbalstu iekļaušanu, šajā versijā montāža tika veikta ar tiem.

Un, protams, mēs apkopojam šo lietu, izmantojot secīgu komandu izpildi:

make
make install

Ja viss ir kārtībā un apkopošana noritēja bez kļūdām, pārejiet pie nākamās darbības.

Otrais solis: pievienojiet PCRE2 bibliotēku APR

Tā kā Apache apkopo avotus, izmantojot APR, mums ir jāiekļauj bibliotēka pašā APR, pretējā gadījumā Apache avotos var rasties kļūdas par nezināmām funkcijām, jo ​​mēs izmantosim jaunas PCRE2 funkcijas.

Izlaidīsim avotu lejupielādes brīdi no oficiālajiem avotiem, jo ​​tas ir pārāk acīmredzami, tāpēc jūs izpakojāt arhīvu un veicāt APR konfigurāciju:

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

Protams, jūs norādāt savu ceļu prefiksā, ja nevēlaties izmantot standarta atrašanās vietu bibliotēkas instalēšanai vai nenorāda:

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

Pēc konfigurācijas pabeigšanas dodieties uz direktoriju: /etc/webserver/srcsrv/apr-1.7.0/build

Vai arī: /jūsu/ceļš/uz bibliotēku/būvēt

Šajā direktorijā atrodiet failu apr_rules.mk un beigās pievienojiet rindas, kur:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Bibliotēkas pievienošana:

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

Saglabājiet un dodieties uz APR avotu saknes direktoriju: /your/path/to the library.

Apkoposim savu modificēto GPL:

make
make install

Ja viss ir kārtībā un apkopošana noritēja bez kļūdām, pārejiet pie nākamās darbības.

Trešais solis: izveidojiet APR-util Apache no avotiem

Jūs esat lejupielādējis šo bibliotēku no avota, dodieties uz izsaiņotā arhīva saknes mapi ar APR-util un secīgi ievadiet šādas komandas:

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

Protams, jūs norādāt savu ceļu prefiksā, ja nevēlaties izmantot standarta atrašanās vietu bibliotēkas instalēšanai vai nenorāda:

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

Mēs savienojam arī mūsu GPL šeit:

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

Ceturtais solis: lejupielādējiet avotus no Apache git, lai atbalstītu PCRE2

Svarīgi! Mēs lejupielādējam avotus no jaunākā git izdevuma.

Mums ir jālejupielādē divi avoti, piemēram, ap_regex.h un util_pcre.c, saites tālāk:
ap_regex.h
util_pcre.c

Tagad dodieties uz savu Apache httpd avota direktoriju un izveidojiet Apache ar šādām komandām:

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

Protams, jūs norādāt savu ceļu prefiksā, ja nevēlaties izmantot standarta atrašanās vietu bibliotēkas instalēšanai vai nenorāda:

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

Varat arī norādīt papildu komandas Apache veidošanai pēc saviem ieskatiem, es domāju komandas, lai iespējotu vai atspējotu moduļus un bibliotēkas.

Tālāk mēs ejam uz mūsu Apache httpd avota direktoriju, man ir šāds:

/etc/webserver/srcsrv/httpd-2.4.41

Jūs, protams, dodieties uz savu direktoriju, aizstājiet direktorijā:

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

Fails ap_regex.h, kuru lejupielādējām no Apache git.

Mēs arī ejam uz direktoriju:

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

Mēs aizstājam failu util_pcre.c ar to, ko lejupielādējām no Apache git

Tagad atliek tikai pievienot PCRE2 savienojumu pašā Apache, jums jāatrod fails ap_config_auto.h, tas atrodas direktorijā:

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

Pašā šī faila sākumā ievietojiet šādas rindiņas:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Nu, tagad esam gatavi īstajam Apache httpd kompilēšanas brīdim ar PCRE2 atbalstu.
Dosimies uz mūsu Apache httpd avota direktoriju un apkoposim to, secīgi izpildot komandas:

make
make install

Tagad, ja viss noritēja labi un bez kļūdām, tad būsiet samontējis un kompilējis Apache httpd ar PCRE2 atbalstu, kas nozīmē pozitīvas izmaiņas Apache moduļos, kas izmanto PCRE regulārās izteiksmes, viena no tām ir Module rewrite.

Noslēgumā jāsaka, ka šī metode ļauj izmantot PCRE2 pirms Apache Software Foundation oficiālās izlaišanas, ceru, ka drīzumā tiks izlaista versija ar PCRE2 atbalstu.

Arī standarta .htaccess testēšanas laikā nekādas kļūdas nav radušās, ja kādam ir kādas kļūdas rakstiet komentāros.

PS

Mani nedaudz mulsināja situācija, kad manai stekam tiek izmantotas divas dažādas PCRE versijas, un es nolēmu to labot.

Avots: www.habr.com

Pievieno komentāru