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:
Ş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