Тема: mod_wsgi для Python3 на CentOS
Дана проблема: під CentOS mod_wsgi "з коробки" існує лише для Python2. Переписувати весь код на Python2 щоб він працював в браузері якось не хочеться.
$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Зніс рідний mod_wsgi
sudo yum uninstall mod_wsgi
Пробую перезавантажити апач
$ sudo service httpd restart
Redirecting to /bin/systemctl restart httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
sudo systemctl status httpd.service
...
httpd[8867]: Invalid command 'WSGIDaemonProcess'
Зрозуміло, оскільки в мене в конфігурації апача вже є посилання на проект із wsgi.
Тепер думаю як діяти далі. Зрозуміло, що треба збирати пакет вручну; тільки поки що незрозуміло як саме. Якби знав де впаду - підстелив би соломки; тобто попрохав би девопса одразу ж ставити убунту; але в нього зараз ще глибока ніч, а мені о 16:45 на стендапі треба буде щось розповісти...
----
Upd: Пробую скористатися цією відповіддю на stackoverflow: https://stackoverflow.com/a/38287125
----
Upd: облом на передостанньому пункті:
$ make
/usr/bin/apxs -c -I/usr/include/python3.7m -DNDEBUG -D_GNU_SOURCE -Wc,-g -Wc,-O2 src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/lib64 -L/usr/lib64/python3.7/config-3.7m -lpython3.7m -lcrypt -lpthread -ldl -lutil -lm
"my" variable $installbuilddir masks earlier declaration in same scope at /usr/bin/apxs line 49.
/usr/lib64/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -DLINUX -D_REENTRANT -D_GNU_SOURCE -pthread -I/usr/include/httpd -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/python3.7m -DNDEBUG -D_GNU_SOURCE -c -o src/server/mod_wsgi.lo src/server/mod_wsgi.c && touch src/server/mod_wsgi.slo
In file included from src/server/mod_wsgi.c:22:0:
src/server/wsgi_python.h:24:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
apxs:Error: Command failed with rc=65536
.
make: *** [src/server/mod_wsgi.la] Error 1
Думаю що робити далі...
----
Upd: пробую тут: https://stackoverflow.com/questions/193 … gi-for-py3
і тут: https://stackoverflow.com/a/54721777
і тут: https://stackoverflow.com/a/21530768
----
Нарешті спрацювало: https://stackoverflow.com/a/44612205