Quand j'ai essayé de l'installer sur mac, c'était un peu différent, alors prenez note
Premièrement, quand je vérifie la dépendance de mod_wsgi de macports, ...
$ port info mod_wsgi
Warning: port definitions are more than two weeks old, consider using selfupdate
mod_wsgi @3.3 (www, python)
Variants: python24, python25, [+]python26, python27, python31, universal
Description: The mod_wsgi module is written in C code directly against the internal Apache and Python application programming interfaces. As such, for
hosting WSGI applications in conjunction with Apache it has a lower memory overhead and performs better than existing WSGI adapters for
mod_python or alternative FASTCGI/SCGI/CGI based solutions.
Homepage: http://www.modwsgi.org/
Library Dependencies: apache2, python26
Platforms: darwin
License: Apache
Maintainers: [email protected]
Python3.3 n'est pas inclus dans les dépendances. En d'autres termes, pour exécuter wsgi en utilisant python3.3, mod_wsgi peut ne pas fonctionner sur macports. Donc, comme avec Sakura VPS, construisez-le et installez-le vous-même.
(python33)
$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
$ tar zxvf mod_wsgi-3.4.tar.gz
$ cd mod_wsgi-3.4
$ ./configure --with-apxs=/opt/local/apache2/bin/apxs --with-python=/opt/local/bin/python3.3
checking Apache version... 2.2.22
configure: creating ./config.status
config.status: creating Makefile
$ make
(Abréviation)
$ sudo make install
(Abréviation)
$
Il ne semble y avoir aucun problème jusqu'à l'installation. Pourtant……
(LoadModule httpd.Ajouté à conf)
$ sudo /opt/local/apache2/bin/apachectl -S
httpd: Syntax error on line 119 of /opt/local/apache2/conf/httpd.conf: Cannot load /opt/local/apache2/modules/mod_wsgi.so into server: dlopen(/opt/local/apache2/modules/mod_wsgi.so, 10): Symbol not found: __Py_FalseStruct\n Referenced from: /opt/local/apache2/modules/mod_wsgi.so\n Expected in: flat namespace\n in /opt/local/apache2/modules/mod_wsgi.so
mod_wsgi.so ne peut pas être chargé. Quand j'ai essayé Google, je l'ai trouvé ici.
Provide the output from running:
otool -L /usr/libexec/apache2/mod_wsgi.so
$ otool -L /opt/local/apache2/modules/mod_wsgi.so
/opt/local/apache2/modules/mod_wsgi.so:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.21.0)
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.1.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
Il semble que mod_wsgi.so regarde Python 2.7. En lisant la page que j'ai trouvée, il semble que Framework doit être désactivé ...
Pour le moment, faites du chemin python le chemin complet de macports
(python33)$ ./configure --with-apxs=/opt/local/apache2/bin/apxs --with-python=/opt/local/Library/Frameworks/Python.framework/Versions/3.3/bin/python3.3 --disable-framework
checking Apache version... 2.2.22
configure: creating ./config.status
config.status: creating Makefile
$ make
(Abréviation)
$ sudo make install
(Abréviation)
$
(LoadModule httpd.Ajouté à conf)
$ otool -L /opt/local/apache2/modules/mod_wsgi.so
/opt/local/apache2/modules/mod_wsgi.so:
/opt/local/Library/Frameworks/Python.framework/Versions/3.3/Python (compatibility version 3.3.0, current version 3.3.0)
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.1.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.21.0)
$ sudo /opt/local/apache2/bin/apachectl -S
(Abréviation)
Syntax OK
Cette fois, il l'a reconnu correctement.
Recommended Posts