Apache auf Macports, Python 3.3 + mod_wsgi3.4 auf Nicht-Macports

Als ich versuchte, es auf einem Mac zu installieren, war es etwas anders, machen Sie sich also eine Notiz

Wenn ich zuerst die Abhängigkeit von mod_wsgi von macports überprüfe, ...

$ 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 ist nicht in den Abhängigkeiten enthalten. Mit anderen Worten, um wsgi mit python3.3 auszuführen, funktioniert mod_wsgi möglicherweise nicht mit Macports. Erstellen und installieren Sie es wie bei Sakura VPS selbst.

Erstes Mal

(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
(Abkürzung)
$ sudo make install
(Abkürzung)
$ 

Bis zur Installation scheint es kein Problem zu geben. Jedoch……

(LoadModule httpd.Hinzugefügt zu 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 kann nicht geladen werden. Als ich Google ausprobierte, fand ich es hier.

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)

Es sieht so aus, als würde mod_wsgi.so Python 2.7 betrachten. Beim Lesen der gefundenen Seite scheint Framework deaktiviert zu sein ...

Zweites Mal

Machen Sie den Python-Pfad vorerst zum vollständigen Pfad von 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
(Abkürzung)
$ sudo make install
(Abkürzung)
$ 
(LoadModule httpd.Hinzugefügt zu 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
(Abkürzung)
Syntax OK

Diesmal erkannte er es richtig.

Recommended Posts

Apache auf Macports, Python 3.3 + mod_wsgi3.4 auf Nicht-Macports
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
So binden Sie mod_wsgi in Apache unter Python Windows ein
Apache mod_auth_tkt und Python AuthTkt
Django - Bereitstellung des virtuellen Hosts Apache mod_wsgi
Berühren Sie Apache Beam mit Python
Apache Beam Cheet Sheet [Python]
Machen Sie Apache Log CSV mit Python
Apache Beam (Datenfluss) Praktische Einführung [Python]
Legen Sie mit Apache + mod_wsgi mehrere WSGIPythonPath fest
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Bis Python auf Apache läuft
Erstellen einer Umgebung für Flask / MySql / Apache / mod_wsgi / virtualenv mit Redhat7 (Python2.7) November 2020