web-dev-qa-db-ja.com

Pipを使用してDebianにmod_wsgiをインストールし、「undefinedforkpty」エラーが発生しました

Raspbian Stretch Lite(Debian Stretchに基づく)にmod_wsgiをインストールしようとしています。

ドキュメントに従って 、Apacheとmod_wsgiを次のようにインストールしました:

_Sudo apt -y install Apache2 Apache2-dev
source ~/venv/bin/activate
pip3.6 install mod_wsgi
_

これまでのところすべてが良さそうです。インストールが成功したことを確認するために、私は実行しました

_mod_wsgi-express start-server
_

しかし、私はエラーが発生しました

Apache2 (mod_wsgi-express): Syntax error on line 159 of /tmp/mod_wsgi-localhost:8000:1000/httpd.conf: Cannot load /home/pi/venv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-arm-linux-gnueabihf.so into server: /home/pi/venv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-arm-linux-gnueabihf.so: undefined symbol: forkpty

それで私は何を間違えましたか?

Mod_wsgiのドキュメント 未定義のforkptyエラーに関するセクションがあります ですが、Fedoraとソースからのmod_wsgiのビルドにのみ適用されます。

重要な場合は、Python 3.6 with:

_Sudo apt -y install build-essential checkinstall libbz2-dev libc6-dev libgdbm-dev libncursesw5-dev libreadline-gplv2-dev libsqlite3-dev libssl-dev openssl tk-dev zlib1g-dev
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
tar xzvf Python-3.6.5.tgz
cd Python-3.6.5
./configure
make
Sudo make altinstall
cd ..
Sudo rm -r Python-3.6.5
rm Python-3.6.5.tgz
python3.6 -m venv ~/venv
source ~/venv/bin/activate
pip3.6 install --upgrade pip
pip3.6 install setuptools wheel
_
2
dln385

Workaround

ソースからインストールすることで動作するようになりました。 -with-pythonオプションに注意してください。

pip3.6 uninstall mod_wsgi
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.6.4.tar.gz
tar xzvf 4.6.4.tar.gz
cd mod_wsgi-4.6.4
./configure --with-python=/usr/local/bin/python3.6
make
Sudo make install
cd ..
Sudo rm -r mod_wsgi-4.6.4
rm 4.6.4.tar.gz
echo "LoadModule wsgi_module /usr/lib/Apache2/modules/mod_wsgi.so" | Sudo tee /etc/Apache2/mods-available/wsgi.load
echo "LogLevel wsgi:info" | Sudo tee /etc/Apache2/mods-available/wsgi.conf
Sudo a2enmod wsgi
Sudo service Apache2 restart

これはmod_wsgi-expressコマンドを提供しませんが、動作するインストールを取得します。

その他の注意事項

  • ここに記載 として、/ etc/Apache2/envvarsの最後にLD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libutil.soを追加しようとしましたが、この修正は機能しませんでした。
  • Sudo apt install libapache2-mod-wsgi-py3の使用は、Python 3.5でのみ機能し、3.6では機能しません。
1
dln385