Ce que j’ai:
Apache http server avec 4 serveurs virtuels avec des domaines de distinc:
www.mydomain.com points to /var/www/mydomain/htdocs (php code)
et il fonctionne. Tous les autres domaines ne sont pas pertinents.
Sur une autre machine, j’ai conçu un projet django avec deux applications et cela fonctionne bien avec le serveur intégré du django.
Ce dont j’ai besoin:
www.mydomain.com pointing to /var/www/mydomain/htdocs (php code) www.mydomain.com/recsys pointing to /opt/repsys (django code)
Je veux garder le code PHP sur root et installer django inside / repsys.
Je peux mettre mon code django sur root mais quand j’essaye de mettre / repsys j’ai deux problèmes:
Et j’ai cette erreur du code django:
Inverser pour ‘ajax’ avec les arguments ‘(u’viewproject’,) ‘et les arguments de mots clés’ {} ‘introuvable
Je peux voir que cela est dû au changement d’url (maintenant il inclut / repsys) et django ne sait pas comment inverser cette url, mais je n’ai aucune idée de la façon de résoudre ce problème …
Mon django est: 1.5.1
Voici mon wsgi.py
import os, sys sys.path.append('/opt/repsys') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "repsys.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
et mon fichier de configuration apache pour ce serveur virtuel:
LoadModule wsgi_module modules/mod_wsgi.so WSGISocketPrefix /var/run/wsgi #WSGIPythonPath /opt/repsys/ WSGIDaemonProcess repsyssite display-name=%{GROUP} WSGIProcessGroup repsyssite ServerAdmin [email protected] ServerName www.mydomain.com DocumentRoot "/var/www/mydomain/htdocs" WSGIScriptAlias /reprep /opt/repsys/repsys/wsgi.py Alias /reprep/static /opt/repsys/static_serve Alias /reprep/media /opt/repsys/media Alias /admin_media /home/myuser/Django-1.5/django/consortingb/admin/media Order allow,deny Allow from all # Logfiles ErrorLog /var/www/logs/glob/error.log CustomLog /var/www/logs/glob/access.log combined
Mon url.py principal comprend:
url(r'^report/', include('report.urls', namespace="report")),
Et mon rapport / url.py comprend:
url(r'^(?P\w+)/ajax/$', views.ajax, name='ajax'),
Et voici la ligne qui fonctionne lorsque je mets mon projet à la racine, mais échoue dans un sous-dossier:
$('#viewreportdiv').load("{% url 'report:ajax' 'viewproject' %}", {proj: id});
Quelqu’un peut-il indiquer comment résoudre ce problème?
Je ne suis pas sûr que vous cherchiez toujours une réponse à cette question, mais j’ai finalement réussi à le faire fonctionner, alors je pensais le poster ici.
J’ai pu résoudre ce problème en utilisant l’article que Graham Dumpleton a publié à l’adresse http://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.html
Au final, mon fichier /etc/httpd/conf.d/django.conf
ressemblait à ceci
LoadModule wsgi_module modules/mod_wsgi.so WSGIDaemonProcess mysite python-path=/var/www/html/mysite:/var/www/html/mysite/venv/lib/python2.7/site-packages WSGISocketPrefix run/wsgi WSGIScriptAlias /mysite /var/www/html/mysite/mysite_www/wsgi.py process-group=mysite Alias /static/ /var/www/html/static/ Alias /docs/ /var/www/html/mysite/docs/_build/html/ Allow from all Order deny,allow
Ici, je me sers du sous-répertoire Apache spécifié via WSGIScriptAlias
, plutôt que d’utiliser
.
De là, je peux accéder à mes pages php via: http://myserver.com/
et sur le site django sur http://myserver.com/mysite/
.
Notez que je devais utiliser la barre oblique lors de la navigation vers Django (1.7), sinon je serais sur la page principale, mais les inversions d’URL dans mon modèle ne seraient pas gérées correctement pour accéder aux pages enfants.