Apache 2.4 üçün PCRE2 dəstəyini necə edə bilərik

Apache 2.4-ü PCRE2-yə tərcümə etmə təcrübəmi bölüşmək istəyirəm, çünki PHP 7 artıq uzun müddətdir ki, PCRE2 kitabxanasını dəstəkləyir, amma açıq mənbəli Apache Software Foundation hələ yoxdur.
Təbii ki, mən hazırda PCRE2 üçün dəstəyi olan Apache buraxılışını irəliləyirəm, çünki mən Apache-nin Git-dən mənbələrini istifadə edirəm, bu isə bizə növbəti buraxılışda PCRE2-nin dəstəyi ola biləcəyini bildirir, amma artıq indi Apache 2.4-də PCRE2 üçün dəstək istəyənlər və buraxılışı gözləmək istəməyənlər üçün bir üsulu paylaşacağam.

Məqalə, lazım olan bütün proqramları mənbələrdən tərtib etdiyinizi nəzərdə tutur, bu məqalənin yazıldığı vaxtda proqramların və versiyaların siyahısı:

PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
Apache httpd 2.4.41

Birinci addım: PCRE2-ni tərtib edirik və kompilə edirik

Rəsmi mənbələrdən hər hansı kodları yükləməyi atlayırıq, çünki bu çox açıqdır, beləliklə siz arxivi açdınız, PCRE2 mənbə folderinə keçirik və UTF dəstəyi üçün aşağıdakı əmri icra edirik:

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

Prefiksdə istədiyiniz yolu göstərirsiniz əgər kitabxananın standart quraşdırma yerini istifadə etmək istəmirsinizsə:

--prefix=\/sizin\/yol\/kitabxanaya

Yoxsa prefiks olmadan tərtib edirsiniz.

Qalan komandalar PCRE-nin 8-bit, 16-bit və 32-bit kod bloklarını dəstəklənməsini aktivləşdirir, bu variantda tərtibat onlarınla başa çatdırılmışdır.

Və əlbəttə ki, bunu əmrləri ardıcıllıqla icra edərək kompilə edirik:

make
make install

Əgər hər şey qaydasındadırsa və kompilə edilmə səhvsiz keçirsə, növbəti addıma keçirik.

İkinci addım: PCRE2 kitabxanasını APR-yə qoşmaq

Apache mənbələrini APR vasitəsilə tərtib etdiyindən, biz APR-də kitabxananı qoşmalıyıq, əks halda Apache mənbələrində məlum olmayan funksiyalarla bağlı səhvlər ola bilər, çünki yeni PCRE2 funksiyalarını istifadə edəcəyik.

Rəsmi mənbələrdən hər hansı kodları yükləməyi atlayırıq, beləliklə siz arxivi açdınız, APR konfiqurasiyasını icra etdiniz:

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

Təbii ki, prefiksdə istədiyiniz yolu göstərirsiniz əgər standart quraşdırma yerini istifadə etmək istəmirsinizsə, ya da göstərmirsiniz:

--prefix=\/sizin\/yol\/kitabxanaya

Konfiqurasiyanı tamamladıqdan sonra bu kataloqa keçirsiniz: \/etc\/webserver\/srcsrv\/apr-1.7.0\/build

Yaxud: \/sizin\/yol\/kitabxanaya\/build

Bu kataloqda apr_rules.mk faylını tapın və aşağıdakı sətirə əlavə edin:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Kitabxananın qoşulması:

-lpcre2-8 -L\/sizin\/yol\/kitabxanaya pcre2\/lib

Saxlayın və APR mənbələrinin kök kataloquna keçin: \/sizin\/yol\/kitabxanaya.

Dəyişdirilmiş APR-i kompilə edirik:

make
make install

Əgər hər şey qaydasındadırsa və kompilə edilmə səhvsiz keçirsə, növbəti addıma keçirik.

Üçüncü addım: Apache üçün APR-util mənbələrindən tərtib edirik

Bu kitabxananı rəsmi mənbədən endirdiniz, açılmış APR-util arxivi kök folderinə keçin və aşağıdakı əmrləri ardıcıllıqla daxil edin:

.\/configure --prefix=\/etc\/webserver\/apr-util-161 --with-apr=\/sizin\/yol\/kitabxanaya apr
make
make install

Təbii ki, prefiksdə istədiyiniz yolu göstərirsiniz əgər standart quraşdırma yerini istifadə etmək istəmirsinizsə, ya da göstərmirsiniz:

--prefix=\/sizin\/yol\/kitabxanaya

Burada da biz APR-i qoşuruq:

--with-apr=/sizin/yolunuz/kitabxana apr

Dördüncü addım: PCRE2 dəstəyi üçün Apache Git-dən mənbələri endirin

Diqqət: Mənbələri Git-dən ən son redaksiyadan yükləyin.

İki mənbə yükləməliyik: ap_regex.h və util_pcre.c, aşağıdakı linklər:
ap_regex.h
util_pcre.c

İndi Apache httpd mənbələrinizin direktoriyasına gedirik və Apache-i aşağıdakı komandalarla toplayırıq:

./configure --prefix=/etc/webserver/apache-2441 --with-apr=/sizin/yolunuz/kitabxana apr --with-apr-util=/sizin/yolunuz/kitabxana apr-util --with-pcre=/sizin/yolunuz/kitabxana pcre2/bin/pcre2-config

Təbii ki, prefiksdə istədiyiniz yolu göstərirsiniz əgər standart quraşdırma yerini istifadə etmək istəmirsinizsə, ya da göstərmirsiniz:

--prefix=/sizin/yolunuz/Apache httpd

Həmçinin Apache-in yığılmasında əlavə komandaları öz zövqünüzə görə göstərin, burada modulların və kitabxanaların aktivləşdirilməsi / deaktivləşdirilməsi barədə söz gedir.

Sonra Apache httpd mənbə direktoriyamıza gedirik, mənimki:

/etc/webserver/srcsrv/httpd-2.4.41

Təbii ki, öz kataloqunuza keçin, kataloqda dəyişdirin:

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

ap_regex.h faylını, Apache-dən endirdiyimiz fayl ilə.

Həmçinin aşağıdakı kataloqa gedin:

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

util_pcre.c faylını, Apache-dən endirdiyimiz fayl ilə dəyişdirin

İndi Apache-də PCRE2 qoşmasını əlavə etməyin vaxtıdır, ap_config_auto.h faylını tapmalısınız, bu fayl aşağıdakı kataloqdadır:

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

Bu faylın əvvəlinə aşağıdakı sətirləri əlavə edin:

/* Load PCRE2 */
#define HAVE_PCRE2 1

İndi Apache httpd-nin PCRE2 dəstəyi ilə gerçek kompilasiyalı anına hazırıq.
Apache httpd mənbə direktoriyamıza keçirik, bu işi ardıcıl komandaların icrası ilə kompilə edirik:

make
make install

İndi hər şey düzgün keçibsə və xətalar olmadan, sizin PCRE2 dəstəyi olan toplanmış və kompilə edilmiş Apache httpd-niz olacaq, bu da PCRE müntəzəm ifadələrini istifadə edən Apache modulları üçün müsbət dəyişiklikləri nəzərdə tutur, bunlardan biri Rewrite Moduludur.

Son olaraq, bu metod, Apache Software Foundation-dan rəsmi buraxılışdan əvvəl PCRE2-ni istifadə etməyə imkan tanıyır, ümid edirəm ki, çox keçmədən PCRE2 dəstəyi ilə versiya buraxılacaq.

Həmçinin standart .htaccess-ları sınaqdan keçirərkən, heç bir xəta baş vermədi, əgər kimsədə xətalar varsa, şərhlərdə yazın.

P.S.

İki fərqli PCRE versiyasının istifadəsi ilə bağlı vəziyyət məni bir az narahat edirdi və bunu düzəltməyə qərar verdim.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster