Apache2 + mod_wsgi + python 3.6 не отвечает - PullRequest
0 голосов
/ 30 сентября 2018

Я развертываю приложение Django с python 3.6 и virtualenv на сервере Ubuntu 18.4.Это моя конфигурация apache

<VirtualHost *:80>
    ServerName myapp.com
    Redirect / https://myapp.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName myapp.com
    SSLEngine On
    SSLCertificateFile    "/etc/apache2/ssl/myapp.com.crt"
    SSLCertificateKeyFile "/etc/apache2/ssl/myapp.comv.key"
    SSLCertificateChainFile "/etc/apache2/ssl/myapp.com.crt"
    SSLProxyEngine On

    Alias /static/ /home/ubuntu/myapp/assets/
    Alias /media/ /home/ubuntu/myapp/data/
    <Directory /home/ubuntu/myapp/data>
        Require all granted
    </Directory>
    <Directory /home/ubuntu/myapp/assets>
        Require all granted
    </Directory>
    <Directory /home/ubuntu/myapp>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myapp python-path=/home/ubuntu/myapp:/home/ubuntu/myapp/venv/lib/python3.6/site-packages
    WSGIProcessGroup myapp
    WSGIScriptAlias / /home/ubuntu/myapp/wsgi.py
</VirtualHost>

, если я запускаю mod_wsgi-express module-config, я получаю

LoadModule wsgi_module "/home/ubuntu/myapp/venv/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/ubuntu/myapp/venv"

, что является виртуозностью, которую я хочу использовать.

Тем не менее, когда я пытаюсь получить доступ к myapp.com, я получаю тайм-аут, и в файлах error.log или access.log ничего нет

error.log

[Sun Sep 30 11:42:37.066273 2018] [core:notice] [pid 628:tid 140584565169088] AH00094: Command line: '/usr/sbin/apache2'
[Sun Sep 30 11:42:39.728096 2018] [mpm_event:notice] [pid 628:tid 140584565169088] AH00491: caught SIGTERM, shutting down
[Sun Sep 30 11:42:39.812550 2018] [mpm_event:notice] [pid 882:tid 140042546797504] AH00489: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.0g mod_wsgi/4.6.4 Python/3.6 configured -- resuming normal operations
[Sun Sep 30 11:42:39.812642 2018] [core:notice] [pid 882:tid 140042546797504] AH00094: Command line: '/usr/sbin/apache2'

доступ.log

51.38.12.21 - - [30/Sep/2018:08:20:14 +0000] "GET / HTTP/1.1" 200 11192 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
37.135.181.196 - - [30/Sep/2018:10:40:24 +0000] "GET / HTTP/1.1" 200 3477 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
37.135.181.196 - - [30/Sep/2018:10:40:24 +0000] "GET /icons/ubuntu-logo.png HTTP/1.1" 200 3623 "http://3.120.98.140/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
37.135.181.196 - - [30/Sep/2018:10:40:25 +0000] "GET /favicon.ico HTTP/1.1" 404 503 "http://3.120.98.140/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"

Я попытался добавить WSGIApplicationGroup %{GLOBAL} в мой файл конфигурации apache, но результат тот же.

Что мне здесь не хватает?

Заранее спасибо

1 Ответ

0 голосов
/ 03 декабря 2018

Поскольку никто не пытался ответить, и я пытался сделать то же самое (только для CentOS), для меня это был SELinux.

Если у вас включен SELinux (кажется маловероятным в Ubuntu), это может быть отказ в доступе на чтение к файлу wsgi, хотя я ожидаю, что ваш журнал ошибок httpd и журнал аудита selinux покажут это.Мне пришлось изменить тип контекста:

$ ls -Z ~/myproject
drwxrwxr-x. admin admin unconfined_u:object_r:user_home_t:s0 myprojectenv
-rwxrw-r--. admin admin unconfined_u:object_r:user_home_t:s0 myproject.wsgi
$ chcon -t httpd_sys_content_t ~/myproject/myproject.wsgi
$ ls -Z ~/myproject/myproject.wsgi
-rwxrw-r--. admin admin unconfined_u:object_r:httpd_sys_content_t:s0 myproject.wsgi

В моем случае я также упустил из виду, что в моем тестовом проекте нужно было определить функцию под названием «приложение» вместо чего-то другого, и я переименовал ее в .wsgi из.Пы (хотя, я думаю, что это просто соглашение).

Раздел документации mod_wsgi по проверке вашей установки также был весьма полезен, в частности, убедившись, что я не запускаю mod_wsgi, скомпилированный для другой версии python или чего-то такого глупого.

https://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html

...