Устанавливаем 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
На момент написания, нас интересует версия:
1 |
mod_wsgi-4.4.22+ap24vc14-cp35-none-win32.whl |
Для установки используем pip (можно внутри нашего окружения):
1 |
pip install mod_wsgi-4.4.22+ap24vc14-cp35-none-win32.whl |
Файл mod_wsgi.so будет доступен в верхней директории окружения. Его надо кинуть к остальным модулям apache\modules.
В файле httpd.conf надо добавить строку:
1 |
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:
1 |
ab -l -r -n 10000 -c 100 -k -H "Accept-Encoding: gzip, deflate" <a href="http://example.com/" target="_blank">http://example.com/</a> |