ソースからApacheをコンパイルし、静的にリンクしていますmod_ssl
。システムにインストールされているバージョンとは異なるバージョンのOpenSSLを使用したいと考えています。によって管理され続ける他のインストールされたソフトウェアによって使用されるコアシステムのSSLバージョンを変更したくないので、CentOSであるシステムの残りの部分に影響を与えない方法でこれを実行したいと思います。パッケージマネージャー。
これを適切に行うにはどうすればよいですか?
Apacheをコンパイルしてみました--with-ssl
これはコンパイルには問題ありませんが、実行しようとしても見つかりません。
./httpd: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
たぶん私はLD_LIBRARY_PATH
Apacheを起動するとき。これは正常に機能しますが、それが適切なアプローチかどうかはわかりません。これに取り組むための推奨される方法は何ですか?代替のライブラリ検索パス用のディレクトリを追加するためのより良い方法はありますか?
まず、 OpenSSL の目的のバージョンを取得し、システムバージョンに干渉しない場所にインストールする必要があります、例えば/opt
:
$ ./config \
--prefix=/opt/openssl-VERSION \
--openssldir=/opt/openssl-VERSION
$ make
$ Sudo make install
次に、最新の Apache 2.4.x 、 APRおよびAPR-Util ライブラリを取得します。 3つのパッケージすべてを同じソースツリーに解凍する必要があります。後者の2つは、Apacheが期待する場所にあります。例えば:
$ tar zxvf httpd-VERSION.tar.gz
$ cd httpd-VERSION/srclib/
$ tar zxvf ../../apr-VERSION.tar.gz
$ ln -s apr-VERSION/ apr
$ tar zxvf ../../apr-util-VERSION.tar.gz
$ ln -s apr-util-VERSION/ apr-util
次に、Apacheを構成してインストールします。 mod_ssl
モジュールは静的にコンパイルされ、他のすべてのモジュールは次のように動的にコンパイルされます:
$ ./configure \
--prefix=/opt/httpd \
--with-included-apr \
--enable-ssl \
--with-ssl=/opt/openssl-VERSION \
--enable-ssl-staticlib-deps \
--enable-mods-static=ssl
$ make
$ Sudo make install
LD_LIBRARY_PATHをbinディレクトリのenvvarsファイルに追加します。これはapachectlによって使用されます。