Ես կցանկանայի կիսվել 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-ը, հղումները՝ ստորև.
Հիմա մենք գնում ենք մեր 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/includeap_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
