LINUX.ORG.RU

Установка mod-wsgi apache2.4

 , ,


0

1

Неудачно установил mod_wsgi в конфигурации:

Linux asus 5.8.0-44-generic #50~20.04.1-Ubuntu SMP Wed Feb 10 21:07:30 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-08-12T19:46:17

Python 3.8.5
flask.__version__: 1.1.1

Использовал виртуальные окружения (venv) и несколько вариантов установки mod_wsgi:

sudo apt-get install libapache2-mod-wsgi-py3 apache2-dev

и

source venv/bin/python
(venv) $ pip install mod_wsgi
(venv) $ mod_wsgi-express.exe module-config

Результат:

  1. apache практически умер (localhost status code 500)
  2. не выполняется не только инсталляция новых пакетов, в частности, того же mod_wsgi, но и полная переустановка сервера
  3. получаю Crash report:
 Start-Date: 2021-04-13  23:18:53
 Commandline: apt-get install libapache2-mod-wsgi
 Requested-By: mkaro (1000)
 Install: libapache2-mod-wsgi:amd64 (4.6.8-1ubuntu3)
 Remove: libapache2-mod-wsgi-py3:amd64 (4.6.8-1ubuntu3)
 Error: Sub-process /usr/bin/dpkg returned an error code (1)
 End-Date: 2021-04-13  23:18:54

Error: Sub-process /usr/bin/dpkg returned an error code (1)

mkaro@asus:~$ sudo apt remove apache2.*

завершается с той же ошибкой:

Setting up libapache2-mod-wsgi-py3 (4.6.8-1ubuntu3) ...
dpkg: error processing package libapache2-mod-wsgi-py3 (--configure):
 installed libapache2-mod-wsgi-py3 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 libapache2-mod-wsgi-py3
E: Sub-process /usr/bin/dpkg returned an error code (1)

Log Apache устойчивая ошибка:

[Wed Apr 14 08:50:27.427763 2021] [wsgi:error] [pid 10960] [client ::1:60574] mod_wsgi (pid=10960): Failed to exec Python script file ...

Как вылечить или хотя бы переустановить Apache?

Перехожу с варианта Windows, где сервис работает. Работает и Debug-mode рядом. Не удается развернуть production.


Ответ на: комментарий от mkaro

Обновление:

sudo apt-get install libapache2-mod-wsgi-py3 apache2-dev

дает прежнюю ошибку.

Переустановка тоже пока не получается, по крайней мере, так:

mkaro@asus:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 61 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up libapache2-mod-wsgi-py3 (4.6.8-1ubuntu3) ...
dpkg: error processing package libapache2-mod-wsgi-py3 (--configure):
 installed libapache2-mod-wsgi-py3 package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 libapache2-mod-wsgi-py3
E: Sub-process /usr/bin/dpkg returned an error code (1)

mkaro ()
Ответ на: комментарий от gruy

Вот тут и непонятно, какой модуль ставить. Появились признаки жизни после установки через pip. Модуль переименовал и скопировал по месту:

/usr/lib/apache2/modules/mod_wsgi.so

Сервис стартовал. Теперь пытаюсь понять что ему надо еще.

Ошибка apache2/error.log:

AH00051 ... exit signal Segmentation fault (11), possible coredump in /etc/apache2

Этот прием я использовал в Windows.

mkaro ()
Ответ на: комментарий от gruy

А в каком другом? Я пока не очень понимаю в каком… Попробую, конечно.

mkaro ()
Ответ на: комментарий от gruy

500 [wsgi:error] Truncated or oversized response headers…

Уже вошел в стопор). Не понимаю как лечить. Ну всяко бывало, и в windows тоже, но второй день пытаюсь установить сайт, как-то не очень…

Стартовый скрипт как бы работает (wsgi), поскольку работает авторизация, но дальше без сдвигов. А дальше - база, и база MSSQL, на другой машине. Но debug работает, аналог.

Что-то нужно apache.

mkaro ()
Ответ на: комментарий от mkaro

log/apache2/error.log:

[Wed Apr 14 14:04:36.092257 2021] [wsgi:error] [pid 12290] [client 127.0.0.1:58962] Truncated or oversized response headers received from daemon process 'perso': /var/www/html/perso/run.wsgi, referer: http://perso/auth/login
[Wed Apr 14 14:04:36.753331 2021] [core:notice] [pid 12151] AH00051: child pid 12285 exit signal Segmentation fault (11), possible coredump in /etc/apache2

access.log:

127.0.0.1 - - [14/Apr/2021:14:04:29 +0300] "POST /auth/login HTTP/1.1" 200 2883 "http://perso/auth/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
127.0.0.1 - - [14/Apr/2021:14:04:35 +0300] "POST /auth/login HTTP/1.1" 302 941 "http://perso/auth/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
127.0.0.1 - - [14/Apr/2021:14:04:35 +0300] "GET /provision HTTP/1.1" 500 795 "http://perso/auth/login" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"
127.0.0.1 - - [14/Apr/2021:14:05:27 +0300] "-" 408 0 "-" "-"

perso=127.0.0.1

Прошу прощения за «детальную» информацию… Но может кто-нибудь посоветует путь к спасению.

Как установить mod_wsgi в виртуальном окружении python-flask-apache. Hello world уж сильно отличается от реальной жизни.

mkaro ()
Ответ на: комментарий от gruy

Много всяких заворотов внутри, все перепробовал.

LoadModule wsgi_module "/var/www/html/perso/venv/lib/python3.8/site-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so"
WSGIPythonHome "/var/www/html/perso/venv"

WSGIRestrictStdout Off
WSGIScriptReloading On
WSGIPathAuthorization On

<VirtualHost *:80>
    #ServerName localhost
    ServerAdmin webmaster@localhost

    DocumentRoot "/var/www/html/perso"

    WSGIDaemonProcess perso user=mkaro group=mkaro processes=2 threads=5 display-name=%{GROUP}

    #Alias /favicon.ico /var/www/html/perso/favicon.ico
    Alias /static /var/www/html/perso/app/static

    WSGIScriptAlias / /var/www/html/perso/run.wsgi

    <Directory /var/www/html/perso/>
        WSGIProcessGroup perso
        WSGIApplicationGroup %{GLOBAL}
        #Order allow,deny
        #Allow from all
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
mkaro ()
Ответ на: комментарий от mkaro

Hello World (без проблем):

def application(environ, start_response):
    status = '200 OK'
    output = 'This is my Web Application!'

    response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output.encode('utf-8')]
mkaro ()
Ответ на: комментарий от mkaro

А это боевой стартер, тоже не знаю, что еще допилить:

python_home = '/var/www/html'

app_path = '%s/perso' % python_home

activate_this = '%s/venv/bin/activate_this.py' % app_path
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

import os
import sys

sys.path.insert(0, python_home)

root = os.path.dirname(os.path.abspath(__file__))
if root not in sys.path:
    sys.path.append(root)

from app import create_app
application = create_app(os.getenv('APP_CONFIG') or 'production')
mkaro ()
Ответ на: комментарий от mkaro

Думаю отказаться от venv и испытать основную ветку. Как-то тоже странно для меня, установка requirements выполняются куда-то в home … local/lib/python… вместо корня /usr/lib.

mkaro ()
Ответ на: комментарий от mkaro

Включил трассировку. Да, как раз на попытке соединения с БД и отвал (sqlalchemy.create_engine).

Т.е. «тяжелый» режим, что-то не так у wsgi.

mkaro ()
Ответ на: комментарий от mkaro

Ура!! Вычислил.

Версия pymssql. По дефолту 2.2.0, а нужна 2.1.5.

mod_wsgi apache удалил, переустановил в корень

sudo pip3 install mod_wsgi
mod_wsgi-express.exe module-config

Соединил два фолдера:

LoadModule wsgi_module "/usr/local/lib/python3.8/dist-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so"

WSGIPythonPath "/var/www/html/perso/venv:/usr/local"

1.5 суток.

mkaro ()
Ответ на: комментарий от mkaro

Скорость по сравнению с Windows примерно в 5 раз выше.

mkaro ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.