
Ich habe 2 verschiedene Webanwendungen auf meinem dedizierten Debian 6 installiert. Die erste befindet sich in /var/www/cast und die zugewiesene URL lautet `
beispiel.example.com/cast
`
Ich habe die zweite installiert, die Airtime heißt. Die zweite Installation bot keinen Installationspfad an, also wurde sie automatisch irgendwo installiert. Jetzt, wenn ich versuche, die erste einzugeben, bekomme ich die zweite. Wenn ich es versuche
beispiel.example.com/cast
es führt zu Airtime. Wenn ich gehe zu
beispiel.beispiel.com
es führte auch dorthin..
Dies sind die Einträge in der Datei airtime-vhost
<VirtualHost *:80>
ServerName example.example.com
#ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /usr/share/airtime/public
DirectoryIndex index.php
SetEnv APPLICATION_ENV "production"
<Directory /usr/share/airtime/public>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Irgendwelche Ideen, wie ich ihnen beiden eine eindeutige URL geben kann?
Antwort1
Es klingt so, als ob Airtime über einen eigenen Webserver verfügt, „cast“ (was auch immer das ist) jedoch nicht. Ist das richtig?
Wie dem auch sei, das allgemeine Problem kann auf viele Arten gelöst werden:
Sie können beide Anwendungen, wenn möglich, auf demselben Webserver ausführen. Dies wäre nur dann nicht möglich, wenn eine der Anwendungen von einer sehr spezifischen Version des Webservers abhängt (vorausgesetzt, Apache basiert auf der Airtime-Konfigurationsdatei), die mit der anderen Anwendung nicht kompatibel ist. Wenn Sie jedoch alle erforderlichen Apache-Module in eine einzige Instanz von Apache laden können, die ausreicht, um beide Apps auszuführen, müssen Sie jede Anwendung nur in einem separaten Pfad innerhalb des Dokumentstamms ablegen, z. B. /var/www/airtime und /var/www/cast, und es wird „einfach funktionieren“. Alternativ können Sie jedes Verzeichnis im Dateisystem dem Dokumentstamm zuordnen, entweder durch Simlinking in /var/www oder durch Apache-Konfigurationsanweisungen.
Sie können zwei verschiedene Webserver betreiben, diese aber auf unterschiedlichen Ports ausführen. Dadurch wird die URL zu mindestens einer der Instanzen so geändert, dass nach der Domäne eine Portnummer erforderlich ist, z. B.
http://example.com:8080/blah
wo:8080
der Port ist (ich empfehle, einen Wert größer als 1024, aber kleiner als 65000 zu wählen und die Nummer vor der Verwendung zu googeln, um sicherzustellen, dass es sich nicht um einen bekannten Port für einen Dienst handelt, den Sie bereits ausführen).Sie können zwei verschiedene Webserver betreiben, diese aber unter unterschiedlichen IP-Adressen ausführen. Sie können den Port
https
auf diese Weise standardmäßig bei 80 (oder 443 für ) belassen, aber Sie benötigen dann zwei verschiedene IPs.Sie können zwei verschiedene Webserver betreiben, diese aber unter derselben IP-Adresse, aber auf unterschiedlichen Subdomänen ausführen. Anschließend können Sie URL-Rewriting verwenden, um Anfragen automatisch
http://airtime.example.com
der Airtime-Anwendung und vonhttp://cast.example.com
der Cast-Anwendung zuzuordnen.All das oben Genannte können Sie sogar innerhalb eines Webservers ausführen, wenn die Konfiguration robust genug ist – und der Apache-Webserver ist robust genug, um all das oben Genannte innerhalb einer Webserverinstanz auszuführen, obwohl Sie für einige der Auswahlmöglichkeiten exotischere Konfigurationseinstellungen benötigen. Beachten Sie, dass ich dringend empfehle, alles innerhalb einer Webserverinstanz auszuführen.Erste, weil diese Methode flexibler und einfacher zu verwalten ist. Außerdem können Sie die Konfiguration wahrscheinlich durchführen, ohne sich um Ports oder IP-Adressen kümmern zu müssen, die im ersten Fall die Dinge für Ihre Benutzer und im zweiten Fall für Sie komplizieren.
Das Problem mit der Airtime-Konfiguration besteht darin, dass sie versucht, ein virtueller Host für zu sein, *:80
was bedeutet, dass jede Anfrage an Ihren Server auf Port 80 in das Dokumentenstammverzeichnis für Airtime abgebildet wird, d. h /usr/share/airtime/public
. Sie müssen sowohl die cast
Anwendung als auch die airtime
Anwendung innerhalb desselben virtuellen Hosts erhalten oder den virtuellen Host von Airtime von *:80
auf etwas wie beschränken airtime.example.com:80
, sodass nur Anfragen an diese Subdomäne an Airtime weitergeleitet werden.
Ihre Apache-Konfiguration, die in Debian integriert ist, befindet sich im /etc/apache2/
Verzeichnis . Gehen Sie also dorthin und sehen Sie sich das an apache.conf
. Beachten Sie, dass es auch eine <VirtualHost *:80>
Anweisung enthält. Nun, Sie können nicht zwei virtuelle Hosts haben, die behaupten, alle Anfragen auf Port 80 zu verarbeiten. Nur einer von ihnen kann gewinnen. Darin liegt das Problem.