Apache sur macports, Python 3.3 + mod_wsgi3.4 sur non-macports

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.

Première fois

(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é ...

Deuxième fois

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

Apache sur macports, Python 3.3 + mod_wsgi3.4 sur non-macports
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Comment intégrer mod_wsgi dans Apache sur Windows Python
Apache mod_auth_tkt et Python AuthTkt
Django - Déploiement de l'hôte virtuel mod_wsgi Apache
Touchez Apache Beam avec Python
Apache Beam Cheet Sheet [Python]
Créer Apache Log CSV avec Python
Présentation pratique d'Apache Beam (Dataflow) [Python]
Définir plusieurs WSGIPythonPath avec Apache + mod_wsgi
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Jusqu'à ce que Python fonctionne sur Apache
Création d'un environnement pour Flask / MySql / Apache / mod_wsgi / virtualenv avec Redhat7 (Python2.7) Novembre 2020