Virtual Hosts einrichten - Anfängerfrage

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
doktorknow
Beiträge: 17
Registriert: 20.03.2017 21:24:27

Virtual Hosts einrichten - Anfängerfrage

Beitrag von doktorknow » 15.08.2017 19:02:32

Hallo,

ich versuche gerade zwei WebSites auf meinem Raspberry einzurichten. Die eine möchte ich einfach zu Testzwecken nutzen, um Änderungen hochzuladen und auszuprobieren - die andere soll "stabil" laufen.
Ich habe einen dyndns2.net Account, bei dem ich unterschiedliche DynDNS Adressen belegen kann.
Ich möchte als eine WebSite unter: stable.dyndns2.net und eine unter test.dyndns2.net erreichen.

Meine Versuche sind so angelegt:
0001-stable.conf

Code: Alles auswählen

<VirtualHost *:80>
        ServerAdmin webmaster@stable.com
        ServerName dyndns2.net
        ServerAlias www.stable.dyndns2.net
        DocumentRoot /var/www/html/stable
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory /var/www/html/stable>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
 ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>
002-test.conf

Code: Alles auswählen

<VirtualHost *:80>
        ServerAdmin webmaster@test.com
        ServerName dyndns2.net
        ServerAlias www.test.dyndns2.net
        DocumentRoot /var/www/html/test
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory /var/www/html/test>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
 ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>
Ich habe den beiden DynDns Adressen unterschiedliche Ports zugewiesen, um diese an den Raspberry weiterzuleiten - sie übergeben aber an Port 80.
Wenn ich nun stable.dyndns2.net/stable eingebe, dann findet er die Seite nicht. Gebe ich stable.dyndns.net ein, so wird die IP richtig aufgelöst und die Seite gefunden.
Wenn die IP erst einmal aufgelöst ist, dann kann ich mit /test und /stable ebenfalls die richtigen Seiten erreichen.
Meine hosts sieht so aus:

Code: Alles auswählen

127.0.0.1       localhost
127.0.0.1       stable.dyndns2.net
127.0.0.1       test.dyndns2.net
Ich denke, dass ich ein grundsätzliches Verständnisproblem habe, oder?

Gruß
doktorknow

PS Wenn ich apache2 neu starte, erhalte ich immer folgende Meldung:

Code: Alles auswählen

Restarting web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.25. Set the 'ServerName' directive globally to suppress this message
Was bedeutet das?

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Virtual Hosts einrichten - Anfängerfrage

Beitrag von novalix » 16.08.2017 12:11:00

Du hast beiden VHosts den gleichen ServerName zugeordnet. Das kann nicht sinnvoll funktionieren so lange die VHosts beide auf "*:80", also auf die eingehenden Verbindung aller Interfaces zu lauschen.
Falls Du die Trennung tatsächlich IP-basiert organisieren willst, müsstest Du die VHosts nach diesem Muster anlegen:

Code: Alles auswählen

<VirtualHost 192.168.1.1:80>
....
</VirualHost>
<VirtualHost 192.168.1.2:80>
....
</VirualHost>
Wobei die hier verwendeten IPs natürlich meiner Fantasie entsprungen sind.
Du müsstest in diesem Fall aber sicherstellen, dass das Routing im Vorfeld so eingerichtet ist, dass Pakete für den jeweiligen VHost tatsächlich verläßlich auf das jeweilige Interface gemapped werden. Könnte schwierig werden.

Viel sinnvoller wäre es wohl die Trennung namenbasiert vorzunehmen:

Code: Alles auswählen

<VirtualHost *:80>
ServerName stable.dyndns2.net

....
</VirualHost>
<VirtualHost *:80>
ServerName test.dyndns2.net
....
</VirualHost>
Die ServerAlias-Einträge kannst Du auch generalisieren, indem Du dem Asterisk verwendest:

Code: Alles auswählen

ServerAlias *.stable.dyndns2.net
Somit kannst Du diesen VHost mit sämtlichen Subdomain-Strings also nicht nur "www" erreichen.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

doktorknow
Beiträge: 17
Registriert: 20.03.2017 21:24:27

Re: Virtual Hosts einrichten - Anfängerfrage

Beitrag von doktorknow » 16.08.2017 14:28:59

Vielen Dank für die Antwort.

Leider komme ich dennoch nicht weiter.
Ich habe die Dateien wie folgt angepasst:

Code: Alles auswählen

<VirtualHost *:80>
	ServerAdmin webmaster@test.dyndns2.net
	ServerName test.dyndns2.net
  ServerAlias *.test.dyndns2.net
	DocumentRoot /var/www/html/test

        <Directory /var/www/html/test>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>
und

Code: Alles auswählen

<VirtualHost *:80>
	ServerAdmin webmaster@stable.dyndns2.net
	ServerName test1.dyndns2.net
  ServerAlias *.stable.dyndns2.net
	DocumentRoot /var/www/html/stable

        <Directory /var/www/html/stable>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>
Wenn ich nun mit test.dyndns2.net auf die index.html in /var/www/html/test zugreifen will, dann wird keine Verbindung aufgebaut.
Das seltsame ist, dass ich bei der "normalen" Seite (nicht stable und nicht test - sondern direkt in html) erfolgreich mit "normal.dyndns2.net verbinden kann.
Von hier aus kann ich dann auch (nach erfolgreicher Namensaulösung) mit 95.3322.222.34:1231/stable oder mit 95.3322.222.34:1231/test auf die jeweiligen Ordner verbinden kann.

Kann sich das jemand erklären?
Gruß
doktorknow

Antworten