Saya ingin berkongsi pengalaman saya menterjemah Apache 2.4 kepada PCRE2, memandangkan PHP 7 pun telah lama menyokong perpustakaan PCRE2, tetapi Yayasan Perisian Apache sumber terbuka masih tidak.
Sudah tentu, saya kini mungkin mendahului keluaran Apache dengan sokongan PCRE2, kerana saya menggunakan sumber daripada git Apache, yang memberitahu kami bahawa sokongan PCRE2 sudah mungkin dalam keluaran seterusnya, tetapi bagi mereka yang sudah mahukan sokongan PCRE2 dalam Apache 2.4, dan siapa yang tidak mahu menunggu keluaran saya kongsikan salah satu caranya.
Artikel itu menganggap bahawa anda sedang mengumpul semua perisian yang diperlukan daripada kod sumber, senarai perisian dan versi pada masa penulisan:
PCRE2-10.33
1.7.0 APR
APR-util 1.6.1
Apache httpd 2.4.41
Langkah pertama: bina dan susun PCRE2
Mari kita langkau saat memuat turun sumber daripada sumber rasmi kerana ini terlalu jelas, jadi anda telah membongkar arkib, pergi ke folder dengan sumber PCRE2, dan jalankan arahan berikut untuk menyokong UTF:
./configure --prefix=/etc/webserver/pcre2-1033 --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode
Tentukan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang pustaka:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Jika tidak, anda mengumpul tanpa awalan.
Arahan yang selebihnya menunjukkan kemasukan sokongan untuk blok kod PCRE 8-bit, 16-bit dan 32-bit, dalam versi ini pemasangan dilakukan dengan mereka.
Dan sudah tentu, kami menyusun perkara ini menggunakan pelaksanaan berurutan arahan:
make
make install
Jika semuanya baik-baik saja dan kompilasi berjalan tanpa ralat, teruskan ke langkah seterusnya.
Langkah kedua: sambungkan perpustakaan PCRE2 ke APR
Memandangkan Apache menyusun sumber menggunakan APR, kami perlu memasukkan perpustakaan dalam APR itu sendiri, jika tidak, mungkin terdapat ralat tentang fungsi yang tidak diketahui dalam sumber Apache, kerana kami akan menggunakan fungsi PCRE2 baharu.
Mari tinggalkan masa memuat turun sumber daripada sumber rasmi kerana ini terlalu jelas, jadi anda membongkar arkib dan melakukan konfigurasi APR:
./configure --prefix=/etc/webserver/apr-170
Sememangnya, anda menunjukkan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang perpustakaan, atau jika anda tidak menyatakan:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Selepas melengkapkan konfigurasi, pergi ke direktori: /etc/webserver/srcsrv/apr-1.7.0/build
Atau: /your/path/to the library/build
Cari fail apr_rules.mk dalam direktori ini dan tambahkan baris pada penghujung di mana:
EXTRA_LIBS=-lrt -lcrypt -lpthread -ldl
Menyambung perpustakaan:
-lpcre2-8 -L/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pcre2/lib
Simpan dan pergi ke direktori akar sumber APR: /your/path/to the library.
Mari kumpulkan APR kami yang diubah suai:
make
make install
Jika semuanya baik-baik saja dan kompilasi berjalan tanpa ralat, teruskan ke langkah seterusnya.
Langkah ketiga: bina APR-util untuk Apache daripada sumber
Anda telah memuat turun perpustakaan ini daripada sumber, pergi ke folder akar arkib yang tidak dibungkus dengan APR-util, dan masukkan arahan berikut secara berurutan:
./configure --prefix=/etc/webserver/apr-util-161 --with-apr=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr
make
make install
Sememangnya, anda menunjukkan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang perpustakaan, atau jika anda tidak menyatakan:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
Kami juga menyambungkan APR kami di sini:
--with-apr=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr
Langkah empat: muat turun sumber dari Apache git untuk menyokong PCRE2
Penting: Kami memuat turun sumber daripada edisi terkini git.
Kami perlu memuat turun dua sumber seperti ap_regex.h dan util_pcre.c, pautan di bawah:
Sekarang pergi ke direktori sumber httpd Apache anda dan bina Apache dengan arahan berikut:
./configure --prefix=/etc/webserver/apache-2441 --with-apr=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr --with-apr-util=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ apr-util --with-pcre=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pcre2/bin/pcre2-config
Sememangnya, anda menunjukkan laluan anda dalam awalan jika anda tidak mahu menggunakan lokasi standard untuk memasang perpustakaan, atau jika anda tidak menyatakan:
--prefix=/Π²Π°Ρ/ΠΏΡΡΡ/Π΄ΠΎ Apache httpd
Anda juga boleh menentukan arahan tambahan untuk membina Apache mengikut budi bicara anda, saya maksudkan arahan untuk mendayakan atau melumpuhkan modul dan perpustakaan.
Seterusnya kita pergi ke direktori sumber httpd Apache kami, saya mempunyai ini:
/etc/webserver/srcsrv/httpd-2.4.41
Anda secara semula jadi pergi ke direktori anda, gantikan dalam direktori:
/etc/webserver/srcsrv/httpd-2.4.41/include
Fail ap_regex.h, yang kami muat turun daripada git Apache.
Kami juga pergi ke direktori:
/etc/webserver/srcsrv/httpd-2.4.41/server
Kami menggantikan fail util_pcre.c dengan fail yang kami muat turun daripada git Apache
Sekarang yang tinggal hanyalah menambah sambungan PCRE2 dalam Apache itu sendiri, anda perlu mencari fail ap_config_auto.h, ia terletak dalam direktori:
/etc/webserver/srcsrv/httpd-2.4.41/include
Pada permulaan fail ini, masukkan baris berikut:
/* Load PCRE2 */
#define HAVE_PCRE2 1
Nah, kini kami bersedia untuk saat sebenar menyusun Apache httpd dengan sokongan PCRE2.
Mari pergi ke direktori sumber httpd Apache kami dan susun ini dengan melaksanakan perintah secara berurutan:
make
make install
Sekarang, jika semuanya berjalan lancar dan tanpa ralat, maka anda akan mempunyai Apache httpd yang dibina dan disusun dengan sokongan PCRE2, yang bermaksud perubahan positif dalam modul Apache yang menggunakan ungkapan biasa PCRE, salah satunya ialah penulisan semula Modul.
Kesimpulannya, kaedah ini memungkinkan untuk menggunakan PCRE2 sebelum keluaran rasmi dari Yayasan Perisian Apache, saya berharap versi dengan sokongan PCRE2 akan dikeluarkan tidak lama lagi.
Selain itu, semasa ujian standard .htaccess, tiada ralat berlaku, jika sesiapa mempunyai sebarang ralat, tulis dalam komen.
PS
Saya agak keliru dengan situasi menggunakan dua versi PCRE yang berbeza untuk timbunan saya, dan saya memutuskan untuk membetulkannya.
Sumber: www.habr.com