Kategorien
Analytics Server Shared Hosting

PIWIK Analytics

Das Open-Source-Programm PIWIK ist eine Alternative zu Google Analytics. Es erschien in der ersten Version bereits im März 2009.

Piwik ist mittlerweiler sehr gut benutzbar und verlässlich und es hat den grossen Vorteil, dass die Daten der analysierten Websites auf dem eigenen Root-Server gespeichert werden!

Ausser der Statistik über Seitenabrufe gibt es natürlich Besucheranalysen (Länder, Browser, Betriebssysteme, Gerätemarken und -modelle), sowie Referreranalysen und Kartendarstellungen. Es existieren auch weitergehende Funktionen wie Kampagnen- und Zieltracking. Die IP-Adressen können aus datenschutzrechtlichen Gründen anonymisiert werden und es gibt native Clients für Android und iOS.

Piwik ist das Nachfolgeprojekt des inzwischen eingestellten Projekts phpMyVisites. Es nutzt PHP und MySQL. Die Besucherzählung erfolgt mit JavaScript, Zählpixel, über eine API oder eine Logdateianalyse.

In diesem Artikel wollen wir Piwik installieren und dessen Einbindung in WordPress zeigen. Für die meisten Open Source Content Management Systeme stehen entsprechende Erweiterungen zur Verfügung. Falls nicht, müssen Sie den Piwik JavaScript Tracking Code manuell einfügen. Eine Analyse ist immer möglich!

Installation

Als Installationsspezialist der letzten Wochen kennen Sie ja schon den Weg.

  • Virtuellen Server einrichten
  • MySQL User und Datenbank erstellen
  • Quellcode downloaden und auspacken
  • Programm installieren und konfigurieren

Im Falle von Piwik muss nun noch in den zu analysierenden Seiten eine Verbindung zu Piwik geschaffen werden.

Virtueller Server

Abhängig von Ihren Bedürfnissen, können Sie Piwik innerhalb einem eigenen Virtuellen Server betreiben, beispielsweise als Subdomain (http://piwik.servervlogger.ch) oder auch einfach in einem Unterverzeichnis eines bereits existierenden Virtuellen Server (http://servervlogger.ch/piwik).

Hier die Variante mit virtuellem Server:

Legen Sie eine neue Datei an. Der String „piwik.serverblogger.ch“ ist meine Beispieldomain. Fügen Sie hier Ihren Domainnamen ein.

nano /etc/apache2/sites-available/piwik.serverblogger.ch

<VirtualHost *:80>
  ServerAdmin piwik@piwik.serverblogger.ch
  ServerName piwik.serverblogger.ch
  DocumentRoot /var/www/serverblogger.ch/public_html/
  ErrorLog /var/www/serverblogger.ch/logs/error.log
  CustomLog /var/www/serverblogger.ch/logs/access.log combined
</VirtualHost>

Document Root Verzeichnis anlegen

mkdir -p /var/www/piwik.serverblogger.ch/public_html
mkdir -p /var/www/piwik.serverblogger.ch/logs

Aktivieren Sie den neuen virtuellen Server

a2ensite piwik.serverblogger.ch.conf

Piwik Quellcode

Laden Sie den Quellcode von der piwik.org Website.

wget http://builds.piwik.org/piwik.zip

und entpacken es in das Verzeichnis /srv/www/[Domainname]/public_html/.

Dem Archiv liegt eine Datei How to install Piwik.html bei. Sie enthält eine Weiterleitung auf die Online-Dokumentation http://piwik.org/docs/installation/.

Installation

Der Webinstaller führt in acht Schritten durch die Installation. Oben rechts kann die Sprache auf Deutsch umgestellt werden.

Willkommen bei der Piwik Installation
Willkommen bei der Piwik Installation

Die Systemüberprüfung checkt alle notwendigen Elemente – „je grüner, desto gut ;)“

Systemprüfung
Systemprüfung
Datenbank einrichten
Datenbank einrichten
Administrator Account erstellen
Administrator Account erstellen

Das Installationsprogram schlägt vor, gleich eine Website, die über Piwik analysiert werden soll, hinzuzufügen. Ich nehme das WordPress aus unserer Beispiel Installation.

Erste Website hinzufügen - Unsere Beispielistallation WordPress
Erste Website hinzufügen – Unsere Beispielinstallation WordPress

Der Installer zeigt mir den Tracking-Code für die WordPress Site an, ich werde jedoch im Anschluss ein Plugin installieren, dass dann Kontakt mit Piwik aufnimmt.

Tracking Code für die erste Site
Tracking Code für die erste Site

Piwik ist nun installiert und kreuzt standardmässig zwei wichtige Dinge an:

  • Do-not-Track Unterstützung

Do Not Track (DNT; engl. für „nicht verfolgen“) ist ein so genanntes HTTP-Header-Feld und signalisiert einer Webseite oder Webanwendung den Wunsch, dass diese über die Aktivitäten des Besuchers kein Nutzungsprofil erstellt. […] Zurzeit wird es durch die W3C standardisiert. […] Firefox war der erste Browser der dieses Feld unterstützte, später folgten Internet Explorer (ab Version 9), Safari, Opera und Chrome. Wikipedia

  • Anonymisierung der letzten Bytes der IP-Adresse
Glückwunsch - Piwik ist installiert
Glückwunsch – Piwik ist installiert

Der Screen in der Installation gefiel mir besonders. Er enthält einen Spendenaufruf – „Wieviel ist Ihnen Piwik wert?“

Spendenaufruf
Spendenaufruf
Piwik Dashboard
Piwik Dashboard

Piwik in WordPress

In WordPress können zusätzliche Plugins über die Administrationsoberfläche hinzugefügt werden. Einfach nach Piwik suchen und auf installieren klicken.

Plugin WP-Piwik installieren

Plugin WP-Piwik installieren

Nach der Installation landen Sie im Bereich der Plugins. Klicken Sie auf Einstellungen.

Neues Plugin WP-Piwik
Neues Plugin WP-Piwik

Öffnen Sie in einem separaten Browser-Tab das Piwik Dashboard und kopieren sich das API-Token in die Zwischenablage

API Token
API Token

Tragen Sie in den WordPress WP-Piwik Settings die Piwik URL und das Token ein

WP-Piwik Einstellungen
WP-Piwik Einstellungen

Anschliessen müssen Sie noch das Einfügen des Tracking Codes aktivieren.

Tracking Code
Tracking Code

Ab jetzt analysiert Piwik Ihre Website. Hier sehen Sie den ersten Zugriff auf unser Test-WordPress nach der Installation

Zugriff
Zugriff

Piwik Mobile App

Die Piwik Mobile Apps existieren für iOS und Android. Die Dokumentation empfiehlt einen separaten Benutzer Account mit View Rechten in der anzulegen.

Benutzer und Rechte
Benutzer und Rechte

In der App können beliebig viele Piwik Installationen abgefragt werde. Hier ein Screenshot mit der Menü-Übersicht

Piwik Android App
Piwik Android App

Weitere CMS-Plugins


tl:dr Piwik ist eine echte Alternative zu Google Analytics!

Kategorien
Content Management Systeme

Ein Blog mit Ghost und Node.js

Ghost ist eine minimalistisch aufgebautete Blogging-Plattform. Gestartet wurde das Projekt auf Kickstarter von John O’Nolan, der einfach nur eine wirklich einfache Blogging-Plattform haben wollte.

Das besondere an Ghost ist, das es in JavaScript mit Hilfe des Frameworks Node.js geschrieben wurde. Mit Hilfe von Node.js lassen sich hochperformante, skalierbare und echtzeitfähige Webanwendungen entwickeln. Node.js funktioniert dabei auch als Webserver. Da wir bereits einen Webserver auf Port 80 laufen haben (Apache2), müssen wir einen Weg finden, Apache2 und die Node.js Plattform parallel auf unserem Root-Server zu betreiben.

Wenn Sie noch unsicher sind, ob Sie Ghost wirklich benötigen, dann schauen Sie sich einfach zu Motivationszwecken einfach mal den Kickstarter Film aus 2013 an. Und denken Sie daran, dass es den klassischen LAMP Stack nun auch schon fast 20 Jahre gibt 🙂

Wenn Sie jetzt überzeugt sind :), dann lassen Sie uns starten. Zuerst müssen wir die Node.js Plattform installieren, dann das Ghost Blog, dann die Weiterleitung durch den Apache 2 und zu guter Letzt die permante.

Node.js auf Ubuntu 14.04. installieren

Da Node.js ein recht junges Projekt ist (Start in 2009), gibt es natürlich viele Änderungen und Anpassungen. In den Ubuntu 14.04 repositories ist die Version 0.10.25 enthalten. Diese Version ist zwar nicht die Neueste, aber recht stabil und vor allem ausreichend, um die Ghost Blogging Plattform zu installieren.

sudo apt-get update
sudo apt-get install nodejs

Das Paket nodejs stellt nur die absolute Basis Funktionalität bereit. Daher benötigt man noch den separaten Erweiterungsmanager Node.js package manager (npm).

sudo apt-get install npm

Normalerweise heisst Node.js auf der Kommandoebene node. In Ubuntu 14.04. heisst es nodejs. Die beiden folgenden Befehlen zeigen die Versionsnummern an und sollten nach der Installation ausgeführt werden um sicher zu gehen, dass alles geklappt hat.

novatrend@server1:~$ nodejs -v
v0.10.25
novatrend@server1:~$ npm -v
1.3.10

Die Sache mit dem Namen!

In der Ubuntu Version 14.04. heisst das Paket für Node.js nodejs. Das klingt zunächst mal logisch. Innerhaln des npm wird allerdings immer der Befehl node benutzt, so dass es hin und wieder Problem gibt. Dieser wunderbare Befehl (den ich ziemlich lange gesucht habe), löst das Problem.

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Ghost installieren

Als erstes muss das Installationverzeichnis angelegt werden. Ich installiere in /var/www/ghost.serverblogger.ch/.

sudo mkdir -p /var/www/ghost.serverblogger.ch/

Dann ins Installationsverzeichnis wechseln

cd /var/www/ghost.serverblogger.ch

und den Quellcode herunterladen

sudo curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

Auspacken

unzip -uo ghost.zip -d ghost

und ins das gerade erzeugte Verzeichnis ghost wechseln

cd ghost

Zur eigentlichen Installation wird der Packet Manager genutzt

sudo npm install --production

Nach der Installation können Sie den Server mit

sudo npm start

starten. Ghost läuft nun auf Port 2368 auf Ihrem Root-Server

Apache und Ghost

Um das Blog auch sehen zu können und alles über Port 80 zu routen, müssen Sie den Default vhost des Apache2 Webservers umkonfigurieren und ein Proxymodul installieren.

Öffnen Sie die Ghost Konfigurationsdatei

sudo nano /var/www/ghost.serverblogger.ch/ghost/config.js

Ändern Sie alle 127.0.01 Einträge in die echte IP Adresse und die URL. In meinem Fall ist das 46.232.178.78 und ghost.serverblogger.ch

Öffnen Sie die Apache2 Standard Vitualhost Konfigurationsdatei

sudo nano /etc/apache2/sites-available/000-default.conf

fügen diese drei Zeilen hinzu und kommentieren das DocumentRoot aus

#DocumentRoot /var/www/html
ServerName ghost.serverblogger.ch
ProxyPreserveHost On
ProxyPass / http://46.232.178.78:2368/

Laden Sie das Apache Proy Modul

sudo a2enmod proxy_http
sudo a2enmod proxy

und starten den Apache2 Server neu

sudo service apache2 restart

Wechseln Sie nun in das Ghost Installationverzeichnis

cd /var/ghost.serverblogger.ch/html/ghost

und starten npm neu

sudo npm start

Ihr Blog ist nun unter http://ghost.serverblogger.ch erreichbar. IhrBenutzerkonto können Sie unter http://ghost.serverblogger.ch/ghost einrichten

Ghost User anlegen
Ghost User anlegen
Administrationsbereich
Administrationsbereich
Die Benutzeroberfläche ist wirklich schick!
Mein Blog
Mein Blog
Zu guter letzt müssen Sie noch dafür sorgen, das Ghost permanent auf Ihrem Root-Server läuft. Schliessen Sie die Anwendung mit Ctrl-C und führen Sie die folgenden Befehle aus:

sudo npm install forever -g
cd /var/www/ghost.serverblogger.ch/ghost
sudo forever start index.js

Das Beenden des Blog ist emotional etwas kritisch 😉 Sie müssen Ihr Blog töten, da es ja „forever“ läuft. Mit dem Befehl

ps axl | grep node

finden Sie es den entsprechenden Prozess … und mit der User root darf es töten!

novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ ps axl | grep node
0     0  8162     1  20   0 671656 23016 ep_pol Ssl  ?          0:00 /usr/bin/nodejs /usr/local/lib/node_modules/forever/bin/monitor index.js
0     0  8164  8162  20   0 1005368 87748 ep_pol Sl  ?          0:01 /usr/bin/nodejs /var/www/ghost.serverblogger.ch/ghost/index.js
0  1000  8176  7574  20   0  11732   688 pipe_w S+   pts/0      0:00 grep --color=auto node
novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ kill -9 8162
-bash: kill: (8162) - Operation not permitted
novatrend@server1:/var/www/ghost.serverblogger.ch/ghost$ sudo kill -9 8162

Hinweis: Stellen Sie sich darauf ein, dass wirklich jeder, dem Sie ihr Ghost-Blog zeigen, ebenfalls eins haben möchte!


tl:dr Es gibt schönere Blogging-Plattformen als WordPress. Sie werden Ghost haben wollen 😉

Kategorien
Infrastruktur Server Verschlüsselung

Ein virtuelles privates Netzwerk – VPN

Wenn ein Computer mit dem Internet verbunden ist, ist er ein Teil des „ihn umgebenden Netzes“. Nimmt er eine Verbindung zu einem Virtual Private Network (VPN) auf, so erhält er eine andere IP-Adresse und wird damit auch ein Teil dieses anderen Netzes. Der Vorgang ist vergleichbar mit dem Umstecken des Netzwerkkabels oder der Auswahl eines anderen WiFi Netzes. Meistens werden VPN sinnbildlich als „Verlängerung“ eines Firmen-Netzwerkkabels für Mitarbeiter genutzt, die Zuhause oder beim Kunden auf das Firmennetz zugreifen müssen. Ein Szenario gewinnt allerdings mehr und mehr an Bedeutung.

Bei einem web-basiertes VPN wird kein virtuelles „Verlängerungskabel“ gelegt, sondern ein gesicherter Zugriff auf bestimmte Dienste des VPN (z.B. Firmennetz) realisiert. Diese Dienste müssen als Webanwendung oder Proxy aufgebaut sein.

  • Lokale Zugriffsbeschränkungen. Sie sind mit einem Netz verbunden, in dem Zugriffsbeschränkungen herrschen, beispielsweise in Ländern, Hotels oder Umgebungen, die bestimmte Websites/Services blocken. Wenn im VPN-Netz die gewünschten Services erreichbar sind, können Sie sie nutzen.
  • Schutz Ihrer Privatsphäre: Sie sind in einem öffentlichen Funknetz mit Ihrem Handy, Tablet oder PC und wollen nicht, dass Ihre Netzwerkanfragen vom Betreiber des öffentlichen Netzes mitgelesen werden können. Wenn das VPN-Netz vertrauenswürdig ist, ist Ihre Privatsphäre besser geschützt.

Ihr Computer muss in der Lage, über das Internet eine Verbindung mit einem VPN-Gateway aufzubauen und alle Netzwerkanfragen über dieses Gateway zu leiten. Der Kontakt zu einem VPN-Gateway sollte über verschlüsselte Verbindungen, sogenannte „VPN-Tunnel“, erfolgen, um eine weitgehend abhör- und manipulationssichere Verbindung durch das ungesicherte, eingeschränkte Netz hindurch zu ermöglichen.

Die Verbindung ist allerdings nur „weitgehend“ sicher, weil die Anzahl und Grösse der Datenpakete Rückschlüsse auf die Daten zulassen. Der VPN-Tunnel ist also an manchen Stellen ein bisschen „durchsichtig“. Sie ist auch nicht wirklich „abhörsicher“, da der Traffic ab dem VPN-Server Standort ja vermutlich unverschlüsselt übertragen wird.

Verbindungsarten

Technisch teilen sich die Verbindungen in

  • Site-to-Site: Die Netze der Niederlassungen einer Firma sind untereinander verbunden
  • End-to-Site: Sie verbinden sich mit dem einem VPN-Gateway um die gewünschten Services zu nutzen und/oder Ihre Privatsphäre zu schützen. Der Mitarbeiter beim Kunden verbindet sich mit dem VPN des Firmennetzes.
  • End-to-End: Der Mitarbeiter verbindet sich nicht direkt mit dem VPN des Firmennetzes, sondern zunächst mit einem VPN-Gateway auf einem anderen Server. Dieser Server stellt dann eine ebenfalls getunnelte Verbindung zum gewünschten Netz her.
  • Host-to-Host: Ist der Teil der End-to-End Verbindung, der zwischen zwei Servern stattfindet.

Protokolle

Sicherheit spielt bei der Authentifizierung gegenüber dem VPN und bei der Übertragung der Netzwerkpakete eine Rolle. Wichtig dabei ist die Verschlüsselng der Kommunikationsinhalte und die Authentifizierung aller beteiligten Partner untereinander.

Gängige Protokolle sind beispielsweise IPsec, TLS/SSL und SSH. Diese Protokolle werden auf unterschiedliche Art implementiert.

Eine verbreitete Implementierung ist OpenVPN. In diesem Artikel wollen wir das Open Source Programm auf unserem Root-Server unter Ubuntu 14.04 installieren, mit dem Laptop (MacBook) und Handy (Android) darauf zugreifen und unseren gesamten Netzwerktraffic über diesen Server leiten. Wir müssen dazu den OpenVPN Server auf dem Root-Server installieren und konfigurieren, Zertifikate für Server und Clients erzeugen, sowie die entsprechenden Clients auf Laptop und Telefon installieren und konfigurieren. Als Client nutzen wir auf dem Laptop das Programm Tunnelblick und auf dem Telefon openVPN Connect.

OpenVPN auf Root-Server installieren

Wir installieren folgende Pakete:

sudo apt-get install openvpn
sudo apt-get install easy-rsa

In den Paketen sind Beispielkonfigurationen sowie das Verzeichnis für die Schlüsselerzeugung enthalten. Dieses müssen an einen geeigneten Ort entpackt werden:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz
sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa2

Schlüssel und Zertifikate generieren

Die Schlüssel und Zertifikate sollten auf Ihrem lokalen Rechner generiert und dann auf den Root-Server übertragen werden. Ich mache es in diesem Blogeintrag auf dem Server.

Die Datei vars muss entsprechend Ihrer Daten angepasst werden

nano /etc/openvpn/easy-rsa2/vars

Passen Sie diese Vorlagen in der Datei auf Ihre Daten an

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export KEY_ALTNAMES=changeme

Bei mir sieht es dann so aus:

export KEY_COUNTRY="CH"
export KEY_PROVINCE="ZU"
export KEY_CITY="Wallisellen"
export KEY_ORG="NOVATREND"
export KEY_EMAIL="hagen@novatrend.ch"
export KEY_OU="blogvpn"
export KEY_ALTNAMES="blogvpn"
export KEY_NAME="blogvpn"
export KEY_CN="blogvpn"

Aufgrund eines Fehlers wird das Unterverzeichnis für die Keys nicht erstellt (weiterhin in /etc/openvpn/easy-rsa2/):

mkdir keys

Die neueste openssl-x.x.x.cnf muss in openssl.cnf kopiert werden.

cp openssl-1.0.0.cnf openssl.cnf

Die Datei vars muss den Umgebungsvariablen hinzugefügt werden

source ./vars

Nach dieser erstellen wir den Master-Schlüssel und werden eine Certificate Authority (CA)

./clean-all

./build-ca

Wir sind jetzt eine CA und im Verzeichnis /keys wurden die Dateien ca.crt und ca.key erzeugt.

Als nächstes erzeugen wir die Schlüssel für unseren Server

./build-key-server server [name_des_servers]

Nun müssen die Schlüssel für die Clients erzeugt werden, in meinem Fall einen für den PC und einen für das Telefon. Das kann man mit oder ohne Passwort machen. Mit Passwort muss das Passwort bei jedem Anmelden eingegeben werden.

Ohne Passwort:

./build-key client1
./build-key client2

Mit Passwort:
./build-key-pass client1
./build-key-pass client2

Jetzt müssen die Diffie-Hellman-Parameter generiert werden. Diese sind nötig, um kryptografische Schlüssel sicher über unsichere Kanäle auszuhandeln.

./build-dh

Alle benötigten Dateien liegen nun im Ordner /keys. Die Dateien mit der Endung .key sind die geheimen Schlüssel, die auf dem Rechner liegen sollten, zu dem sie gehören. Die .crt Dateien sind nicht geheim. server.key bleibt auf dem Server, ca.key muss vom Server entfernt werden und kann auf einem USB Stick gespeichert werden. Jeder Client benötigt noch die Datei ca.crt, damit er den Server identifizieren kann.

Hinweis: Es muss darauf geachtet werden, dass die Dateien nie im ASCII-Modus übertragen werden. Dies kann dazu führen, dass die Datei nicht mehr entschlüsselt werden kann und somit ein Verbinden mit dem openVPN-Server nicht möglich ist. Fehlermeldung: „Error: private key password verification failed“. Man umgeht das Problem, indem man alle zu übertragenden Dateien in ein .tar- oder .rar-Archiv packt.

Konfiguration des openvpn Servers

Die Server-Konfigurationsdatei /etc/openvpn/server.conf muss mit den richtigen Namen der Schlüssel versehen werden.

nano /etc/openvpn/server.conf

Diese Zeilen mit den Schlüsselverweisen müssen angepasst werden:

ca ca.crt
cert server1.crt
key server1.key  
dh dh2048.pem     

Diese Zeilen müssen auskommentiert werden

push "redirect-gateway def1 bypass-dhcp"
user nobody
group nogroup

Als letztes muss noch die Datei /etc/rc.local um diese sechs Befehle ergänzt werden

sudo -E nano /etc/rc.local
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Danach muss der Server neugestartet werden

reboot

Jetzt können Sie den openVPN Server starten

/etc/init.d/openvpn restart

Dann können Sie nachsehen, ob der openVPN Server läuft. So sollte es aussehen

root@server1:~# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1 ...

Client Einrichtung auf Apple OS X

Als Erstes müssen Sie die Dateien ca.crt, client1.crt und client1.key auf Ihrem Max. Zippen Sie die Dateien am besten mit dem Befehl

zip client1.zip ca.crt client1.crt client1.key

Sie müssen nun openVPN auf Ihrem Mac installieren. Es gibt ein Softwarepaket, namens Tunnelblick, das genau das sehr komfortabel tut. Laden Sie es von https://code.google.com/p/tunnelblick/ und installieren Sie es.

Welcome to Tunnelblick
Welcome to Tunnelblick
Klicken Sie auf „I DO NOT have configuration files“
Create and Edit a Sample Configuration?
Create and Edit a Sample Configuration?
Erstellen Sie sich eine Konfigurationsdatei. Tunnelblick erstellt einen Ordner mit dem Namen „Sample Tunnelblick VPN Configuration“ ,erzeugt dort die Datei config.ovpn und öffnet sie in einem Editor.

Passen Sie diesen Befehl auf die IP-Adresse Ihres Servers an

remote [IP des Root-Servers] 1194

Dann speichern Sie die Datei und entpacken die client1.zip in diesen Ordner, so dass nun die Dateien

ca.crt
client1.crt
client1.key
config.ovpn

enthalten sind. Benennen den Ordner um. Wichtig bei der Umbenennung ist die Endung .tblk.

Aus „Sample Tunnelblick VPN Configuration“ wird so beispielsweise vpn_serverblogger_ch.tblk.

Diese Datei müssen Sie nun doppelt anklicken und Tunnelblick liest die Konfiguration.

Konfiguration Tunnelblick
Konfiguration Tunnelblick

Ich wähle Only me

Konfiguration installiert
Konfiguration installiert
Der Installer erledigt seine Arbeit und in der oberen rechte Ecke des Bildschirms erscheint das Tunnelblick Symbol
Tunnelblick
Tunnelblick
Atmen Sie mal durch und klicken auf connect. Wenn alles gut geht, werden Sie mit dem openVPN Server Ihres Root-Servers verbunden …
Verbunden
Verbunden
Auf Ihrem Mac müsste nun ebenfalls ein tun Device sein

grunzi:~ hagengraf$ ifconfig
...
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 10.8.0.6 --> 10.8.0.5 netmask 0xffffffff

Besonders deutlich sehen Sie die Änderung, wenn Sie myipaddress.com aufrufen. Wenn Sie mit dem VPN verbunden sind, sollte dort die IP-Adresse Ihres Root-Servers erscheinen.

Client Einrichtung auf dem Android Telefon

Laden Sie sich die OpenVPN Connect App auf Ihr Android Telefon. Mein grösstes Problem war nun „Wie bekomme ich die Zertifikats- und Konfigurationsdateien auf mein Telefon?

Ich beschreibe dann mal meinen Weg: Ich habe ein Nexus 5 Android Telefon mit Cyanogenmod. Meine Idee war nun einfach ein zip Archiv der vier benötigten Daten auf dem Server zusammenzustellen und dann per Browser vom Telefon herunterzuladen.

Als erstes habe ich mir eine config.ovpn angelegt mit folgendem Inhalt:

client
dev tun
proto udp
remote 46.232.178.78 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client2.crt
key client2.key
comp-lzo
verb 3

Dann habe ich die vier Dateien in ein Archiv verpackt

root@server1:/etc/openvpn/easy-rsa/keys# zip client2.zip config.ovpn ca.crt client2.crt client2.key

Auf dem Telefon habe ich mir das Archiv geladen und entpackt

Dateimanager Android
Dateimanager Android
In der openVPN App habe ich dann Import von SD Card ausgewählt (Ich habe keine SD-Card am/im Telefon).
Auswahl der config.ovpn
Auswahl der config.ovpn
Jetzt die config.ovpn auswählen
Das Profil wird erfolgreich importiert
Profile imported
Profile imported
… und ich kann mich verbinden, muss allerdings vorher bestätigen, dass ich der App vertraue … Nunja …
I trust this application
I trust this application
Ich habe beschlossen der App zu vertrauen und kann mich problemlos mit dem Root-Server verbinden.
OpenVPN: Connected
OpenVPN: Connected
Die Verbindung kann ich nun bei Bedarf herstellen
OpenVPNConnect
OpenVPNConnect
Hilfreiche Quellen:

tl;dr: Es ist nicht schwer, ein virtuelles privates Netzwerk auf einem Root-Server, dem PC und dem Mobiltelefon einzurichten und damit ohne Einschränkungen zu arbeiten.

Kategorien
Content Management Systeme Webdesign

Installation der 5 verbreiteten Content Management Systeme

Open Source Content Management Systeme werden im grossen Stil zum Aufbau und zur Pflege von Websites seit gut 10 Jahren eingesetzt. In diesem Artikel geht es um die Installation jedes Systems auf einem Root-Server.

Wir wollen nicht auf die Vor- oder Nachteile der einzelnen Systeme eingehen. So unterschiedlich sind die fünf Systeme, von der technischen Seite her betrachtet, gar nicht :). Mit jedem dieser Systeme können kleine und auch grosse Websites erstellt werden. Die Realisierung ist eine Frage von Budget, Ressourcen, Wünschen, Erwartungen und Zielvereinbarungen.

Alle oben genannten CMS benötigen eine Datenbank (meist MySQL) und sie bestehen aus einer Sammlung von PHP Skripten und externen Bibliotheken. Zur Installation müssen ausser dem eigentlichen Webspace (vhost), ein Datenbank User Account und eine Datenbank zur Verfügung stehen.

Im deutschsprachigen Raum haben sich die Systeme WordPress, Joomla!, TYPO3, Contao und Drupal durchgesetzt.

Inhalt

Datenbank

Zum Thema Datenbank gibt es ein paar Dinge zu sagen. Zunächst gibt es natürlich auch andere Datenbanken neben MySQL, beispielsweise PostgreSQL, Microsoft SQL Server oder Oracle. Ein relativ neuer Name in diesem Kreis ist MariaDB.

MySQL ist vermutlich immer noch das am weitestens verbreitete Open Source Datenbanksystem. Die Firma MySQL AB, die hinter der Entwicklung von MySQL stand, wurde 2008 von Sun Micosystems übernommen, die wiederum 2010 von Oracle gekauft wurden. Seit der Übernahme durch Oracle wird der Unterschied von der freien zur kommerziellen Version von MySQL immer grösser zu lasten der freien Version. Michael Widenius, der Gründer von MySQL AB gründete daher im Jahr 2012 die unabhängige MariaDB-Foundation, die das gleichnamige Datenbanksystem MariaDB entwickelt. MariaDB wird bereits von einigen Linux-Distributionen als Standard-Installation benutzt und auch unter Ubuntu gibt es MariaDB Installationspakete.

Vermutlich werden nach und nach die freien MySQL Versionen durch MariaDB ersetzt werden. Da wir in diesem Blog mit der Installation von MySQL (und PHP) begonnen haben, werden wir bis auf weiteres auch dabei bleiben. Alle beschrieben Beispiele laufen auch mit dem MariaDB Server.

PHP

PHP kann als Servermodul (so wie in unserer Installation) oder als CGI-Programm eingesetzt werden. Je nach Anforderung ist das Eine oder das Andere „besser, schneller, sicherer, etc“. Ich werde in einem späteren Blogeintrag beschreiben, wie Sie PHP als CGI einsetzen und vor allem warum (Bei der TYPO3 NEOS Installation wird beispielsweise PHP in der CGI Version benutzt)

Für die Installation und den Betrieb der oben angegebenen CMS ist die Betriebsart von PHP in diesem Stadium nicht wichtig.

Datenbank und User anlegen

Wie bereits im OwnCloud Artikel beschrieben, geht das recht einfach über die Konsole.

Rufen Sie den MySQL Monitor auf und erzeugen Sie ein Benutzerkonto und eine Datenbank. Im folgenden Beispiel heisst der Benutzer cmsuser und die Datenbank cmsdb. Nehmen Sie sich bitte die Zeit und lesen ein paar Zeilen über Passworte.

Wählen Sie Namen oder tauschen Sie einfach den String cms durch den Namen des CMS aus.

mysql -u root -p
Enter password:
mysql> CREATE USER 'cmsuser'@'localhost' IDENTIFIED BY 'IHRPASSWORT';
mysql> CREATE DATABASE cmsdb;
mysql> GRANT ALL ON cmsdb.* TO 'cmsuser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

Ich lege mir also fünf Datenbanken nebst Usern und Passworten an:

  • DBUser: wpuser DB: wpdb Passwort: …
  • DBUser: joouser DB: joodb Passwort: …
  • DBUser: t3user DB: t3db Passwort: …
  • DBUser: ctuser DB: ctdb Passwort: …
  • DBUser: duser DB: ddb Passwort: …

zurück nach oben

Virtueller Server

Legen Sie sich wie im Blogeintrag Viele virtuelle Server auf einem Root-Server beschrieben, einen oder mehrere virtuelle Server an.

Setzen Sie die Besitzer- und Gruppenzugehörigkeit auf den User und die Gruppe des Webservers (jeweils www-data). Als Domain benutze ich serverblogger.ch.

sudo chown -R www-data:www-data /var/www/serverblogger.ch/public_html

An dieser Stelle kommt es darauf an, wer der Administrator des virtuellen Servers sein wird, wie die Dateien kopiert werden, etc. Wenn es jemand anders als Sie ist, so muss/sollte der virtuelle Server die Besitzer- und Gruppenzugehörigkeit dieses Users haben und der User sollte Mitglied der Gruppe des Webservers sein. Dazu mehr in einem späteren Blogeintrag.

Es ist hilfreich (bei TYPO3 Neos zwingend) das Modul Mod_rewrite zu aktivieren

a2enmod rewrite

zurück nach oben

Installation der Content Management Systeme

Jedes der CMS besitzt ein browserbasiertes Installationsprogramm.

Sie müssen auf der jeweiligen Projekthomepage den Quellcode downloaden, in Ihr DocumentRoot Verzeichnis (meist /public_html) entpacken und dann im Browser die entsprechende Domain aufrufen

  1. Beim Auspacken müssen Sie darauf achten, ob die Dateien in ein eigenes Verzeichnis ausgepackt werden oder nicht. Das WordPress Archiv wird beispielsweise in ein Unterverzeichnis wordpress entpackt. Es gibt keine richtige oder falsche Art zu Entpacken. Entwickeln Sie einfach ein pragmatisches System, durch das Sie und! Ihre Kollegen durchsteigen. Ich sammele die Quellarchive beispielsweise in meinem Home Verzeichnis, entpacke sie dort und kopiere die Daten dann an ihr eigentliches Ziel. Das ist nicht atemberaubend effizient aber übersichtlich.
  2. Vergessen Sie nicht die ausgepackten Dateien mit der „richtigen“ Besitzer- und Gruppenzugehörigkeit zu versehenchown -R www-data:www-data /var/www/meinewebsite.ch/public_html

    Das -R sorgt dafür, dass alle Unterordner und die darin enthaltenen Dateien ebenfalls bearbeitet werden.

  3. Hilfreich beim hin- und herkopieren ist seit nunmehr 20 Jahren auch immer noch der Midnight Commander. Sie installieren ihn mit dem Befehl apt-get install mc.

zurück nach oben

1. WordPress – Installation auf einem Root-Server

Den Quellcode gibt es auf https://de.wordpress.org/.

Download:

wget https://de.wordpress.org/wordpress-4.0.1-de_DE.tar.gz

Auspacken:

tar -xvzf wordpress-4.0.1-de_DE.tar.gz -C /var/www/[domainname]/public_html/

Aufruf im Browser:

Das Installationsprogramm erscheint. Füllen Sie die Formulare mit den entsprechenden Daten aus.

Installation Screen 1
Installation Screen 1
Eingabe der Zugangsdaten
Eingabe der Zugangsdaten
Start der eigentlichen Installation
Start der eigentlichen Installation
Eingabe der Website Informationen
Eingabe der Website Informationen
Erfolgreiche Installation
Erfolgreiche Installation
Administrationsbereich
Administrationsbereich
Website nach der Installation
Website nach der Installation
Die Website ist nun im „Roh- oder Auslieferungszustand“ und bereits mit jeweils einem Beispielpost versehen.

„So, und nun genug geschwafelt – jetzt nichts wie ran ans Bloggen!“

Dem will ich nichts hinzufügen 😉

Das Admin Interface finden Sie unter http://[domainname]/wp-admin

zurück nach oben

Joomla!- Installation auf einem Root-Server

Den Joomla! Download gibt es auf joomla.org. Ein komplett deutsche Version finden Sie auf jgerman.de (funktioniert nur mit MySQL).

Download:

wget http://downloads.sourceforge.net/jgerman/Joomla_3.3.6-Stable-Full_Package_German.tar.gz

Auspacken:

tar -xvzf Joomla_3.3.6-Stable-Full_Package_German.tar.gz -C /var/www/[domainname]/public_html/

Aufruf im Browser:

Das Installationsprogramm erscheint.

1. Konfiguration
1. Konfiguration
2. Datenbank
2. Datenbank
FTP-Konfiguration
FTP-Konfiguration
Zusammenfassung
Zusammenfassung
Erfolgreiche Installation
Erfolgreiche Installation
Administrationsbereich
Administrationsbereich
Website mit Beispieldaten
Website mit Beispieldaten
Die Website ist nun im „Roh- oder Auslieferungszustand“ und optional mit Beispieldaten gefüllt.

Das Admin Interface finden Sie unter http://[domainname]/administrator

zurück nach oben

TYPO3- Installation auf einem Root-Server

TYPO3 gibt es in zwei Geschmacksrichtungen

  • Das TYPO3 CMS in der aktuellen Version 6.2.x. Es ist das „klassische“ TYPO3, wie es im deutschsprachigen Raum verbreitet ist.
  • Die Version TYPO3 NEOS in der Version 1.1.x- TYPO3 NEOS ist mehr oder weniger als Unfall entstanden. Während der Entwicklung der Version 5 des TYPO3 CMS wurden aus unterschiedlichen Gründen komplett neue Wege beschritten. Die Version 5 entfernte sich daher immer mehr von den Verfahrensweisen des TYPO3 CMS. In der Konsequenz beschloss man, die Version 5 als eigene TYPO3 Version auszulagern und beim TYPO3 CMS von der Version 4 direkt nach 6 zu springen. TYPO3 NEOS basiert auf dem TYPO3 Framework FLOW und stellt nach eigenen Aussagen die Zukunft von TYPO3 dar.

Ich gebe in diesem Blogeintrag mal der Zukunft den Vorrang und installiere TYPO3 NEOS.

Wir müssen auf unserem Root-Server ein paar Vorbereitungen treffen und Git, sowie den „PHP Abhängigkeitsmanager“ Composer installieren.

apt-get install git

Den Composer installiere ich in meinem Home Verzeichnis /home/novatrend

curl -s https://getcomposer.org/installer | php

Dann wechsele ich in das gewünschte Verzeichnis (cd /var/www/serverblogger.ch/public_html) und lasse mir vom Composer TYPO3 NEOS installieren.

sudo php /home/novatrend/composer.phar create-project --no-dev typo3/neos-base-distribution TYPO3-Neos-1.1

Wenn die folgenden Meldungen erscheinen, lassen Sie sich von ein paar Fehlermeldungen nicht irritieren. Es waren in menem Fall nur Hinweise, die keinen Einfluss auf die Installation hatten.

Installing typo3/neos-base-distribution (1.1.2)
  - Installing typo3/neos-base-distribution (1.1.2)
    Cloning 1bfbeb21f3a924c732a6ee33ed9b59bbbe5e1a4f
...
... viel mehr Meldungen
...
  - Installing typo3/neos-kickstarter (1.1.x-dev 827c4cc)
    Cloning 827c4cc17bb116b1560410eb4c2f72e233d86b97

Writing lock file
Generating autoload files
Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? Y

Die Dateien sind jetzt heruntergeladen und ich setzte noch die Eigentumsrechte

chown -R www-data:www-data /public_html

Es dauerte eine Weile, bis ich den Quellcode an der richtigen Stelle hatte. Hilfreich waren dabei:

Hinweis auf die Datei mit dem Passwort
Hinweis auf die Datei mit dem Passwort
Datenbank Konfiguration
Datenbank Konfiguration
Administrator Account erstellen
Administrator Account erstellen
Eine Seite importieren oder neu erstellen
Eine Seite importieren oder neu erstellen
Erfolgreich installiert
Erfolgreich installiert
TYPO3 DEMO Website
TYPO3 DEMO Website
Administrationsbereich
Administrationsbereich
Der Administrationbereich befindet sich unter http://[domainname]/neos.

zurück nach oben

Contao- Installation auf einem Root-Server

Den Contao Quellcode gibt es auf contao.org

Download:

Ich habe kein Datei-Archiv gefunden, die Installationshilfe schlägt jedoch den Befehl

curl -L http://download.contao.org | tar -xzp

vor, der ein Verzeichnis contao-3.4 erstellt und die Dateien einzeln läd.

Auspacken:

entfällt, da die Dateien einzeln geladen werden.

Aufruf im Browser:

Das Installationsprogramm erscheint nach dem Aufruf von http://[domainname]/contao/install.php.

Füllen Sie die Formulare mit den entsprechenden Daten aus.

Lizenz akzeptieren
Lizenz akzeptieren
Installer Passwort
Installer Passwort
Datenbankkonfiguration
Datenbankkonfiguration
Datenbank Update
Datenbank Update
Erfolgreiche Installation
Erfolgreiche Installation
Admin User erstellen
Admin User erstellen
Frontent (noch keine Website angelegt)
Frontent (noch keine Website angelegt)
Administrationsbereich
Administrationsbereich
Eine Beispielwebsite wird bei der Installation von Contao standardmässig nicht erstellt, den Administrationsbereich finden Sie unter http://[domainname]/contao.

zurück nach oben

Drupal- Installation auf einem Root-Server

Den Drupal Quellcode gibt es auf drupal.org – Eine deutschsprachige Installation wird vom drupalcenter.de zur Verfügung gestellt. Ich benutze im Beispiel die Version von drupalcenter.de.

Hinweis Stand 28.11.2014:

In der /etc/php5/apache2/php.ini von Ubuntu 14.04 muss noch etwas geändert werden (https://www.drupal.org/node/2115155#comment-9071843), damit die Webinstallation problemlos durchläuft:

[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=0 // <- Diese Zeile muss aktiv sein

Danach ein Webserver Neustart – service apache2 restart

Download:

wget http://www.drupalcenter.de/files/drupal-7.34-DE.tar.gz

Auspacken:

tar -xvzf drupal-7.34-DE.tar.gz -C /var/www/[domainname]/public_html/

Aufruf im Browser:

Das Installationsprogramm erscheint. Füllen Sie die Formulare mit den entsprechenden Daten aus.

Auswahl des Drupalcenter.de Installationsprofils
Auswahl des Drupalcenter.de Installationsprofils
Sprachauswahl
Sprachauswahl
Datenbankkonfiguration
Datenbankkonfiguration
Website konfigurieren
Website konfigurieren
Drupal Installation fertiggestellt
Drupal Installation fertiggestellt
Frontend
Frontend
Administrationsbereich
Administrationsbereich
zurück nach oben

Fazit – Installation der fünf CMS auf einem Root-Server

Ich installiere nicht oft fünf Open Source CMS hintereinander weg auf einem Root Server und so war es für mich auch ganz interessant, die verschiedenen Ansätze in den Programmen zu sehen. Die absolut einfachste Installation war die von WordPress.

Joomla! und Drupal warfen während des Installationsvorgang ein paar Fragen auf, die aber einfach zu lösen sind. Nach der Installation bieten die drei Systeme eine fertige Website, die dann im Administrationbereich konfiguriert und mit Inhalt befüllt werden kann.

Contao ist ebenfalls gut zu installieren, erstellt allerdings keine Website während der Installation.

TYPO3 Neos schliesslich besitzt ebenfalls einen wunderbar einfach zu bedienenden Webinstaller, allein der richtige Download der Dateien und die Vorbereitung des virtuellen Webservers waren schlecht beschrieben. Das ist schade, denn das System an sich sieht sehr vielversprechend aus und verdient eine bessere Dokumentation!

  • WordPress 4.x: Sehr einfache Installation mit charmanter Benutzerführung. Es wird eine Website erstellt, die bereits sinnvolle Beispieldaten enthält. Websitewordpress.org, de.wordpress.org Twitter@wordpress @wp_deutschland
  • Joomla! 3.3.x: Sehr einfache Installation, teilweise für Neulinge verwirrend (beispielsweise: Brauche ich den FTP Layer? Welche Beispieldaten sind für meinen Zweck sinnvoll? Soll ich das Installationsverzeichnis löschen?). Es wird eine Website erstellt, die optional unterschiedliche Beispieldaten enthält. Websitejoomla.org, joomla.ch, joomla.de Twitter@joomla @joomlade
  • Contao 3.4: Sehr einfache Installation, teilweise für Neulinge verwirrend (beispielsweise: Warum lege ich ein Installer Passwort an? Soll ich ein Datenbank-Update während der Installation einspielen? Wo ist die eigentliche Website?). Es wird keine Website während der Installation erstellt. Websitecontao.org Twitter@contaocms @leofeyer
  • Drupal 7: Sehr einfache Installation. Es wird eine Website erstellt. Einziger Haken sind die Standardeinstellungen der php.ini in Ubuntu 14.04., in der ein Parameter geändert werden musste. Drupal hat eine optische Trennung zwischen Front- und Backend. Es wird eine Website abhängig vom Installationsprofil, in meinem Fall von drupalcenter.de ohne Beispieldaten erstellt. Websitedrupal.org, drupalcenter.de Twitter@drupal, @drupalcenter
  • TYPO3 Neos 1.1.2: Schlecht dokumentierte Vorbereitung des eigentlichen Installationsvorgangs. Ein Root-Server ist empfehlenswert, da Parameter in php.ini und vhost Konfigurationsdateien gesetzt werden müssen. Während der einfachen, webbasierten Installation im Anschluss besteht die Möglichkeit zur automatischen Erzeugung einer Demoseite. Websitetypo3.org, neos.typo3.org Twitter@typo3 @typo3neos

Falls Sie hilfreiche Links, HowTo’s, Bücher, Events für die ersten Schritte mit den einzelnen Systemen kennen, so freue ich mich auf Feedback.

Kategorien
Infrastruktur Server Shared Hosting Webserver

Viele virtuelle Server auf einem Root-Server

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