Nais kong ibahagi ang aking karanasan sa pagsasalin ng Apache 2.4 sa PCRE2, dahil kahit PHP 7 ay suportado na ang PCRE2 library sa mahabang panahon, ngunit ang open source na Apache Software Foundation ay hindi pa rin.
Siyempre, ako ngayon ay malamang na nauuna sa paglabas ng Apache na may suporta sa PCRE2, dahil gumagamit ako ng mga mapagkukunan mula sa Apache git, na nagsasabi sa amin na ang suporta ng PCRE2 ay posible na sa susunod na paglabas, ngunit para sa mga nais na ng suporta sa PCRE2 sa Apache 2.4, at kung sino ang hindi gustong maghintay ng release Ibinabahagi ko ang isa sa mga paraan.
Ipinapalagay ng artikulo na kinokolekta mo ang lahat ng kinakailangang software mula sa source code, isang listahan ng software at mga bersyon sa oras ng pagsulat:
PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41
Unang hakbang: bumuo at mag-compile ng PCRE2
Laktawan natin ang sandali ng pag-download ng mga mapagkukunan mula sa mga opisyal na mapagkukunan dahil ito ay masyadong halata, kaya na-unpack mo ang archive, pumunta sa folder na may mga mapagkukunan ng PCRE2, at patakbuhin ang sumusunod na command upang suportahan ang UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
Tukuyin ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon upang i-install ang library:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Kung hindi, nangongolekta ka nang walang prefix.
Ang natitirang mga utos ay nagpapahiwatig ng pagsasama ng mga suporta para sa 8-bit, 16-bit at 32-bit na mga bloke ng PCRE code, sa bersyon na ito ang pagpupulong ay isinagawa kasama nila.
At siyempre, pinagsama-sama namin ang bagay na ito gamit ang sunud-sunod na pagpapatupad ng mga utos:
make
make install
Kung maayos ang lahat at walang mga error ang compilation, magpatuloy sa susunod na hakbang.
Ikalawang hakbang: ikonekta ang PCRE2 library sa APR
Dahil ang Apache ay nag-compile ng mga source gamit ang APR, kailangan naming isama ang library sa APR mismo, kung hindi, maaaring may mga error tungkol sa hindi kilalang mga function sa Apache source, dahil gagamit kami ng mga bagong PCRE2 function.
Alisin natin ang sandali ng pag-download ng mga mapagkukunan mula sa mga opisyal na mapagkukunan dahil ito ay masyadong halata, kaya na-unpack mo ang archive at ginawa ang configuration ng APR:
./configure --prefix=/etc/webserver/apr-170
Naturally, ipinapahiwatig mo ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon para sa pag-install ng library, o kung hindi mo tinukoy:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Pagkatapos makumpleto ang pagsasaayos, pumunta sa direktoryo: /etc/webserver/srcsrv/apr-1.7.0/build
O kaya: /your/path/to the library/build
Hanapin ang apr_rules.mk file sa direktoryong ito, at idagdag ang mga linya sa dulo kung saan:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Pagkonekta sa library:
-lpcre2-8 -L/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pcre2/lib
I-save at pumunta sa root directory ng APR sources: /your/path/to the library.
I-compile natin ang aming binagong APR:
make
make install
Kung maayos ang lahat at walang mga error ang compilation, magpatuloy sa susunod na hakbang.
Ikatlong hakbang: bumuo ng APR-util para sa Apache mula sa mga mapagkukunan
Na-download mo ang library na ito mula sa pinagmulan, pumunta sa root folder ng hindi naka-pack na archive na may APR-util, at ipasok ang mga sumusunod na command nang sunud-sunod:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr
make
make install
Naturally, ipinapahiwatig mo ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon para sa pag-install ng library, o kung hindi mo tinukoy:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Ikinonekta rin namin ang aming APR dito:
--with-apr=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr
Hakbang apat: mag-download ng mga mapagkukunan mula sa Apache git upang suportahan ang PCRE2
Mahalaga: Dina-download namin ang mga mapagkukunan mula sa pinakabagong edisyon ng git.
Kailangan naming mag-download ng dalawang mapagkukunan gaya ng ap_regex.h at util_pcre.c, mga link sa ibaba:
Pumunta ngayon sa iyong Apache httpd source directory at bumuo ng Apache gamit ang mga sumusunod na command:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr --with-apr-util=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr-util --with-pcre=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pcre2/bin/pcre2-config
Naturally, ipinapahiwatig mo ang iyong landas sa prefix kung ayaw mong gamitin ang karaniwang lokasyon para sa pag-install ng library, o kung hindi mo tinukoy:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Apache httpd
Maaari mo ring tukuyin ang mga karagdagang command para sa pagbuo ng Apache sa iyong paghuhusga, ang ibig kong sabihin ay ang mga utos para sa pagpapagana o hindi pagpapagana ng mga module at library.
Susunod na pumunta kami sa aming direktoryo ng pinagmulan ng Apache httpd, mayroon ako nito:
/etc/webserver/srcsrv/httpd-2.4.41
Natural kang pumunta sa iyong direktoryo, palitan sa direktoryo:
/etc/webserver/srcsrv/httpd-2.4.41/include
Ang file na ap_regex.h, na na-download namin mula sa Apache git.
Pumunta din kami sa direktoryo:
/etc/webserver/srcsrv/httpd-2.4.41/server
Pinapalitan namin ang file na util_pcre.c ng na-download namin mula sa Apache git
Ngayon ang lahat na natitira ay upang magdagdag ng PCRE2 na koneksyon sa Apache mismo, kailangan mong hanapin ang file ap_config_auto.h, ito ay matatagpuan sa direktoryo:
/etc/webserver/srcsrv/httpd-2.4.41/include
Sa pinakadulo simula ng file na ito, ipasok ang mga sumusunod na linya:
/* Load PCRE2 */
#define HAVE_PCRE2 1
Ngayon, handa na kami para sa totoong sandali ng pag-compile ng Apache httpd na may suporta sa PCRE2.
Pumunta tayo sa aming direktoryo ng source ng Apache httpd at i-compile ito sa pamamagitan ng sunud-sunod na pagpapatupad ng mga utos:
make
make install
Ngayon, kung ang lahat ay naging maayos at walang mga error, pagkatapos ay naipon at naipon mo ang Apache httpd na may suporta sa PCRE2, na nangangahulugan ng mga positibong pagbabago sa mga module ng Apache na gumagamit ng mga regular na expression ng PCRE, isa sa mga ito ay ang Module rewrite.
Sa konklusyon, ginagawang posible ng pamamaraang ito na gamitin ang PCRE2 bago ang opisyal na paglabas mula sa Apache Software Foundation, umaasa ako na ang isang bersyon na may suporta sa PCRE2 ay ilalabas sa lalong madaling panahon.
Gayundin, sa panahon ng pagsubok ng karaniwang .htaccess, walang mga error na naganap, kung sinuman ang may anumang mga error, sumulat sa mga komento.
PS
Medyo nalilito ako sa sitwasyon ng paggamit ng dalawang magkaibang bersyon ng PCRE para sa aking stack, at nagpasya akong ayusin ito.
Pinagmulan: www.habr.com