Instalou o mod_wsgi no Debian com o Pip e obteve o erro “undefined forkpty”

2

Estou tentando instalar o mod_wsgi no Raspbian Stretch Lite (que é baseado no Debian Stretch).

Seguindo a documentação , eu instalei o apache e o mod_wsgi com:

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

Tudo parece bem até agora. Para verificar se a instalação foi bem-sucedida, eu corri

mod_wsgi-express start-server

Mas recebi o erro

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

Então, o que eu fiz de errado?

A documentação do mod_wsgi possui uma seção sobre o erro indefinido de forkpty , mas ele só se aplica ao Fedora e construindo mod_wsgi a partir do código-fonte.

Caso seja importante, eu instalei o Python 3.6 com:

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
    
por dln385 08.04.2018 / 01:28

1 resposta

1

Solução alternativa

Eu tenho que trabalhar instalando a partir da fonte. Observe a opção - com-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

Isso não fornece o comando mod_wsgi-express , mas você obtém uma instalação funcional.

Outras Notas

  • Como mencionado aqui , Eu tentei adicionar LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libutil.so ao final de / etc / apache2 / envvars, mas essa correção não funcionou.
  • Usar sudo apt install libapache2-mod-wsgi-py3 só funcionará com o Python 3.5, não com o 3.6.
por 08.04.2018 / 09:26