Viele virtuelle Server auf einem Root-Server

Viele Yachten

Viele Yachten

Nachdem wir in den letzten Beiträgen etwas über Ubuntu 14.04., den LAMP Stack und die Installation von OwnCloud erfahren haben, ist vermutlich bereits viel vom „Schrecken“ eines Root-Servers verschwunden. Wenn das mit der Installation und Nutzung von OwnCloud so einfach geht, dann könnten Sie ja nun weitere webbasierte Anwendungen, wie beispielsweise eine Website mit einem Content Management System installieren.

An dieser Stelle sollten Sie ein wenig inne halten und überlegen, was Sie noch alles mit Ihrem Rootserver vorhaben. So grundsätzlich gibt es zwei Möglichkeiten:

  1. Nur Sie haben Zugang zum Server: Dann haben Sie vermutlich einen User Account und einen Root Account
  2. Auch andere Kollegen, Kunden oder Freunde haben Zugang zum Server: Dann gibt es vermutlich mehrere User Accounts und einen Root Account

Im ersten Fall können Sie sich Gedanken über virtuelle Webserver machen, im zweiten Fall müssen Sie es vermutlich. Bevor wir uns genauer mit den Benutzerkonten und den Zugriffsrechten beschäftigen, lassen Sie uns zunächst einen virtuellen Webserver einrichten.

Anwendungsfall

Ein Kollege aus der Firma, der für eine Fachabteilung zuständig ist (oder ein Kunde Ihrer Webagentur) möchte eine Website mit einem Content Management System betreiben. Er/Sie ist nicht an der Serverkonfiguration interessiert, sondern möchte mit dem Browser arbeiten und hin und wieder eine Datei hochladen. Es gibt mehrere Kunden wie diesen, die jeweils Ihre eigene „Umgebung“ benötigen.

Lösung

Wir benötigen auf unserem Root-Server einen virtuellen Webserver (vhost), evtl. einen zusätzlichen User-Account, evtl. einen File Transfer Protokoll (FTP)-Server und natürlich ein Content Management System. Der vhost soll exclusiv für diese Fachabteilung zur Verfügung stehen.

Loggen Sie sich als root User auf Ihrem Server ein.

1. Einrichten eines virtuellen Servers

Der Apache Webserver besitzt eine Konfigurationsdatei, von der aus weitere Konfigurationsdateien aufgerufen werden können. Unser virtueller Server ist so eine weitere Konfigurationsdatei. Diese zusätzlichen Konfigurationsdateien werden in bestimmten Ordnern gespeichert und können aktiviert und deaktiviert werden. Bevor sie den virtuellen Server anlegen, sollten Sie den Domainnamen kennen. Das macht die spätere Verwaltung erheblich einfacher, denn sie können die Verzeichnisstruktur mit dem gleichen Namen einrichten.

Nehmen wir an, ihr Kunde hat die Domain meinewebsite.ch.

Legen Sie eine Datei an (ich mache das hier mit dem Editor nano)

sudo nano /etc/apache2/sites-available/meinewebsite.ch.conf

und kopieren Sie die folgenden Anweisungen hinein

<VirtualHost *:80>
      ServerAdmin webmaster@meinewebsite.ch
      ServerName meinewebsite.ch
      ServerAlias www.meinewebsite.ch
      DocumentRoot /var/www/meinewebsite.ch/public_html/    
      ErrorLog /var/www/meinewebsite.ch/logs/error.log
      CustomLog /var/www/meinewebsite.ch/logs/access.log combined
</VirtualHost>
  • VirtualHost *:80 bedeutet, dass ihr Server auf dem Port 80 „lauscht“. Normalerweise müssten sie den URL Ihrer Website in dieser Form in Ihren Browser eingeben: http://meinewebsite.ch:80. Da der Port 80 standardmässig für Webserver genutzt wird, muss er im Browser nicht explizit eingegeben werden. Wenn Sie Ihren Webserver auf einem anderem Port betreiben, bespielweise 8080, dann müssen Sie ihn auch im Browser mit angeben (http://meinewebsite.ch:8080). Der Vorteil unterschiedlicher Ports ist, dass Sie den gleichen Domainname nutzen können.
  • ServerAdmin sollte die erreichbare E-Mail Adresse des „echten“ Admins sein.
  • ServerName der Domainname ohne www und ServerAlias der Domainname mit www
  • DocumentRoot ist das Verzeichnis auf Ihrem Root-Server in dem das gewünschte CMS liegen soll
  • ErrorLog ist der Platz an dem die Fehler aufgezeichnet werden und CustomLog der Platz an den das Zugriffslogs aufbewahrt werden. Das combined am Ende der Zeile ist ein Parameter, der ein bestimmtes Format in den Log-Dateien vorgibt.

Verzeichnisse erstellen

Die Verzeichnisse können mit dem Befehl mkdir (make directory) erstellt werden

sudo mkdir -p /var/www/meinewebsite.ch/public_html
sudo mkdir -p /var/www/meinewebsite.ch/logs

Der Parameter -p sorgt dafür, dass die Verzeichnisse „in einem Rutsch“ angelegt werden. Normalerweise müsste man erst das Verzeichnis meinewebsite.ch anlegen und dann das Verzeichnis public_html. Mit -p werden die fehlenden übergeordneten Verzeichnisse automatisch angelegt. Probieren Sie den obigen Befehl mal ohne -p und Sie werden sofort verstehen, was ich meine :).

Virtuelle Server aktivieren

Nun müssen Sie die vhost-Konfigurationsdatei aktivieren und den Apache2 Webserver neu starten.

sudo a2ensite meinewebsite.ch.conf
sudo service apache2 reload

Hinweis: Der Befehl zum deaktivieren lautet a2dissite meinewebsite.ch.conf. Der Webserver muss dann ebenfalls wieder gestartet werden.

Wo ist den nun die Website?

Auf dem Root-Server liegen die Dateien der Website im Verzeichnis /var/www/meinewebsite.ch/public_html. Momentan kann dort nur der user root zugreifen und momentan ist das Verzeichnis auch leer. Beim Aufruf würde eine Fehlermeldung angezeigt werden.

Um im Browser etwas zu sehen, müssen Sie den gewünschten Domainnamen auf Ihre Root-Server IP-Adresse linken. Je nachdem, welchen Domain-Provider sie nutzen, gibt es unterschiedliche Arten, diesen Link einzurichten.

NOVATREND empfiehlt für die Domainverwaltung Firma Amenic. Dort können Sie über ein Webinterface die Domains einfach auf Ihren Server linken.

Zum Ausprobieren können Sie auch die Domainauflösung auf Ihrem lokalen PC/MAC in der /etc/htdocs Datei einrichten. Hier ein Beispiel auf meinem MacBook (falls jemand die Befehle für ein Windows-System als Kommentar posten könnte, wäre ich sehr dankbar. Ich habe keinen Windows PC zum testen). Vergessen Sie nicht, den Eintrag später wieder zu entfernen ;).

grunzi:~ hagengraf$ sudo nano /etc/hosts
Password:

In der Datei die folgende Zeile eintragen

46.232.178.78   meinewebsite.ch

Danach können Sie mit einem ping nachsehen on die Auflösung funktioniert

grunzi:~ hagengraf$ ping meinewebsite.ch
PING meinewebsite.ch (46.232.178.78): 56 data bytes
64 bytes from 46.232.178.78: icmp_seq=0 ttl=55 time=64.910 ms
64 bytes from 46.232.178.78: icmp_seq=1 ttl=55 time=66.829 ms
64 bytes from 46.232.178.78: icmp_seq=2 ttl=55 time=62.607 ms
^C
--- meinewebsite.ch ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 62.607/64.782/66.829/1.726 ms
grunzi:~ hagengraf$

Der virtuelle Webserver funktioniert nun, aber es fehlt noch das Content Management System. Wenn Sie die Website im Browser anrufen, wird noch nichts dargestellt und in der error.log Datei steht die folgende Fehlermeldung

[Sun Nov 23 19:50:22.587837 2014] [autoindex:error] [pid 13803] [client 83.159.24.111:61370] AH01276: Cannot serve directory /var/www/meinewebsite.ch/public_html/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory in$

Der Webserver erhört Ihren Wunsch, etwas zu sehen, allein, es nichts vorhanden.

Damit Sie etwas sehen, erstellen sich einfach eine kleine Website mit ein paar Zeilen HTML und PHP um die Funktion des Webservers zu testen.

sudo nano /var/www/meinewebsite.ch/public_html/index.php

Fügen Sie den folgenden Text ein und speichern die Datei ab

<html>
<body>
<h1>Oh, es funktioniert! Das ist gut :)</h2>
Heute ist der <?php print(date("d-m-Y")); ?>
</body>
</html>

Wenn Sie nun im Browser die Domain meinewebsite.ch aufrufen sehen Sie das aktuelle Datum.

Testdatei index.php
Testdatei index.php
Im access.log finden Sie nun die folgende Zeile:

83.159.24.111 – – [23/Nov/2014:20:02:17 +0100] „GET / HTTP/1.1“ 200 362 „-“ „Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:33.0) Gecko/20100101 Firefox/33.0“

Ergebnis

So grundsätzlich haben wir einen virtuellen Server angelegt. Auf dieser Basis könnten Sie nun das Content-Management-System installieren, eine Datenbank und einen Datenbank-User anlegen. Das alles könnte mit den Berechtigungen des Apache 2 Users www-data laufen. Je nach Anforderung ist das unter Umständen gar nicht mal die schlechteste Lösung. Der Anwender hätte dann nur per Browser Zugriff auf das Content-Management-System.

Alternativ dazu könnten wir auch einen zusätzlichen User Account für unseren Kunden anlegen und einen FTP-Server einrichten. Für heute wollen wir es allerdings beim virtuellen Server belassen.

ACHTUNG

Sie können mit dieser Methode dutzende oder auch tausende von vhosts auf Ihrem Root-Server anlegen. Denken Sie daran, dass die Ressourcen Ihres Root-Servers durch einen endlichen Festplattenplatz und einen endlichen Hauptspeicherinhalt beschränkt sind.

Wieviele vhosts problemlos möglich sind, hängt von zahlreichen Parametern ab und kann nicht pauschal beantwortet werden. Probieren Sie es aus.


tl:dr Mit einem Root-Server können Sie zahlreiche Websites hosten

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen