mod_wsgi под windows

Устанавливаем mod_wsgi под Windows. Описан путь от скачивания до установки и настройки.

Для корректной связки необходимо, чтобы версии python и apache были одинаковой разрядности Win32 / Amd64 и скомпилированы одинаковой версией компилятора VC10,11,14.

Apache

Рекомендована версия 2.4 и выше. Взять нужную версию можно отсюда:

https://www.apachelounge.com/download/

Важно выбрать правильный компилятор и разрядность. Оптимальным для Windows считаю win32. Используем компилятор VC14, так как только для этого компилятора у нас есть работающий модуль mod_wsgi.

Python 3.5

Важно под windows иметь версию python win32, так как это позволит скрестить его с Apache win32 и избавит от проблем совместимости PHP и других модулей, корректно работающих только в win32.

Скачать нужную версию можно отсюда вместе с другими, скомпилированными пакетами Python:

https://www.continuum.io/downloads

mod_wsgi

Теперь самое главное, как все это связать под windows с минимальными танцами с бубном. Нам понадобится уникальный, скомпилированный пакет для нашей версии python и apache.

Я рассматриваю версии:

  • python 3.5 win32
  • apache 2.4 win32 VC14
  • mod_wsgi win32 VC14

Неофициальный скомпилированный пакет можно скачать отсюда:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

На момент написания, нас интересует версия:

mod_wsgi-4.4.22+ap24vc14-cp35-none-win32.whl

Для установки используем pip (можно внутри нашего окружения):

pip install mod_wsgi-4.4.22+ap24vc14-cp35-none-win32.whl

Файл mod_wsgi.so будет доступен в верхней директории окружения. Его надо кинуть к остальным модулям apache\modules.

В файле httpd.conf надо добавить строку:

LoadModule wsgi_module modules/mod_wsgi.so

Готово. Можно перезапускать apache и ловить силком ошибки.

Дополнительно

Изначально все это может не работать из-за отсутствия библиотеки: VCRUNTIME140.DLL

Исправляется установкой Visual C++ for VS2015 от Microsoft, скачиваемого отсюда:

https://www.microsoft.com/en-us/download/details.aspx?id=48145

Тест нагрузки

В директории apache/bin:

ab -l -r -n 10000 -c 100 -k -H "Accept-Encoding: gzip, deflate" http://example.com/