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

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

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

PCRE2-10.33
ԱՊՌ 1.7.0
APR-util 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=/ваш/путь/до библиотеки

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

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

Եվ, իհարկե, մենք կազմում ենք այս բանը՝ օգտագործելով հրամանների հաջորդական կատարումը.

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

Կամ՝ /ձեր/ուղին/դեպի գրադարան/կառուցեք

Գտեք apr_rules.mk ֆայլը այս գրացուցակում և վերջում ավելացրեք տողերը, որտեղ.

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

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

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

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

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

make
make install

Եթե ​​ամեն ինչ լավ է, և կոմպիլյացիան անցել է առանց սխալների, անցեք հաջորդ քայլին:

Քայլ երրորդ. կառուցեք APR-util-ը Apache-ի համար աղբյուրներից

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

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

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

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

Մենք նաև կապում ենք մեր APR-ը այստեղ.

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

Քայլ չորրորդ՝ ներբեռնեք աղբյուրներ Apache git-ից՝ PCRE2-ին աջակցելու համար

Կարևոր է. Մենք ներբեռնում ենք աղբյուրները 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

Դե, հիմա մենք պատրաստ ենք PCRE2 աջակցությամբ Apache httpd-ի կազմման իրական պահին։
Եկեք գնանք մեր Apache httpd աղբյուրի գրացուցակը և կազմենք սա՝ հաջորդաբար կատարելով հրամանները.

make
make install

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

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

Նաև ստանդարտ .htaccess-ի թեստավորման ժամանակ ոչ մի սխալ չի եղել, եթե որևէ մեկը սխալ ունի, գրեք մեկնաբանություններում։

PS

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

Source: www.habr.com

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