
Ich habe einCentOS 7-Servermit etwa 20 Domänen, die alle automatisch verwaltet werden, mit einemvhosts-Datei in /etc/httpd/conf.d.
ich versuche zu lernenDjangound wollte damit eine einzelne Domäne einrichten, also habe ich der .conf-Datei einen bestimmten virtuellen Host hinzugefügt.
Das Ergebnis ist, dass die Django-Domäne gut funktioniert, aberalle anderen Seiten sind kaputt(versuche, Django zu verwenden, aber es treten Fehler auf).
Die Django-Domäne hatzwei Ordner: djangodomain.comfür statische Dateien unddjangodomain.appfür die Python-Dateien.
Wie kann ich eine einzelne Django-Domäne in mein vorhandenes virtuelles Host-Setup mit vielen Domänen integrieren?
Vorhandene vhosts.conf:
<VirtualHost *:80>
serveradmin [email protected]
serveradmin [email protected]
usecanonicalname off
# www.site.com » site.com
rewriteengine on
rewritecond %{HTTP_HOST} ^www\.(.*)$ [nc]
rewriterule ^(.*)$ http://%1 [r=301,l]
# file locations
virtualdocumentroot "/home/username/%0"
<directory "/home/username/*">
allowoverride all
require all granted
options indexes followsymlinks
options +execcgi
options +includes
</directory>
</VirtualHost>
Was ich hinzugefügt habe und was alles außer der Django-Site kaputt gemacht hat:
<VirtualHost djangodomain.com:80>
ServerName djangodomain.com
ServerAlias www.djangodomain.com
ServerAdmin [email protected]
DocumentRoot /home/username/djangodomain.com
WSGIScriptAlias / /home/username/djangodomain.app/django.wsgi
<Directory /home/username/djangodomain.app>
Order allow,deny
Allow from all
</Directory>
Alias /robots.txt /home/username/djangodomain.com/robots.txt
Alias /favicon.ico /home/username/djangodomain.com/favicon.ico
Alias /images /home/username/djangodomain.com/images
Alias /static /home/username/djangodomain.com/static
ErrorLog /home/username/djangodomain.logs/error.log
CustomLog /home/username/djangodomain.logs/access.log combined
</VirtualHost>
[Update: Problem gelöst] Crosspostet aufStapelaustausch
Antwort1
Sie können nicht eine Anwendung VirtualHost
mit derselben IP-Adresse und demselben Port ohne ServerName
oder ServerAlias
-Einstellungen mit einer Anwendung kombinieren, die diese Einstellungen hat. Sie können ausführen, apachectl -S
um zu sehen, was Apache tatsächlich von dieser Konfiguration hält.
Vorausgesetzt, Sie kennen alle 20 Domänennamen, die für den Zugriff auf Ihren virtuellen Standardhost verwendet werden, besteht die Lösung einfach darin, sie alle dort mit ServerName
/ aufzulisten ServerAlias
. Wenn Sie dies nicht tun, können Sie den neuen Namen beispielsweise einer anderen IP-Adresse und/oder einem anderen Port zuordnen.