Kaip padaryti, kad PCRE2 palaikytų Apache 2.4

Norėčiau pasidalinti savo patirtimi verčiant Apache 2.4 į PCRE2, nes net PHP 7 ilgą laiką palaiko PCRE2 biblioteką, tačiau atvirojo kodo Apache Software Foundation vis dar nepalaiko.
Žinoma, dabar tikriausiai lenkiu Apache leidimą su PCRE2 palaikymu, nes naudoju šaltinius iš Apache git, kuris mums sako, kad PCRE2 palaikymas jau galimas kitoje laidoje, bet tiems, kurie jau nori PCRE2 palaikymo Apache 2.4, ir kurie nenori laukti, kol bus išleistas, dalinuosi vienu iš būdų.

Straipsnyje daroma prielaida, kad rašydami renkate visą reikalingą programinę įrangą iš šaltinio kodo, programinės įrangos ir versijų sąrašą:

PCRE2-10.33
Balandis 1.7.0
APR-iki 1.6.1
Apache httpd 2.4.41

Pirmas žingsnis: sukurkite ir sukompiliuokite PCRE2

Praleiskime šaltinių atsisiuntimo iš oficialių šaltinių momentą, nes tai per daug akivaizdu, todėl išpakavote archyvą, eikite į aplanką su PCRE2 šaltiniais ir paleiskite šią komandą, kad palaikytumėte UTF:

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

Nurodykite savo kelią priešdėlyje, jei nenorite naudoti standartinės vietos bibliotekai įdiegti:

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

Kitu atveju renkate be priešdėlio.

Likusios komandos nurodo 8 bitų, 16 bitų ir 32 bitų PCRE kodų blokų atramų įtraukimą, šioje versijoje surinkimas buvo atliktas su jomis.

Ir, žinoma, mes kompiliuojame šį dalyką naudodami nuoseklų komandų vykdymą:

make
make install

Jei viskas gerai ir kompiliavimas vyko be klaidų, pereikite prie kito veiksmo.

Antras žingsnis: prijunkite PCRE2 biblioteką prie APR

Kadangi Apache kompiliuoja šaltinius naudodamas APR, mes turime įtraukti biblioteką į pačią APR, kitaip gali atsirasti klaidų dėl nežinomų funkcijų Apache šaltiniuose, nes naudosime naujas PCRE2 funkcijas.

Išmeskime šaltinių atsisiuntimo iš oficialių šaltinių momentą, nes tai per daug akivaizdu, todėl išpakavote archyvą ir atlikote APR konfigūraciją:

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

Žinoma, priešdėlyje nurodote savo kelią, jei nenorite naudoti standartinės vietos bibliotekai diegti arba jei nenurodote:

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

Baigę konfigūraciją, eikite į katalogą: /etc/webserver/srcsrv/apr-1.7.0/build

Arba: /jūsų/kelias/į biblioteką/kurti

Šiame kataloge suraskite failą apr_rules.mk ir pabaigoje pridėkite eilutes, kuriose:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Bibliotekos prijungimas:

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

Išsaugokite ir eikite į APR šaltinių šakninį katalogą: /your/path/to the library.

Surašykime pakeistą APR:

make
make install

Jei viskas gerai ir kompiliavimas vyko be klaidų, pereikite prie kito veiksmo.

Trečias veiksmas: sukurkite APR-util, skirtą Apache iš šaltinių

Atsisiuntėte šią biblioteką iš šaltinio, eikite į išpakuoto archyvo šakninį aplanką naudodami APR-util ir paeiliui įveskite šias komandas:

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

Žinoma, priešdėlyje nurodote savo kelią, jei nenorite naudoti standartinės vietos bibliotekai diegti arba jei nenurodote:

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

Čia taip pat prijungiame savo APR:

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

Ketvirtas veiksmas: atsisiųskite šaltinius iš Apache git, kad palaikytumėte PCRE2

Svarbu: atsisiunčiame šaltinius iš naujausio git leidimo.

Turime atsisiųsti du šaltinius, pvz., ap_regex.h ir util_pcre.c, toliau pateiktos nuorodos:
ap_regex.h
util_pcre.c

Dabar eikite į „Apache“ httpd šaltinio katalogą ir sukurkite „Apache“ naudodami šias komandas:

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

Žinoma, priešdėlyje nurodote savo kelią, jei nenorite naudoti standartinės vietos bibliotekai diegti arba jei nenurodote:

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

Taip pat galite nurodyti papildomas komandas, skirtas kurti Apache savo nuožiūra, turiu omenyje komandas, skirtas moduliams ir bibliotekoms įjungti arba išjungti.

Toliau einame į mūsų Apache httpd šaltinio katalogą, turiu tai:

/etc/webserver/srcsrv/httpd-2.4.41

Jūs natūraliai einate į savo katalogą, pakeičiate jį kataloge:

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

Failas ap_regex.h, kurį atsisiuntėme iš Apache git.

Taip pat einame į katalogą:

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

Failą util_pcre.c pakeičiame tuo, kurį atsisiuntėme iš Apache git

Dabar belieka pridėti PCRE2 ryšį pačiame Apache, reikia rasti failą ap_config_auto.h, jis yra kataloge:

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

Pačioje šio failo pradžioje įterpkite šias eilutes:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Na, dabar esame pasiruošę tikram momentui kompiliuoti Apache httpd su PCRE2 palaikymu.
Eikime į mūsų Apache httpd šaltinio katalogą ir sukompiliuokime jį nuosekliai vykdydami komandas:

make
make install

Dabar, jei viskas klostėsi gerai ir be klaidų, tada jūs surinksite ir sukompiliavote Apache httpd su PCRE2 palaikymu, o tai reiškia teigiamus pokyčius Apache moduliuose, kurie naudoja PCRE reguliariąsias išraiškas, vienas iš jų yra Module rewrite.

Apibendrinant, šis metodas leidžia naudoti PCRE2 prieš oficialų „Apache Software Foundation“ išleidimą, tikiuosi, kad netrukus bus išleista versija su PCRE2 palaikymu.

Taip pat standartinio .htaccess testavimo metu jokių klaidų neatsirado, jei kas turi klaidų rašykite komentaruose.

PS

Buvau šiek tiek sumišęs dėl dviejų skirtingų PCRE versijų naudojimo mano dėtuvėje ir nusprendžiau ją pataisyti.

Šaltinis: www.habr.com

Добавить комментарий