Installierte mod_wsgi unter Debian mit Pip und erhielt den Fehler "undefined forkpty"

742
dln385

Ich versuche, mod_wsgi auf Raspbian Stretch Lite (das auf Debian Stretch basiert) zu installieren.

Nach der Dokumentation habe ich apache und mod_wsgi installiert mit:

sudo apt -y install apache2 apache2-dev source ~/venv/bin/activate pip3.6 install mod_wsgi 

Bis jetzt sieht alles gut aus. Um zu überprüfen, ob die Installation erfolgreich war, habe ich ausgeführt

mod_wsgi-express start-server 

Aber ich habe den Fehler bekommen

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

Was habe ich falsch gemacht?

Die Dokumentation zu mod_wsgi enthält einen Abschnitt zum undefined Forkpty-Fehler. Dies gilt jedoch nur für Fedora und das Erstellen von mod_wsgi aus dem Quellcode.

Für den Fall, dass es wichtig ist, habe ich Python 3.6 installiert mit:

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

1 Antwort auf die Frage

1
dln385

Problemumgehung

Ich habe es durch Installation aus dem Quellcode zum Laufen gebracht. Beachten Sie die Option --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 

Der mod_wsgi-expressBefehl ist nicht vorhanden, aber Sie erhalten eine funktionierende Installation.

Weitere Hinweise

  • Wie bereits erwähnt, habe ich versucht LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libutil.so, am Ende von / etc / apache2 / envvars hinzuzufügen, aber dieser Fix funktionierte nicht.
  • Die Verwendung sudo apt install libapache2-mod-wsgi-py3funktioniert nur mit Python 3.5, nicht mit 3.6.