PCRE2 を Apache 2.4 にサポートする方法

PHP 2.4 でさえ長い間 PCRE2 ライブラリをサポートしていましたが、オープン ソースの Apache Software Foundation はまだサポートしていないため、Apache 7 を PCRE2 に変換した私の経験を共有したいと思います。
もちろん、私は Apache git のソースを使用しているため、おそらく PCRE2 サポートを備えた Apache リリースよりも先にリリースされています。これにより、PCRE2 サポートは次のリリースですでに可能であることがわかりますが、すでに PCRE2 サポートを必要としている人にとっては、 Apache 2.4 のリリースを待ちたくない人のために、方法の XNUMX つを共有します。

この記事では、ソース コード、執筆時点のソフトウェアとバージョンのリストから必要なソフトウェアをすべて収集していることを前提としています。

PCRE2-10.33
APR 1.7.0
APR-util 1.6.1
アパッチ httpd 2.4.41

ステップ 2: PCREXNUMX をビルドしてコンパイルする

公式ソースからソースをダウンロードする部分はあまりにも明白なのでスキップしましょう。アーカイブを解凍し、PCRE2 ソースのあるフォルダーに移動し、次のコマンドを実行して UTF をサポートします。

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

ライブラリのインストールに標準の場所を使用したくない場合は、プレフィックスにパスを指定します。

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

それ以外の場合は、プレフィックスなしで収集します。

残りのコマンドは、8 ビット、16 ビット、および 32 ビット PCRE コード ブロックのサポートが含まれていることを示しており、このバージョンでは、アセンブリはそれらを使用して実行されました。

そしてもちろん、コマンドを順次実行してこれをコンパイルします。

make
make install

すべてが正常で、コンパイルがエラーなく完了した場合は、次のステップに進みます。

ステップ 2: PCREXNUMX ライブラリを APR に接続する

Apache は APR を使用してソースをコンパイルするため、APR 自体にライブラリをインクルードする必要があります。そうしないと、新しい PCRE2 関数を使用するため、Apache ソース内の未知の関数に関するエラーが発生する可能性があります。

公式ソースからソースをダウンロードする瞬間は明白すぎるため省略しましょう。そのため、アーカイブを解凍して APR 構成を実行しました。

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

当然のことながら、ライブラリのインストールに標準の場所を使用したくない場合、または次のように指定しない場合は、プレフィックスでパスを指定します。

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

構成が完了したら、ディレクトリ /etc/webserver/srcsrv/apr-1.7.0/build に移動します。

または: /your/path/to the library/build

このディレクトリで apr_rules.mk ファイルを見つけて、末尾に次の行を追加します。

EXTRA_LIBS=-lrt -lcrypt  -lpthread -ldl

ライブラリを接続する:

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

保存して、APR ソースのルート ディレクトリ (/your/path/to the library) に移動します。

変更した APR をコンパイルしましょう。

make
make install

すべてが正常で、コンパイルがエラーなく完了した場合は、次のステップに進みます。

ステップ XNUMX: ソースから Apache 用の APR-util をビルドする

このライブラリをソースからダウンロードし、APR-util で解凍されたアーカイブのルート フォルダーに移動し、次のコマンドを順番に入力します。

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

当然のことながら、ライブラリのインストールに標準の場所を使用したくない場合、または次のように指定しない場合は、プレフィックスでパスを指定します。

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

ここでも APR を接続します。

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

ステップ 2: Apache git からソースをダウンロードして PCREXNUMX をサポートする

重要: 最新版の git からソースをダウンロードします。

ap_regex.h と util_pcre.c などの XNUMX つのソースをダウンロードする必要があります (以下のリンク)。
ap_regex.h
util_pcre.c

次に、Apache httpd ソース ディレクトリに移動し、次のコマンドを使用して Apache をビルドします。

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

当然のことながら、ライブラリのインストールに標準の場所を使用したくない場合、または次のように指定しない場合は、プレフィックスでパスを指定します。

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

また、Apache を構築するための追加コマンドを自由に指定することもできます。つまり、モジュールとライブラリを有効または無効にするコマンドです。

次に、Apache httpd ソース ディレクトリに移動します。これは次のとおりです。

/etc/webserver/srcsrv/httpd-2.4.41

自然にディレクトリに移動し、ディレクトリ内を次のように置き換えます。

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

ファイル ap_regex.h は、Apache git からダウンロードしました。

次のディレクトリにも移動します。

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

ファイル util_pcre.c を、Apache git からダウンロードしたファイルに置き換えます。

あとは、Apache 自体に PCRE2 接続を追加するだけです。ファイル ap_config_auto.h を見つける必要があります。このファイルは次のディレクトリにあります。

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

このファイルの先頭に次の行を挿入します。

/* Load PCRE2 */
#define HAVE_PCRE2 1

さて、これで、PCRE2 サポートを使用して Apache httpd をコンパイルする本番の準備が整いました。
Apache httpd ソース ディレクトリに移動し、次のコマンドを順番に実行してこれをコンパイルしましょう。

make
make install

ここで、すべてがうまくいき、エラーがなければ、PCRE2 サポートを使用して Apache httpd をアセンブルおよびコンパイルしたことになります。これは、PCRE 正規表現を使用する Apache モジュールにポジティブな変更が加えられたことを意味します。その XNUMX つがモジュールの書き換えです。

結論として、この方法では、Apache Software Foundation からの正式リリース前に PCRE2 を使用することが可能になります。PCRE2 をサポートするバージョンがすぐにリリースされることを願っています。

また、標準の .htaccess のテスト中にエラーは発生しませんでした。エラーがある場合は、コメントに書き込んでください。

PS

スタックに XNUMX つの異なるバージョンの PCRE を使用するという状況に少し混乱したため、それを修正することにしました。

出所: habr.com

コメントを追加します