Nghttp2 Ver.1.43.0
参照:Nghttp2
PythonバインディングはPython 3が必須となった
Let's Encryptで常時SSL化した際、HTTP/2対応のためインストールしたNghttp2。先日リリースされた最新版のVer.1.43でPythonバインディングにPython 3が必須となり、ウチのWebサーバ(Mac mini G4)ではビルド(configure)が失敗するようになってしまった。
Pythonバインディングとは、要するにPythonプログラムからNghttp2の機能(HTTP/2)を使えるようにする事のようで、ウチのWebサーバでは特に必要ないのだけど、configure が失敗するのでこれを何とか突破してみることにした。なお、この突破方法はウチのWebサーバ(Mac mini G4, Mac OSX 10.4.11)の特殊な環境において何とかなったという事に過ぎず、他の環境でも同じ方法が使える保証はない。あくまで自分のための備忘録であるので、ご容赦願いたい。
Python 3はVer.3.8かそれ以降が必要らしく、ウチのWebサーバには現時点での最新版Ver.3.9.1がインストール済みである。
1) Nghttp2をダウンロードして解凍
Nghttp2公式ホームページ:https://nghttp2.org/
現時点での最新版は Nghttp2 v1.43.0
$ xzcat nghttp2-1.43.0.tar.xz | tar xf -
$ cd nghttp2-1.43.0
|
2) ビルド方法("build.sh"スクリプト作成)
#!/usr/local/bin/bash -x
export MACOSX_DEPLOYMENT_TARGET=10.4
export GCC="/usr/local"
export SSL="/usr/local/ssl"
export PYTHON_EXTRA_LDFLAGS="-framework CoreFoundation /Library/Frameworks/Python.framework/Versions/Current/Python"
export PATH="${GCC}/bin:$PATH"
export DYLD_LIBRARY_PATH="${GCC}/lib:${DYLD_LIBRARY_PATH}"
export PKG_CONFIG_PATH="${SSL}/lib/pkgconfig:${PKG_CONFIG_PATH}"
./configure \
CPP="${GCC}/bin/cpp" \
CC="${GCC}/bin/gcc" \
CXX="${GCC}/bin/g++" \
CFLAGS="-O2 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
CXXFLAGS="-O2 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
CPPFLAGS="-I${SSL}/include -I/usr/local/include -I/usr/include" \
LDFLAGS="-L${SSL}/lib -L/usr/local/lib -L/usr/lib" \
PYTHON="/usr/local/bin/python3" \
PYTHON_VERSION="3.9"
make
make check
注)「¥」は実際には半角の「\」(バックスラッシュ)
赤の太字部分が今回追加したPython 3に関する項目。
PYTHON_EXTRA_LDFLAGS環境変数は指定しないでおくとウチの環境では値が"-framework CoreFoundation"となってしまい、これが原因でconfigureが失敗していた。ウチのPython 3の環境に問題があるのかもしれないが、今回は強行突破しておいた。
3) ビルドしてインストール
$ chmod +x ./build.sh
$ ./build.sh
$ sudo make install
|
4) Apacheを再起動する
$ sudo /usr/local/apache2/bin/apachectl restart
|
|