Указывая Apache на mod_wsgi - PullRequest
       20

Указывая Apache на mod_wsgi

0 голосов
/ 20 сентября 2018

Если вам нравится давать однострочные ответы на длинные вопросы, касающиеся Apache , вот кандидат.

Кратко

Как мненастроить httpd.conf для запуска mod_wsgi?Что такое подходящая "сантехника"?

Длинный шпиль

Я начинаю с c:/Apache24/conf/httpd.conf, где соответствующие биты:

ServerRoot "c:/Apache24"
Listen 80
LoadModule access_compat_module modules/mod_access_compat.so
...
LoadModule mime_module modules/mod_mime.so
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
ErrorLog "logs/error.log"
LogLevel warn
<IfModule log_config_module>
    ...
    CustomLog "logs/access.log" common
</IfModule>

правильная подача

c:/Apache24/htdocs/
            └── static/
                └── index.html

Я изменяю последние так, чтобы они стали

c:/Apache24/htdocs/
            ├── static/
            │   └── index.html
            └── dynamic/
                ├── hello.py
                └── hello.wsgi

и добавляются в хвост httpd.conf строк

LoadFile "d:/anaconda3/python36.dll"
LoadModule wsgi_module "d:/anaconda3/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "d:/anaconda3"

<VirtualHost *>
    # ServerName example.com
    WSGIScriptAlias \ c:\Apache24\htdocs\dynamic\hello.wsgi
    <Directory c:\Apache24\htdocs\dynamic>
        Require all granted
    </Directory>
</VirtualHost>

WSGIScriptReloading On

Я прокомментировал директиву ServerName, так как считаю, что она здесь неактуальна.

hello.py содержит вашу типичную стартовую программу с одним маршрутом, без главной охраны, хотя IIUC не имеет значения, потому что этовсе равно пропустите mod_wsgi .Код Python использует Flask.Проблема может быть общей для любого веб-приложения WSGI.hello.wsgi имеет

from hello import app as application

Из путаницы между / и \ видно, что я запускаю все это в Windows.Я считаю, что это также не имеет значения, а также тот факт, что это Windows Server 2008 (не спрашивайте).Я также использую последнюю версию Anaconda3 (3.5.2 в настоящее время).Теперь я наконец могу задать вопрос.

Вопрос

Когда я запрашиваю http://mysite.foo/dynamic, я могу загрузить файлы .py и .wsgi, нос директивой VirtualHost все в порядке, судя по тому, что у хвоста бревен нет жалоб, logs/access.log и logs/errors.log.

Что такое кусок сантехники, который я 'м отсутствует?Как активировать маршрут в hello.py?

Примечание для будущих действий

Даже если использование Apache указывает на то, что кто-то движется к развертыванию, все равно полезно включить отладкутак, чтобы Flask отображал сообщения об ошибках в журнале ошибок Apache .

...