Есть две проблемы с установкой mod_wsgi в MacOS X Sierra.
Первая проблема заключается в том, что Apple сделала установку Apache по умолчанию, которую они предоставляют, совершенно непригодной для использования, когда речь идет о возможности установки сторонних модулей Apache. Это связано с препятствиями, которые уже были в предыдущих версиях MacOS X, что означало, что вам приходилось преодолевать препятствия, чтобы заставить его работать.
Проблема в данном случае заключается в том, что Apple удалила программы apr-1-config
и apu-1-config
из дистрибутива Xcode. Это означает, что apxs
потерпит неудачу при определенных типах запросов о существующей конфигурации Apache. Это информация, необходимая для создания сторонних модулей для Apache. Без знания того, где установлены заголовочные файлы, сборка модулей Apache завершится ошибкой.
Учитывая историю Apple, которая нарушала возможность установки дополнительных модулей Apache в каждом обновлении ОС и никогда не исправляла это на протяжении всего срока службы ОС, что требовало обходных путей, маловероятно, что они снова решат эту проблему.
На других форумах одним из предложений обойти проблему является установка пакетов APR и APU с помощью brew, а затем символическая ссылка на программы apr-1-config
и apu-1-config
из них в место, которое ищет apxs
. Мне это кажется подверженным ошибкам, так как кажется, что модули затем могут быть скомпилированы с файлами заголовков brew, и они могут не соответствовать версии библиотеки для тех, которые предоставляются установкой Apache операционной системы. Это может привести к сбоям.
Таким образом, единственное гарантированное решение — не использовать установку Apache, поставляемую с операционной системой.
Таким образом, одним из вариантов может быть использование brew для установки Apache и использование brew для установки Apache (а не только APR и APU из brew).
Другой вариант при использовании метода pip install mod_wsgi
— сначала использовать pip
устанавливаемый Apache, предоставленный для mod_wsgi
.
pip install -vvv mod_wsgi-httpd
Использовать это следует только там, где нет выбора, и вы всегда должны использовать системный Apache, если можете. Сейчас у нас, похоже, нет выбора.
Это установит Apache в установку Python или в виртуальную среду. Это займет некоторое время, так как он собирается скомпилировать/установить APR/APU/Apache и, возможно, другие необходимые библиотеки. Я использую -vvv
, чтобы вы могли видеть, как он выполняет компиляцию, иначе вы можете подумать, что он завис.
Как только это будет сделано, запустите pip install mod_wsgi
.
Это полезно только при использовании mod_wsgi-express
. Вы не можете использовать это, если хотите использовать скомпилированный mod_wsgi с операционной системой Apache, поскольку модуль, построенный таким образом, будет несовместим с операционной системой Apache.
Вторая проблема заключается в том, что MacOS X Sierra изменила API-интерфейсы операционной системы для получения информации о задачах процесса. Это будет означать, что mod_wsgi 4.5.7 и более ранние версии в любом случае не смогут скомпилироваться. В mod_wsgi 4.5.8 есть исправление, или вы можете использовать код из репозитория mod_wsgi github, пока не будет выпущен 4.5.8, если это необходимо.
ОБНОВЛЕНИЕ 1
Удалось включить хак в setup.py
для выполнения pip install mod_wsgi
. Это также будет в mod_wsgi 4.5.8. Это означает, что вы по-прежнему можете использовать системный Apache и вам не нужно устанавливать отдельный, например, с помощью pip install mod_wsgi-httpd
. Это не решит аналогичные проблемы с методом for configure/make
для установки mod_wsgi.
person
Graham Dumpleton
schedule
16.11.2016
xcode-select --install
, что они установлены при запуске? - person Graham Dumpleton   schedule 12.11.2016/usr/sbin/apxs
существует? Можете ли вы найтиapxs
где-нибудь в вашей системе? Можно использоватьfind / -name apxs
. Apple прерывает установку модулей Apache и mod_wsgi при каждом новом крупном обновлении ОС, и на этот раз похоже, что они не устанавливаютapxs
в обычное место. - person Graham Dumpleton   schedule 13.11.2016/usr/sbin/apxs
существует и apxs работает в терминале. Раньше я устанавливал xcode, но когда я запустил его на этот раз, его пришлось переустанавливать. (причиной этого могло быть обновление до Sierra) Даже после установки я получил ту же ошибку. - person A_Sandwich   schedule 13.11.2016/usr/sbin/apxs -q APR_CONFIG
. Если это дает путь к программе с именем вродеapr-1-config
, существует ли эта программа? - person Graham Dumpleton   schedule 13.11.2016Sandwichs-MacBook-Pro:sbin sandwich$ /usr/sbin/apxs -q APR_CONFIG /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.12.xctoolchain/usr/local/bin/apr-1-config apxs:Error: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.12.xctoolchain/usr/local/bin/apr-1-config not found!. Sandwichs-MacBook-Pro:sbin sandwich$
- person A_Sandwich   schedule 13.11.2016/Applications/Xcode.app/Contents/Developer/Toolchains
, если вы считаете, что он установлен. - person Graham Dumpleton   schedule 13.11.2016Swift_2.3.xctoolchain
иXcodeDefault.xctoolchain
- person A_Sandwich   schedule 13.11.2016