Apache 2 için PCRE2.4 desteği nasıl yapılır

Apache 2.4'ü PCRE2'ye çevirme deneyimimi paylaşmak istiyorum, çünkü PHP 7 bile PCRE2 kütüphanesini uzun süredir destekliyor, ancak açık kaynak Apache Yazılım Vakfı hala desteklemiyor.
Tabii ki, şu anda muhtemelen PCRE2 destekli Apache sürümünün ilerisindeyim, çünkü Apache git'teki kaynakları kullanıyorum, bu bize bir sonraki sürümde PCRE2 desteğinin zaten mümkün olduğunu söylüyor, ancak zaten PCRE2 desteği isteyenler için Apache 2.4'ün yayınlanmasını beklemek istemeyenler için yollardan birini paylaşıyorum.

Makale, gerekli tüm yazılımı kaynak kodundan, bir yazılım listesinden ve sürümlerden topladığınızı varsaymaktadır:

PCRE2-10.33
APR 1.7.0
APR-kullanımı 1.6.1
Apache httpd 2.4.41

Birinci adım: PCRE2'yi oluşturun ve derleyin

Bu çok açık olduğundan, resmi kaynaklardan kaynakları indirme anını atlayalım, böylece arşivi açtınız, PCRE2 kaynaklarının bulunduğu klasöre gittiniz ve UTF'yi desteklemek için aşağıdaki komutu çalıştırdınız:

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

Kitaplığı yüklemek için standart konumu kullanmak istemiyorsanız, önekte yolunuzu belirtin:

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

Aksi halde ön ek olmadan toplama yapmış olursunuz.

Geri kalan komutlar, 8 bit, 16 bit ve 32 bit PCRE kod blokları için desteklerin dahil edildiğini gösterir; bu versiyonda montaj onlarla gerçekleştirildi.

Ve elbette, bu şeyi komutların sıralı yürütülmesini kullanarak derliyoruz:

make
make install

Her şey yolundaysa ve derleme hatasız gerçekleştiyse bir sonraki adıma geçin.

İkinci adım: PCRE2 kitaplığını APR'ye bağlayın

Apache kaynakları APR kullanarak derlediği için kütüphaneyi APR'nin içine dahil etmemiz gerekiyor, aksi halde yeni PCRE2 fonksiyonlarını kullanacağımız için Apache kaynaklarında bilinmeyen fonksiyonlarla ilgili hatalar olabilir.

Bu çok açık olduğundan, resmi kaynaklardan kaynak indirme anını atlayalım, bu nedenle arşivi açtınız ve APR yapılandırmasını gerçekleştirdiniz:

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

Kütüphaneyi kurmak için standart konumu kullanmak istemiyorsanız veya şunu belirtmezseniz, doğal olarak önekte yolunuzu belirtirsiniz:

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

Yapılandırmayı tamamladıktan sonra dizine gidin: /etc/webserver/srcsrv/apr-1.7.0/build

Veya: /sizin/yolunuz/kütüphaneye/derleme

Bu dizinde apr_rules.mk dosyasını bulun ve sonuna şu satırları ekleyin:

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

Kütüphaneyi bağlama:

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

Kaydedin ve APR kaynaklarının kök dizinine gidin: /your/path/to the kütüphane.

Değiştirilmiş APR'mizi derleyelim:

make
make install

Her şey yolundaysa ve derleme hatasız gerçekleştiyse bir sonraki adıma geçin.

Üçüncü adım: Apache için kaynaklardan APR-util oluşturun

Bu kütüphaneyi kaynaktan indirdiniz, APR-util ile açılan arşivin kök klasörüne gidin ve aşağıdaki komutları sırayla girin:

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

Kütüphaneyi kurmak için standart konumu kullanmak istemiyorsanız veya şunu belirtmezseniz, doğal olarak önekte yolunuzu belirtirsiniz:

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

Ayrıca APR'mizi buraya bağlıyoruz:

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

Dördüncü adım: PCRE2'yi desteklemek için Apache git'ten kaynakları indirin

Önemli: Kaynakları git'in en son sürümünden indiriyoruz.

Ap_regex.h ve util_pcre.c gibi iki kaynağı indirmemiz gerekiyor, bağlantılar aşağıda:
ap_regex.h
util_pcre.c

Şimdi Apache httpd kaynak dizininize gidin ve aşağıdaki komutlarla Apache'yi oluşturun:

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

Kütüphaneyi kurmak için standart konumu kullanmak istemiyorsanız veya şunu belirtmezseniz, doğal olarak önekte yolunuzu belirtirsiniz:

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

Ayrıca Apache'yi oluşturmak için kendi takdirinize bağlı olarak ek komutlar da belirtebilirsiniz; yani modülleri ve kitaplıkları etkinleştirme veya devre dışı bırakma komutlarını kastediyorum.

Sonra Apache httpd kaynak dizinimize gidiyoruz, elimde şu var:

/etc/webserver/srcsrv/httpd-2.4.41

Doğal olarak dizininize gidersiniz, dizinde değiştirin:

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

Apache git'ten indirdiğimiz ap_regex.h dosyası.

Ayrıca dizine gidiyoruz:

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

util_pcre.c dosyasını Apache git'ten indirdiğimiz dosyayla değiştiriyoruz

Şimdi geriye kalan tek şey PCRE2 bağlantısını Apache'nin kendisine eklemek, ap_config_auto.h dosyasını bulmanız gerekiyor, dizinde bulunuyor:

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

Bu dosyanın en başına aşağıdaki satırları ekleyin:

/* Load PCRE2 */
#define HAVE_PCRE2 1

Artık Apache httpd'yi PCRE2 desteğiyle derlemenin gerçek anına hazırız.
Apache httpd kaynak dizinimize gidelim ve komutları sırayla çalıştırarak bunu derleyelim:

make
make install

Şimdi, eğer her şey yolunda ve hatasız gittiyse, o zaman Apache httpd'yi PCRE2 desteğiyle bir araya getirip derlemiş olacaksınız, bu da PCRE düzenli ifadelerini kullanan Apache modüllerinde olumlu değişiklikler anlamına gelir, bunlardan biri Modül yeniden yazmadır.

Sonuç olarak, bu yöntem PCRE2'nin Apache Yazılım Vakfı'nın resmi sürümünden önce kullanılmasını mümkün kılıyor, umarım PCRE2 destekli bir sürüm yakında yayınlanır.

Ayrıca standart .htaccess testi sırasında herhangi bir hata oluşmadı, hata yapan varsa yorumlara yazsın.

PS

Yığınım için PCRE'nin iki farklı sürümünü kullanma durumu nedeniyle biraz kafam karıştı ve bunu düzeltmeye karar verdim.

Kaynak: habr.com

Yorum ekle