Ինչպես կատարել PCRE2 աջակցություն Apache 2.4-ի համար

Ես կցանկանայի կիսվել Apache 2.4-ը PCRE2 թարգմանելու իմ փորձով, քանի որ նույնիսկ PHP 7-ը վաղուց աջակցում է PCRE2 գրադարանին, բայց բաց կոդով Apache Software Foundation-ը դեռևս չի աջակցում։
Իհարկե, ես հավանաբար արդեն Apache-ի թողարկումից առաջ եմ PCRE2 աջակցությամբ, քանի որ օգտագործում եմ Apache git-ի կոդերը, որոնք մեզ ասում են, որ PCRE2 աջակցությունն արդեն հնարավոր է հաջորդ թողարկման մեջ, բայց նրանց համար, ովքեր արդեն ցանկանում են PCRE2 աջակցություն Apache 2.4-ում և չեն ցանկանում սպասել թողարկմանը, ես կիսվում եմ եղանակներից մեկով։

Հոդվածը ենթադրում է, որ դուք հավաքում եք բոլոր անհրաժեշտ ծրագրակազմը սկզբնական կոդից, ծրագրակազմի ցանկից և տարբերակներից գրելու պահին.

PCRE2-10.33
1.7.0 թվականի ապրիլի
Տարեկան տոկոսադրույք 1.6.1
Apache httpd 2.4.41

Քայլ մեկ՝ PCRE2-ի կառուցում և կոմպիլյացիա

Եկեք բաց թողնենք աղբյուրի կոդը պաշտոնական աղբյուրներից ներբեռնելու պահը, քանի որ դա չափազանց ակնհայտ է, այնպես որ դուք բացել եք արխիվը, գնացեք PCRE2 աղբյուրի կոդով թղթապանակ և կատարեք հետևյալ հրամանը՝ UTF-ն աջակցելու համար.

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

Նախածանցում նշեք ձեր ուղին, եթե չեք ցանկանում օգտագործել գրադարանը տեղադրելու ստանդարտ տեղը։

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

Հակառակ դեպքում, հավաքեք առանց նախածանցի։

Մնացած հրամանները ցույց են տալիս PCRE կոդային բլոկների ներառումը, որոնք աջակցում են 8-բիթ, 16-բիթ և 32-բիթ տարբերակներին. այս տարբերակում կառուցումը կատարվել է դրանց միջոցով:

Եվ իհարկե, մենք այս բանը կոմպիլացնում ենք հրամանների հաջորդական կատարման միջոցով՝

make
make install

Եթե ​​ամեն ինչ լավ է, և կազմը սխալներով է անցել, մենք անցնում ենք հաջորդ քայլին։

Քայլ երկրորդ՝ միացրեք PCRE2 գրադարանը APR-ին

Քանի որ Apache-ն կոմպիլացնում է աղբյուրները APR-ի միջոցով, մենք պետք է գրադարանը ներառենք APR-ի մեջ, հակառակ դեպքում Apache-ի աղբյուրներում կարող են սխալներ լինել անհայտ ֆունկցիաների հետ կապված, քանի որ մենք կօգտագործենք նոր PCRE2 ֆունկցիաներ։

Եկեք բաց թողնենք աղբյուրի կոդը պաշտոնական աղբյուրներից ներբեռնելու պահը, քանի որ դա չափազանց ակնհայտ է, այնպես որ դուք բացեցիք արխիվը և կարգավորեցիք APR-ը.

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

Բնականաբար, դուք նշում եք ձեր ուղին նախածանցում, եթե չեք ցանկանում օգտագործել գրադարանը տեղադրելու ստանդարտ տեղը կամ չեք նշում այն։

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

Կարգավորումն ավարտելուց հետո անցեք հետևյալ գրացուցակին՝ /etc/webserver/srcsrv/apr-1.7.0/build

Կամ՝ /your/path/to library/build

Այս գրացուցակում գտեք apr_rules.mk ֆայլը և տողի վերջում ավելացրեք հետևյալը՝

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Գրադարանի միացում.

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

Պահպանեք և անցեք APR կոդերի արմատային գրացուցակին՝ /your/path/to the library:

Եկեք կազմենք մեր փոփոխված APR-ը։

make
make install

Եթե ​​ամեն ինչ լավ է, և կազմը սխալներով է անցել, մենք անցնում ենք հաջորդ քայլին։

Քայլ երեք՝ APR-util-ի կառուցում Apache-ի համար՝ օգտագործելով աղբյուրները

Դուք ներբեռնել եք այս գրադարանը պաշտոնական աղբյուրից, APR-util-ով մուտք եք գործում բացված արխիվի արմատային թղթապանակ և հաջորդականությամբ մուտքագրում եք հետևյալ հրամանները.

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

Բնականաբար, դուք նշում եք ձեր ուղին նախածանցում, եթե չեք ցանկանում օգտագործել գրադարանը տեղադրելու ստանդարտ տեղը կամ չեք նշում այն։

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

Մենք նաև մեր տարեկան տոկոսադրույքը կապում ենք այստեղ՝

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

Քայլ 2. Ներբեռնեք կոդերը Apache Git-ից՝ PCREXNUMX աջակցության համար

Կարևոր է. ներբեռնեք ելակետային կոդը Git-ի վերջին տարբերակից։

Մենք պետք է ներբեռնենք երկու աղբյուր, ինչպիսիք են ap_regex.h-ը և util_pcre.c-ը, հղումները՝ ստորև.
ap_regex.h
util_pcre.c

Հիմա մենք գնում ենք մեր Apache httpd կոդի գրացուցակ և կոմպիլացնում ենք Apache-ն հետևյալ հրամաններով՝

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

Բնականաբար, դուք նշում եք ձեր ուղին նախածանցում, եթե չեք ցանկանում օգտագործել գրադարանը տեղադրելու ստանդարտ տեղը կամ չեք նշում այն։

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

Դուք կարող եք նաև ձեր հայեցողությամբ նշել լրացուցիչ հրամաններ Apache-ի կառուցման համար, այսինքն՝ հրամաններ մոդուլների և գրադարանների միացման և անջատման համար։

Հաջորդը, մենք անցնում ենք մեր Apache httpd աղբյուրի գրացուցակին, ինձ համար դա է՝

/etc/webserver/srcsrv/httpd-2.4.41

Դուք բնականաբար գնում եք ձեր կատալոգ, կատալոգում փոխարինում եք՝

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

ap_regex.h ֆայլը, որը մենք ներբեռնել ենք Apache Git-ից։

Մենք նաև գնում ենք կատալոգ.

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

Մենք փոխարինում ենք util_pcre.c ֆայլը Apache Git-ից ներբեռնվածով։

Հիմա մնում է ավելացնել PCRE2 կապը Apache-ում, դուք պետք է գտնեք ap_config_auto.h ֆայլը, այն գտնվում է գրացուցակում.

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

Այս ֆայլի հենց սկզբում տեղադրեք հետևյալ տողերը.

/* Load PCRE2 */
#define HAVE_PCRE2 1

Հիմա մենք պատրաստ ենք Apache httpd-ը PCRE2 աջակցությամբ կոմպիլյացիայի իրական պահին։
Մենք մտնում ենք մեր Apache httpd կոդի գրացուցակ և կոմպիլացնում ենք սա՝ օգտագործելով հետևյալ հրամանները.

make
make install

Հիմա, եթե ամեն ինչ լավ է անցել և առանց սխալների, ապա դուք կունենաք կառուցված և կազմված Apache httpd՝ PCRE2 աջակցությամբ, ինչը նշանակում է դրական փոփոխություններ PCRE կանոնավոր արտահայտություններ օգտագործող Apache մոդուլներում, որոնցից մեկը Module rewrite-ն է։

Ամփոփելով՝ այս մեթոդը հնարավորություն է տալիս օգտագործել PCRE2-ը մինչև Apache Software Foundation-ի պաշտոնական թողարկումը, հուսով եմ, որ շուտով կթողարկվի PCRE2 աջակցությամբ տարբերակ։

Բացի այդ, ստանդարտ .htaccess-ի փորձարկման ընթացքում սխալներ չեն առաջացել, եթե որևէ մեկը սխալներ ունի, խնդրում ենք գրել մեկնաբանություններում։

PS

Ես մի փոքր նյարդայնացած էի իմ սթեքի համար PCRE-ի երկու տարբեր տարբերակներ օգտագործելու իրավիճակից, և որոշեցի շտկել այն։

Source: www.habr.com

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster