Cara membuat dukungan PCRE2 untuk Apache 2.4

Saya ingin berbagi pengalaman menerjemahkan Apache 2.4 ke PCRE2, karena bahkan PHP 7 telah lama mendukung perpustakaan PCRE2, dan open source Apache Software Foundation masih belum ada.
Tentu saja, saya mungkin lebih cepat dari rilis Apache dengan dukungan PCRE2 sekarang, karena saya menggunakan sumber-sumber dari geo Apache, yang memberi tahu kita tentang dukungan PCRE2 sudah mungkin dalam rilis berikutnya, tetapi bagi mereka yang sudah menginginkan dukungan PCRE2 di Apache 2.4, dan yang tidak ingin menunggu lepaskan berbagi salah satu cara.

Artikel ini mengasumsikan bahwa Anda mengumpulkan semua perangkat lunak yang diperlukan dari sumber, daftar perangkat lunak, dan versi pada saat penulisan:

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

Langkah Satu: Bangun dan Kompilasi PCRE2


Kami akan menghilangkan momen mengunduh sumber dari sumber karena terlalu jelas, jadi Anda membongkar arsip, pergi ke folder sumber PCRE2, dan jalankan perintah berikut untuk mendukung UTF:

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

Di awalan, tentukan jalur Anda jika Anda tidak ingin menggunakan lokasi standar untuk menginstal perpustakaan:

 --prefix=///  

Kalau tidak, kumpulkan tanpa awalan.

Perintah yang tersisa menunjukkan dimasukkannya dukungan 8-bit, 16-bit dan 32-bit blok kode PCRE, dalam perwujudan ini, perakitan dilakukan dengan mereka.

Dan tentu saja, kami mengkompilasi kasus ini menggunakan eksekusi perintah berurutan:

 make make install 

Jika semua aturan dan kompilasi berjalan dengan lancar, lanjutkan ke langkah berikutnya.

Langkah dua: hubungkan perpustakaan PCRE2 ke April


Karena Apache mengkompilasi sumber menggunakan April, kita perlu menghubungkan pustaka di April sendiri, jika tidak kesalahan dapat dibuat tentang fungsi yang tidak diketahui dalam sumber Apache, karena kita akan menggunakan fungsi PCRE2 baru.

Kami akan menghilangkan momen pengunduhan sumber dari sumber karena terlalu jelas, sehingga Anda membongkar arsip dan mengonfigurasi April:

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

Secara alami, tentukan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal pustaka, atau tidak menentukan:

 --prefix=///  

Setelah menyelesaikan konfigurasi, buka direktori: /etc/webserver/srcsrv/apr-1.7.0/build

Baik, atau: / path / Anda / ke perpustakaan / build

Temukan file apr_rules.mk di direktori ini, dan tambahkan di akhir baris di mana:

 EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl 

Koneksi perpustakaan:

 -lpcre2-8 -L///  pcre2/lib 

Simpan, pergi ke direktori root sumber April: / path / Anda / ke perpustakaan.

Kompilasi April kami yang dimodifikasi:

 make make install 

Jika semua aturan dan kompilasi berjalan dengan lancar, lanjutkan ke langkah berikutnya.

Langkah Tiga: Bangun APR-util untuk Apache dari Sumber


Anda mengunduh pustaka ini dari kantor sumber, pergi ke folder root dari arsip yang dibongkar dengan APR-util, dan masukkan perintah berikut secara berurutan:

 ./configure --prefix=/etc/webserver/apr-util-161 --with-apr=///  apr make make install 

Secara alami, tentukan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal pustaka, atau tidak menentukan:

 --prefix=///  

Juga di sini kami menghubungkan April kami:

 --with-apr=///  apr 

Langkah Empat: Unduh Sumber dari Apache Git untuk Mendukung PCRE2


Penting: Unduh sumber dari gita versi terbaru.

Kita perlu mengunduh dua sumber seperti ap_regex.h dan util_pcre.c, tautan di bawah ini:
ap_regex.h
util_pcre.c

Sekarang kita pergi ke direktori sumber Apache httpd kami, dan membangun Apache dengan perintah berikut:

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

Secara alami, tentukan jalur Anda di awalan jika Anda tidak ingin menggunakan lokasi standar untuk menginstal pustaka, atau tidak menentukan:

 --prefix=/// Apache httpd 

Juga, tentukan perintah tambahan untuk membangun Apache sesuai kebijaksanaan Anda, maksud saya perintah untuk mengaktifkan menonaktifkan modul dan pustaka.

Selanjutnya, buka direktori sumber Apache httpd Anda, saya punya ini:

 /etc/webserver/srcsrv/httpd-2.4.41 

Anda secara alami pergi ke direktori Anda, ganti di direktori:

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

File ap_regex.h, yang kami unduh dari Apache git.

Juga buka direktori:

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

Ganti file util_pcre.c dengan Apache yang kami unduh

Sekarang tetap menambahkan koneksi PCRE2 di Apache itu sendiri, Anda perlu menemukan file ap_config_auto.h, itu terletak di direktori:

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

Di awal file ini, masukkan baris berikut:

 /* Load PCRE2 */ #define HAVE_PCRE2 1 

Nah, sekarang kita siap untuk momen sebenarnya mengkompilasi Apache httpd dengan dukungan PCRE2.
Kami pergi ke direktori sumber Apache httpd kami, kompilasi kasus ini menggunakan eksekusi perintah berurutan:

 make make install 

Sekarang, jika semuanya berjalan dengan baik dan tanpa kesalahan, maka Anda akan mengumpulkan dan mengkompilasi Apache httpd dengan dukungan PCRE2, yang berarti perubahan positif pada modul Apache menggunakan ekspresi reguler PCRE, salah satunya adalah Modul menulis ulang.

Kesimpulannya, metode ini memungkinkan untuk menggunakan PCRE2 sebelum rilis dari Apache Software Foundation, saya berharap bahwa versi dengan dukungan PCRE2 akan segera dirilis.

Juga, selama pengujian standar .htaccess, tidak ada kesalahan terjadi, jika ada yang salah tulis dalam komentar.

PS


Saya sedikit terganggu oleh situasi menggunakan dua versi PCRE yang berbeda untuk tumpukan saya, dan saya memutuskan untuk memperbaikinya.

Source: https://habr.com/ru/post/id474556/


All Articles