Django (wsgi) und WordPress koexistieren in Apache Virtualhost
Lesezeit: 2 Minuten
UrLicht
Ich habe ein Django-Projekt, das ich in zwei verschiedenen Unterverzeichnissen meiner URL bereitstellen muss, und ich brauche WordPress, das unter / läuft. Damit:
<VirtualHost *:80>
ServerName wildcard.localhost
ServerAlias *.localhost
AddType application/x-httpd-php .php
DocumentRoot /var/empty
Alias /site_media/ /home/zach/projects/python/myproject/static/
Alias /media/ /home/zach/projects/python/myproject/env/lib/python2.6/site-packages/django/contrib/admin/media/
Alias / /home/zach/projects/python/myproject/wordpress/
WSGIScriptAlias /accounts /home/zach/projects/python/myproject/app/privio.wsgi
WSGIScriptAlias /studio /home/zach/projects/python/myproject/app/privio.wsgi
<Directory /home/zach/projects/python/myproject/app>
Order allow,deny
Allow from all
</Directory>
<Directory /home/zach/projects/python/myproject/wordpress>
Order allow,deny
Allow from all
</Directory>
Bevor ich die Konfiguration für WordPress hinzufügte, funktionierte die Django-App einwandfrei. Aber mit diesem neuen Setup kann ich die WordPress-Installation unter / sehen, aber die Django-App wird nicht bedient. Ich bin ein bisschen ein Noob in der Apache-Konfiguration – was vermisse ich?
Mit anderen Worten, verwenden Sie DocumentRoot, um auf WordPress zu verweisen, das sich im Stammverzeichnis der Website befinden muss, und nicht in der Alias-Direktive.
Das WSGIScriptAliasMatch ist so, dass Django selbst denkt, dass es immer noch auf der Root-Site gemountet ist, obwohl nur nominierte Sub-URLs davon tatsächlich durchgeleitet werden. Dies vereinfacht die Dinge für urls.py.
Beachten Sie, dass das $1 am Ende des WSGI-Skriptpfads wichtig ist, also lassen Sie es nicht weg.
Manoj Govindan
Paging Graham Dumpleton 🙂
Ich wage eine Vermutung, dass die Linie
Alias / /home/zach/projects/python/myproject/wordpress/
überschreibt alles darunter. Daher alle Anfragen an /accounts wird von der WordPress-Anwendung und nicht von der Django-Anwendung verarbeitet.
Wenn Sie stattdessen eine WSGI-Anwendung im Stammverzeichnis einer Website bereitstellen möchten, geben Sie beim Konfigurieren der WSGIScriptAlias-Anweisung einfach „https://stackoverflow.com/“ als Bereitstellungspunkt an.
Beachten Sie jedoch, dass dadurch alle statischen Dateien, die im DocumentRoot enthalten sind, ausgeblendet werden und Anfragen an URLs, die sich auf die statischen Dateien beziehen, stattdessen von der WSGI-Anwendung verarbeitet werden.
Das funktioniert nicht mit virtuellen Hosts. Apache weigert sich: Syntax error on line 3 of /path/to/project/vhost.conf: WSGIPythonPath cannot occur within <VirtualHost> section.
– nichts101
18. November 2013 um 22:30 Uhr
9634500cookie-checkDjango (wsgi) und WordPress koexistieren in Apache Virtualhostyes