Deixa’m començar aquest post dient que tenia el mod_wsgi funcionant al costat de l’Apache al meu Mac 10.8 amb molta satisfacció durant un temps. No obstant això, després de fer l’actualització a la versió 10.9 (OSX Mavericks), el fitxer mod_wsgi.so va desaparèixer del meu ordinador. A més, el fitxer httpd.conf també va ser sobrescrit (l’actualització va ser prou amable com per guardar-ne una còpia abans de fer-ho).

Explico tot això perquè sàpigues que probablement hi ha més passos per afegir el mòdul mod_wsgi des de zero. Ho vaig fer fa molt de temps i no recordo exactament quins eren.”

Utilitzant Homebrew

Si no estàs familiaritzat amb Homebrew, pots llegir sobre això aquí: Homebrew

El meu primer intent va ser utilitzar Homebrew per instal·lar mod_wsgi, i posteriorment, potser, copiar el mòdul a la carpeta de mòduls d’Apache.

$ brew install mod_wsgi

No va funcionar. Vaig rebre aquest error:

mod_wsgi.c:34:10: fatal error: 'httpd.h' file not found
#include "httpd.h"
         ^
1 error generated.
apxs:Error: Command failed with rc=65536

Però no existeix. Potser si el vinculo amb la carpeta apache2 sota la carpeta SDK de més amunt. Nota: Si ets del tipus conservador que no li agrada trastocar el teu ordinador de tant en tant, el següent comandament potser no és el que et ve de gust fer.

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/* /usr/include/

Solució

brew install mod_wsgi
cp /Library/Caches/Homebrew/mod_wsgi-3.3.tar.gz /tmp
cd /tmp
tar -zxvf mod_wsgi-3.3.tar.gz
cd mod_wsgi-3.3.tar.gz
sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/* /usr/include/
./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/bin/python
make
make install
apachectl restart

llavors …

file `brew list mod_wsgi`
/usr/local/Cellar/mod_wsgi/3.2/libexec/mod_wsgi.so: Mach-O universal binary with 2 architectures
/usr/local/Cellar/mod_wsgi/3.2/libexec/mod_wsgi.so (for architecture x86_64):   Mach-O 64-bit bundle x86_64
/usr/local/Cellar/mod_wsgi/3.2/libexec/mod_wsgi.so (for architecture i386): Mach-O bundle i386

i verifiquem si està ben enllaçat:

$ otool -L /usr/local/Cellar/mod_wsgi/3.4/libexec/mod_wsgi.so
/usr/local/Cellar/mod_wsgi/3.4/libexec/mod_wsgi.so:
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 85 5.17.0)

$ which python
/usr/local/bin/python
$ brew reinstall mod_wsgi --with-brewed-python
==> Reinstalling mod_wsgi with --with-brewed-python
==> Downloading http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
Already downloaded: /Library/Caches/Homebrew/mod_wsgi-3.4.tar.gz
==> ./configure --prefix=/usr/local/Cellar/mod_wsgi/3.4 --disable-framework --with-apxs=/usr/sbin/apxs --with-python=/usr/local/bin/python
==> make install
==> Caveats You must manually edit /etc/apache2/httpd.conf to include 
LoadModule wsgi_module /usr/local/Cellar/mod_wsgi/3.4/libexec/mod_wsgi.so
NOTE: If you're _NOT_ using --with-brewed-httpd22 or --with-brewed-httpd24 and having installation problems relating to a missing `cc` compiler and `OSX10.9.xctoolchain`, read the "Troubleshooting" section of https://github.com/Homebrew/homebrew-apache
==> Summary