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

Kategorien
Cloud Server Shared Hosting Verschlüsselung

OwnCloud – Installation und Clients

In einer eigenen Cloud lagern Sie Ihre eigenen Daten, greifen mit verschiedenen Client darauf zu und synchronisieren die Datenbestände. Die Cloud Software ist auf Ihrem Root-Server installiert. Das Open Source Programm ownCloud ist gerade bei sensiblen oder auch allgemeinen Unternehmensdaten eine echt Alternative zu Dropbox, Google, iCloud und ähnlichen Programmen. Sie können über ihren PC, ihr Smartphone, Tablet oder über eine Weboberfläche auf die Daten zugreifen. Es gibt Clients für Linux, Mac OS, Windows, Android und iOS. OwnCloud bietet Benachrichtigungs- und soziale Netzwerkfunktionen für die Nutzer einer OwnCloud-Installation sowie zahlreiche Zusatzfunktionen, unter anderem einen Musikplayer, eine Fotogalerie und einen Editor zum gemeinsamen Bearbeiten von Dokumenten.

Die Daten können verschlüsselt übertragen und gespeichert werden. Das Programm existiert in einer Business- und einer Community Edition. Wir installieren die Community Edition. Das Serverprogramm ownCloud server ist Open Source Software und läuft in Ihrem LAMP Stack. Es ist über einen Browser nutzbar. Andere Dateimanager und Groupware Systeme können mit OwnCloud über eine Programmierschnittstelle (API) Kontakt aufnehmen. Die Client Software, die eine tiefere Verzahnung und eine Synchronisation von OwnCloud in Ihrem Desktop Betriebssystem erlaubt, wird von der Firma OwnCloud Inc. kostenlos herausgegeben. Für die Desktop Clients steht auch der Quellcode zur Verfügung. Bei den Apps für Smartphones gibt es die Android Version im Quellcode.

Installation

Sie können OwnCloud Server in einem virtuellen Apache Host (vhost) laufen lassen oder den Default Host Ihrer LAMP Installation nutzen. In diesem Beispiel nutze ich den Default Host, da auf diesem Root-Server nur die ownCloud laufen soll. Bevor etwas neues installieren, sollten Sie immer

apt-get update
apt-get upgrade

laufen lassen, damit Ihr System auf dem aktuellen Stand ist. Danach benötigen Sie den Apache Webserver, den MySQL Datenbankserver und die Programmiersprache PHP. Im Beitrag LAMP einrichten (LINK TODO) finden Sie die notwendigen Installationsschritte.

Notwendige PHP-Module

OwnCloud benötigt einige zusätzliche PHP-Module, die Sie mit dem Befehl

apt-get install php5-gd php5-json php5-curl php5-intl php5-mcrypt php5-imagick

installieren können.

  • php5-gd: ermöglicht die Ausgabe und Bearbeitung von Bildern im JPEG, GIF, PNG und anderen Formaten
  • php5-json: dieses Modul ermöglicht die Nutzung des „JavaScript Object Notation (JSON)“ Datenaustauschformats.
  • php5-curl: ermöglicht die Nutzung der libcurl Bibliothek aus PHP heraus. Diese Bibliothek bietet Möglichkeiten, unterschiedliche Server über gängige Protokolle zu verbinden. libcurl unterstützt u.a. HTTP, HTTPS, FTP, FILE, und das LDAP Protokoll.
  • php5-intl: ist das Internationalisierungsmodul von PHP
  • php5-mcrypt: ermöglicht die Nutzung der mcrypt Bibliothek. Sie unterstützt viele Verschlüsselungsalghorithmen.
  • php5-imagick: erlaubt Bilder in mehr als 100 verschiednenen Formaten zu erzeugen und zu verändern.

Starten Sie den Webserver neu

sudo service apache2 restart

Falls irgendetwas schiefgeht, schauen Sie in das Apache Error Log, vielleicht helfen Ihnen die Meldungen weiter (tail -f /var/log/apache2/error.log)

OwnCloud Quellcode herunterladen, überprüfen, auspacken

Unter https://owncloud.org/install/finden Sie die aktuellen Installationspakete. Kopieren Sie sich den Downloadlink der letzten stabilen Version ownCloud Server (in meinem Fall 7.02) und laden das Paket mit dem Befehl

wget https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2

Da heutzutage nicht auszuschliessen ist, dass das Archiv tatsächlich das richtige Package ist, können Sie es überprüfen lassen. Sie können sich die Checksumme der Datei auf verschiedene Weise ausrechnen und überprüfen. Mit dem Befehl

novatrend@server1:~$ md5sum owncloud-7.0.2.tar.bz2
4af57e093878917d80004f7151f9282e  owncloud-7.0.2.tar.bz2

erzeugen Sie beispielsweise die md5 Checksummer für das Package. Die ausgegebenen Ziffern müssen mit dem Inhalt der Datei https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2.md5 übereinstimmen. Sie können diese Datei auf Ihren lokalen PC laden und in einem Editor öffnen um die die Ziffern zu vergleichen. Packen Sie das Archiv mit dem Befehl

sudo tar -xvf owncloud-7.0.2.tar.bz2 -C /var/www/html

in das Dokumentenverzeichnis des Default Webservers aus. Es wird ein neues Verzeichnis owncloud angelegt, dass alle notwendigen Dateien enthält. Machen Sie den Benutzeraccount unter dem der Webserver läuft zum Eigentümer der Dateien.

sudo chown www-data:www-data -R /var/www/html/owncloud/

DB Datenbank und Benutzer anlegen

Rufen Sie den MySQL Monitor auf und erzeugen Sie ein Benutzerkonto und eine Datenbank. Im folgenden Beispiel heisst der Benutzer ownclouduser und die Datenbank ownclouddb.

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

OwnCloud Webinstallation

Sie können nun auf Ihrem Root-Server das ownCloud Verzeichnis aufrufen und der ownCloud Webinstaller erscheint. In meinem Fall mit einer Sicherheitswarnung. http://[IP-Adresse]/owncloud

Webinstaller ownCloud
Webinstaller ownCloud
In diesem Formular müssen Sie das Verzeichnis eintragen, in dem Ihre Dateien liegen werden (bereits vorbelegt), den DB-Benutzernamen, das Password und den Namen der Datenbank. Danach müssen Sie noch Benutzernamen und Passwort des Administrators festlegen. Der Webinstaller konfiguriert automatisiert das Programm und Sie landen in der ownCloud Weboberfläche.
ownCloud Webclient
ownCloud Webclient
Sie können nun Ordner anlegen, Dateien hochladen, zusätzliche benutzer anlegen, die eigene Dateien verwalten und vieles andere mehr. Schauen Sie sich in Ruhe um. Bevor Sie sensible Dateien hochladen, sollten sie die Admin-Seite http://[IP-Adresse]/index.php/settings/admin aufrufen. Wir müssen uns um zwei Dinge kümmern:

  1. Schutz des Datenverzeichnisses
  2. Verschlüsselte Kommunikation

1. Schutz des Datenverzeichnisses

Security Warning Your data directory and files probably accessible from the internet because the .htaccess files does not work. For information how to properly configure your server, please see the documentation.

OwnCloud speichert alle Daten in einem Datenverzeichnis namens data. Damit keine unberechtigten Benutzer auf die Daten zugreifen können, schützt man solche Verzeichnisse mit einer sogenannten .htaccess Datei. Sie enthält Konfigurationsanweisungen für den Apache Webserver. Bei meiner Installation nutze ich als Datenverzeichnis /var/www/html/owncloud/data. In diesem Verzeichnis hat das ownCloud Programm eine .htaccess Datei erzeugt, die Befehler für den Apache Webserver enthält, um den öffentlichen Zugriff einzuschränken. Leider führt der Apache Webserver diese Datei offensichtlich nicht aus und es kommt zur Fehlermeldung. In diesem Fall liegt die Lösung in der Apache-Konfigurationsdatei /etc/apache2/apache2.conf. Der Standard Webserver ist aus Sicherheitsgründen so konfiguriert, dass keine .htaccess Dateien ausgeführt werden. Sie können das Problem nun auf mehrere Arten lösen

  1. Die Apache Konfigurationsdatei ändern
  2. Das Datenverzeichnis an einen Platz legen, der nicht öffentlich, aber für den Webserver erreichbar ist
  3. Einen virtuellen Host (vhost) erstellen und die entsprechenden Anweisungen angeben

Es gibt in diesem Fall kein richtig oder falsch. Jede Möglichkeit ist für sich gesehen ok. Ich nehme die Variante 1 und ändere die /etc/apache2/apache2.conf

sudo vi  /etc/apache2/apache2.conf

Fügen Sie nach Zeile 168 (nach den Anweisungen für das Verzeichnis /var/www/) folgende Anweisungen ein:

<Directory /var/www/html/>
        AllowOverride All
</Directory>

Der Befehl AllowOverride All bedeutet, dass es in diesem Verzeichnis erlaubt ist, die Apache Konfigurationseinstellungen zu überschreiben. Starten Sie den Webserser neu

sudo service apache2 restart

Die Fehlermeldung ist verschwunden. Der Webserver führt nun die OwnCloud Befehle aus und das Verzeichnis ist geschützt. Ein kurzer Blick auf die Admin Seite (Admin-Seite http://[IP-Adresse]/index.php/settings/admin) bestätigt das. Auch hier ist die Warnung verschwunden.

2. Verschlüsselte Kommunikation

Security Warning You are accessing ownCloud via HTTP. We strongly suggest you configure your server to require using HTTPS instead.

Dieses Thema ist sehr wichtig. Momentan werden Ihre Daten unverschlüsselt übertragen. Jeder, der Zugriff auf den Netzwerkverkehr zwischen Ihrer ownCloud Installation und Ihrem Client hat, kann Ihre Daten im Klartext mitlesen. Glücklicherweise wird Ubuntu 14.04 mit einer Lösung für dieses Problem ausgeliefert. Sie müssen nur die entsprechenden Module im Webserver aktivieren

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload

Die Standard Apache SSL Konfiguration können Sie mit dem folgenden Befehl einsehen cat /etc/apache2/sites-available/default-ssl.conf Wenn Sie nun Ihre ownCloud Installation im Webserver mit https:// anstelle von http:// aufrufen, wird der Netzwerkverkehr verschlüsselt. Je nach Browsertyp müssen Sie bestätigen, auf die Seite zugreifen zu wollen. Bei der Installation von Ubuntu wurde ein Zertifikat erzeugt, um die verschlüsselte Verbindung zu ermöglichen. Dieses Zertifikat ist von keiner offiziellen Stelle bestätigt und daher fragt der Browser nach.

Selbst erstelltes Zertifikat
Selbst erstelltes Zertifikat
Sie können auch jederzeit ein Zertifikat kaufen und auf Ihrem Root-Server installieren. Dann werden alle Browser ohne Nachfrage den Zugriff auf Ihre Seite ermöglichen.

Ausprobieren

Laden Sie ein paar Dateien per Browser in Ihre Owncloud Installation und machen Sie sich mit der Oberfläche vertraut

OwnCloud Clients

Auf die von Ihnen genutzten PC, Telefone und Tablets können Sie nun die entsprechenden ownCloud Clients installieren und mit Ihrer Server Installation verbinden. Die Downloads finden Sie unter http://owncloud.org/install/.

Beispiel Mac OS

Die OwnCloud App erzeugt einen zusätzlichen Ordner, der im Finder angezeigt wird. Alle Dateien, die sich in diesen Ordnern befinden werden mit Ihrem ownCloud Server synchronisiert. Die Einstellungen können im ownCloud menü im oberen Bildschirmrand vorgenommen werden.

ownCloud App Mac OS
ownCloud App Mac OS

Beispiel Android

Ich habe ein Android Telefon mit CyanogenMod Distribution. Es gibt mehrere ownCloud Clients, hier ein Screenshot vom original ownCloud client, herausgegeben von ownCloud Inc. Für diesen Client wird auch der Quellcode zur Verfügung gestellt (https://github.com/owncloud/android).

ownCloud Client für Android
ownCloud Client für Android

tl:dr ownCloud ist eine vollwertige Dropbox Alternative mit voller Kontrolle, gehostet auf eigenen Root-Servern

Kategorien
Betriebssysteme Infrastruktur Server Webserver

LAMP einrichten

LAMP ist eine Abkürzung für Programme, die Sie benötigen um dynamische Websites von Ihrem Root-Server aus anzubieten. Die Buchstaben stehen für das Betriebssystem Linux, den Webserver Apache, die Datenbank MySQL und die Programmiersprache PHP. Man nennt diese Kombination von Programmen auch Stapel (engl. Stack), weil ein Programm auf dem anderen aufbaut, bzw. die Programme eng zusammenarbeiten. Der Begriff wurde 1998 durch einen Artikel der Zeitschrift c’t geprägt. 16 Jahre später ist der LAMP-Stack immer noch sehr populär und der de facto Standard für das Anbieten einer Website. In diesem Beitrag wollen wir den LAMP Stack auf einem Root-Server mit Linux Ubuntu 14.04 einrichten. Das L für Linux ist schon erledigt, der Apache Webserver, die MySQL Datenbank und die Programmiersprache PHP fehlen noch. Nach der Installation können Sie beliebig viele Websites auf Ihrem Root-Server hosten.

Installation von Apache, MySQL und PHP

Vor 16 Jahren war die Installation noch eine kleine Herausforderung. Heute ist Sie mit einem Befehl auf der Konsole erledigt. Installiert werden müssen die folgenden Programmepakete. Das geht in einem Befehl

sudo apt-get install apache2 php5 
     php5-mysql mysql-client mysql-server

Nach drücken der Enter Taste erscheinen viele Installationsmeldungen auf dem Bildschirm. Die Datenbank MySQL benötigt ein Root-Passwort, das im Laufe der Installation abgefragt wird.

Root Passwort für MySQL Server setzen
Root Passwort für MySQL Server setzen
Wenn Sie sich diese Meldungen näher anschauen, sehen Sie, dass viel installiert wird und Sie erhalten einige Hinweise, Warnungen und teilweise auch Fehlermeldungen: Beispiel für Hinweise:

Setting up apache2 (2.4.7-1ubuntu4.1) ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.

Der Webserver wird konfiguriert und etwa 20 Module des Webservers werden aktiviert. Sie können später weitere Module bei Bedarf hinzufügen. Eine Liste aller Module und deren Funktion finden Sie im Module Index auf httpd.apache.org/docs/2.4/mod/. Beispiel Warnung: Auf meinem Root-Server gab es folgende Warnung:

140827 15:30:03 [Warning] Using unique option prefix key_buffer 
            instead of key_buffer_size is deprecated and will 
            be removed in a future release. 
            Please use the full name instead.

Ubuntu nutzt MySQL in der Version 5.5. Die Installationsoptionen key_buffer ist „deprecated“. Deprecated heisst, dass es momentan noch funktioniert, aber in zukünftigen MySQL Versionen nicht mehr funktionieren wird. Die Warnung enthält auch die Lösung des Problems. In der Zukunft heisst der Befehl key_buffer_size. Sie können alles belassen, wie es ist, da es ja funktioniert. Sie können auch die MySQL Installation anpassen (Lösung). Ich würde nichts an der Konfiguration ändern, mir die Sache aber irgendwie merken, damit ich mich später dran erinnere. Beispiel Fehlermeldungen: Diese Fehlermeldung kam ein paarmal:

 locale: Cannot set LC_CTYPE to default locale: No such file or directory
 locale: Cannot set LC_ALL to default locale: No such file or directory

Locale enthält die Einstellungen für bestimmte Gebiete, beispielsweise die Sprache, das Land, die Zahlen-, Währungs-, Datums- und Zeitformate. In Linux werden diese Informaton in Variablen abgelegt und können von User zu User und von Programm zu Programm unterschiedlich sein. Mit dem Befehl locale sehen Sie Ihre aktuellen Einstellungen (und die beiden Fehlermeldungen).

novatrend@server1:~$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
...
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

LC_ALL und LANGUAGE sind tatsächlich nicht gesetzt. Lösen lässt sich das Problem, indem Sie die Werte der Variablen mit den folgenden Befehlen setzen.

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Die Fehlermeldung verschwindet beim nächsten Aufruf von locale.

Was wurde nun installiert?

Auf Ihrem Root-Server System gibt es nun zwei zusätzliche Server. Einen Webserver, der Webseiten ausliefert und einen Datenbankserver der über die Programmiersprache PHP angeforderte Daten in diese Webseiten integriert. Mit den Befehlen

novatrend@server1:~$ service apache2 status
 * apache2 is running
novatrend@server1:~$ service mysql status
mysql start/running, process 9455

können Sie nachsehen, ob die Server laufen. Die selbsterklärenden Parameter start, stop, restart, reload, force-reload starten entsprechende Aktionen. Beide Server sind nun unter einer bestimmten Portnummer erreichbar. Der Apache-Server belegt Port 80, der MySQL-Server Port 3306. Beim Apache können Sie das leicht nachprüfen, wenn Sie in einem Browser diese URL

http://[Root-Server-IP-Adresse]:80/

eingeben. Sie erhalten eine freundliche Begrüssungsseite Ihres Webserver (It works!) mit einem Überblick über die Konfiguration. Lesen Sie diese Seite!

Ubuntu Apache 2 Default Page
Ubuntu Apache 2 Default Page
Da ausser Ihnen nun jeder, der mit dem Internet verbunden ist, diese Seite lesen kann (wenn er denn Ihre IP-Adresse) kennt, sollten Sie aus Sicherheitsgründen, bevor Sie weitermachen, diese Begrüssungsmeldung von Ihrem Server entfernen oder umbenennen (Entfernen ist sicherer 🙂 ). Um den Inhalt zu erinnern, können Sie die Seite ausdrucken oder lokal speichern.

novatrend@server1:$ sudo rm /var/www/html/index.htm

Nachdem Sie die Seite entfernt haben, wird ein leeres Verzeichnis angezeigt, sowie Informationen über Ihren Root-Server angezeigt.

Leeres Verzeichnis mit Serverinformationen
Leeres Verzeichnis mit Serverinformationen
Alle Dateien, die in diesem Verzeichnis liegen, können von jedem gelesen werden. Wenn Sie beispielsweise eine PDF- oder Zip-Datei in dieses Verzeichnis legen, kann jeder sie herunterladen. Wenn sich im /var/www/html/ Verzeichnis eine Datei index.html befindet, wird das Verzeichnis nicht angezeigt, sondern die index.html Datei an Ihren Browser geschickt. Mit der Begrüssungsseite funktionierte das so, bevor wir sie gelöscht haben. Um sicher zu gehen, dass niemals der Inhalt eines Verzeichnisses angezeigt wird, können Sie dieses Verhalten auch ausschalten. Die sicherste Variante ist, wenn Sie in der Datei /etc/apache2/apache2.conf den folgenden Befehl einfügen und danach den Server neu starten Editoraufruf

sudo vi /etc/apache2/apache2.conf

mit i Einfügemodus einschalten, runterscrollen bis Zeile 165 (siehe Screenshot) und die Zeile mit dem Inhalt

Options Indexes FollowSymLinks

ersetzen durch

Options -Indexes +FollowSymLinks
Konfiguration Apache
Konfiguration Apache
Mittels Escape Taste den Einfügemodus und VI mit :wq und Enter beenden und den Webserver neu starten

sudo service apache2 reload

Die Verzeichnisanzeige ist nun verschwunden. Was man aber immer noch sieht ist folgendes:

Apache/2.4.7 (Ubuntu) Server at 46.232.178.78 Port 80

Diese Information steht in der Datei /etc/apache2/conf-enabled/security. Rufen Sie die Datei auf und ändern Sie die Werte für ServerTokens und ServerSignature

sudo vi /etc/apache2/conf-enabled/security.conf

...
ServerTokens Prod
...
...
ServerSignature Off
...

Sie können auch ohne Browser mit dem Befehl curl schnell nachsehen, was der Webserver an Informationen ausliefert. In meinem Fall sieht es so aus

novatrend@server1:/var/www/html$ sudo curl -I http://46.232.178.78/
HTTP/1.1 403 Forbidden
Date: Wed, 27 Aug 2014 17:02:12 GMT
Server: Apache
Content-Type: text/html; charset=iso-8859-1

Jetzt gibt es weder Verzeichnisse noch Versions- und Distributionshinweise.

PHP

Sie können auf einfache Art feststellen, ob PHP angesprochen wird. Legen Sie sich eine Datei info.php im öffentlichen Dokumenten Verzeichnis an, und rufen die Funktion phpinfo() auf. Anlegen der Datei:

novatrend@server1:$ sudo touch /var/www/html/info.php
novatrend@server1:$ sudo vi /var/www/html/info.php

Fügen Sie die folgenden Befehle ein und speichern Sie die Datei

<?php
phpinfo();
?>

Rufen Sie im Browser

http://46.232.178.78/info.php

auf . Sie erhalten eine lange Liste mit Infomationen über Ihren LAMP Stack

PHP Info
PHP Info

MySQL

Ihr MySQL Server läuft und Sie können nun daran gehen, eine Anwendung zu installieren, die auf PHP und MySQL aufsetzt, wie beispielsweise die Content Management Systeme WordPress, Joomla und Drupal. oder die Dropbox Alternative ownCloud.


tl:dr Sie können mit einem Befehl eine Umgebung für eine Website wie beispielweise ein Content Management System auf Ihrem Root-Server installieren. Mit ein paar mehr Handgriffen können Sie auch noch die Sicherheit erhöhen.

Kategorien
Betriebssysteme Server

Welcome to Ubuntu 14.04.1 LTS

Das Aufmacherbild dieses Eintrags sieht nicht ganz so hochglanzpoliert aus, wie die typische Produktwerbung. Das liegt einfach daran, dass die Benutzeroberfläche Ihres Root-Servers seit Jahrzehnten vermutlich einfacher zu bedienen ist, als jedes Smartphone. Am blinkenden Cursor einen Befehl eingeben, Enter drücken und das wars. Bumm-Zack-Return 🙂 In diesem Beitrag geht es daher auch um Befehle, die nahe liegen, wenn Sie sich das erste (oder auch zweite) Mal mit Ihrem Root-Server verbinden (siehe auch: Root-Server ich bin drin). Linux ist sehr einfach aufgebaut. Alles ist eine Datei. Sie benötigen fast immer Befehle, die etwas mit dem Anzeigen und Organisieren von Dateien zu tun haben. Wenn Sie einen frisch eingerichteten Root-Server haben (Stand (8/2014), so begrüsst er Sie mit folgenden Worten:

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
  System information as of Wed Aug 20 16:07:38 CEST 2014
  System load:  0.0               Processes:           69
  Usage of /:   2.3% of 47.12GB   Users logged in:     0
  Memory usage: 3%                IP address for eth0: 46.232.178.78
  Swap usage:   0%
  
31 packages can be updated.
17 updates are security updates.
Last login: Wed Aug 20 16:07:39 2014 from 83.158.144.134

Oft lässt man solche Meldungen ohne Aufmerksamkeit vorbeihuschen. Wir wollen uns die Sache mal näher anschauen. Ubuntu 14.04.1 LTS ist eine Linux Distribution. Die Ziffern geben die Version an, die Buchstaben LTS bedeuten Long Term Support. Diese Version ist beispielsweise am 24.07.2014 erschienen und der Support läuft am 24.07.2019 aus (https://wiki.ubuntu.com/Releases). Sie können also Ihren Root-Server die nächsten fünf Jahre mit diesem System betreiben. Nach diesen fünf Jahren können Sie übrigens auf eine neue Version automatisch updaten! Haben Sie schon mal nachgeschaut, wie lange der Support für das Betriebssystem auf Ihrem PC daheim, Ihrem Tablet oder gar Ihrem Smartphone läuft? Vermutlich finden Sie keine verbindliche Aussage. GNU/Linux 3.13.0-32-generic x86_64 bedeutet, dass Ubuntu auf GNU/Linux Kernel der Version 3.13 basiert. Der wurde am 20.01.2014 veröffentlicht. X86_64 ist die Prozessorarchitektur. Sie können diese Informationen auch über die Befehle uname -a oder arch anzeigen lassen. help.ubuntu.com ist die offizielle Dokumentation für Ubuntu Distributionen. Von hier gelangen Sie auch auf das Community Wiki und zahlreiche andere Ressourcen. Als deutschsprachige Ressource bietet sich das wiki.ubuntuusers.de an. System information zeigt Ihnen Werte Ihres Root-Servers, die Sie in der Zukunft vermutlich sehr interessieren werden. Momentan hat Ihr System 0% Last und Sie müssen sich damit noch nicht beschäftigen. Updates sind ein sehr wichtiges Thema. Mein Server hier hat bemerkt, dass 21 Software Pakete upgedatet werden können und davon sind 17 Sicherheitsupdates. Last Login zeigt den Zeitpunkt und die IP Adresse des letzten Zugriffs. Mit verschiedenen Online-Services können Sie in Erfahrung bringen, wem diese IP Adresse gehört (Beispiel). Sie können das auch erfahren in dem Sie auf Ihrem Server den Befehl traceroute 83.158.144.134 aufrufen. Wenn Sie das ausprobieren, so erhalten Sie einen Hinweis, dass das Programm, das hinter dem Befehl traceroute steckt, noch nicht installiert ist und Hinweise zur Installation.

Updates

Bevor Sie irgendetwas anderes tun, sollten Sie die Updates für Ihren Root-Server einspielen. Zu diesem Zweck brauchen Sie den Befehl Apt-Get. Apt ist die Software Paket Verwaltung Ihrer Linux Distribution. Von wo Ihr Server diese Updates und auch die Programmpakete lädt, erfahren Sie, wenn Sie den Befehl

cat /etc/apt/sources.list

aufrufen. In der Datei sind die gängigen Quellen angegeben und Sie können hier festlegen, von wo Ihr Root-Server herunterladen soll. Um nun upzudaten, benötigen Sie zwei Befehle. Der erste liest die Paketquellen neu ein (apt-get update), der zweite startet das eigentliche Update (apt-get upgrade). Momentan nutze ich einen normalen User Account und verfüge über keinerlei Root-Rechte. Der Update Vorgang benötigt aber natürlich Root-Rechte und die können wir mit dem Befehl sudo einfach an den Aufruf übergeben.

novatrend@server1:~$ sudo apt-get update
[sudo] password for novatrend:
Ign http://security.ubuntu.com trusty-security InRelease
... [Hier stehen noch mindesten 20 Zeilen]
Get:1 http://us.archive.ubuntu.com trusty-updates Release.gpg [933 B]
Fetched 1356 kB in 7s (176 kB/s)
Reading package lists... Done

Nun sind die Listen komplett und ich kann mit apt-get upgrade das eigentliche Update starten.

novatrend@server1:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  accountsservice apport byobu gir1.2-glib-2.0 libaccountsservice0
  libgirepository-1.0-1 libpam-systemd libsystemd-daemon0 libsystemd-login0
  libudev1 net-tools python3-apport python3-distupgrade python3-gi
  python3-problem-report systemd-services ubuntu-release-upgrader-core udev
18 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2187 kB of archives.
After this operation, 5120 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main udev amd64 204-5ubuntu20.4 [735 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libudev1 amd64 204-5ubuntu20.4 [33.2 kB]
...
Fetched 2187 kB in 4s (514 kB/s)
...
Unpacking libpam-systemd:amd64 (204-5ubuntu20.4) over (204-5ubuntu20.3) ...
Preparing to unpack .../systemd-services_204-5ubuntu20.4_amd64.deb ...

Zunächst mal die gute Nachricht. Ich musste das Passwort nicht noch einmal eingeben. Innerhalb einer Session wird es temporär gespeichert. Der Befehl liest die Quellen aus, schaut sich Abhängigkeiten zwischen den Softwarepaketen an und zeigt dann, was upgedatet werden werden muss. Sie müssen explizit mit y (Yes) zustimmen und dann läuft der Update Vorgang los. Unser Root-Server ist jetzt auf dem neuesten Stand.

Wichtige Befehle für den Anfang

whoami – liefert den Username des Users, unter dem Sie angemeldet sind

novatrend@server1:~$ whoami
novatrend

df – zeigt den verfügbaren Platz auf den „eingehängten“ Dateisystemen an

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       49409840 1686408  45190520   4% /
none                   4       0         4   0% /sys/fs/cgroup
udev             1014188       4   1014184   1% /dev
tmpfs             205008     500    204508   1% /run
none                5120       0      5120   0% /run/lock
none             1025028       0   1025028   0% /run/shm
none              102400       0    102400   0% /run/user

Mein Server hat 45GB Plattenplatz und knapp 4% davon belegt die Ubuntu Distribution. pwd – zeigt das aktuelle Verzeichnis an

novatrend@server1:~$ pwd
 /home/novatrend

Diese Parameter helfen oft weiter, da man sich die Einzelheiten der Befehle meist nicht merken kann:

  • kurzer Hilfetext zum Befehl [BEFEHL] –help
  • Die Handbuchseite eines Befehls man [BEFEHL]

Probieren Sie einfach ein wenig aus. Ich habe ein paar grundlegende Befehle zusammengestellt. Es kann sein, dass manche Befehle nicht das gewünschte Ergebnis bringen, weil Sie als User angemeldet sind. In diesem Fall sollten Sie nochmal überlegen, was der Befehl wirklich tut und wenn Sie ihn immer noch ausführen wollen, einfach ein sudo voranstellen. Die folgenden Beispiele stammen von der Website Linux-fuer-alle.de.

  • Abmelden logout
  • Root-Server neustarten: shutdown -r now
  • Nach Datei auf Server suchen (Locate-Datenbank): locate [DATEI]
  • Nach Text suchen innerhalb einer Datei: grep [SUCHSTRING] [DATEI]
  • Ins Hauptverzeichnis wechseln: cd /
  • Ins übergeordnete Verzeichnis wechseln: cd ..
  • In ein bestimmtes Verzeichnis wechseln: cd [VERZ]
  • Den Inhalt einer Datei auf dem Bildschirm anzeigen: cat [DATEI]
  • Den Inhalt einer Datei auf dem Bildschirm seitenweise anzeigen: more [DATEI]
  • Den Inhalt einer Datei auf dem Bildschirm seitenweise mit Möglichkeit zum hochblättern anzeigen: less [DATEI]
  • Datei kopieren (kopiert Datei 1 in Datei 2): cp [DATEI1] [DATEI2]
  • Datei umbenennen (benennt Datei 1 in Datei 2 um): mv [DATEI1] [DATEI2]
  • Datei verschieben (verschiebt Datei 1 ins Verzeichnis): mv [DATEI] [VERZ]
  • Datei löschen: rm [DATEI]
  • Eine leere Datei erzeugen: touch [DATEI]
  • kurze Liste des Verzeichnisinhaltes: ls
  • ausführliche Liste des Verzeichnisinhaltes: ls -l
  • alle Dateien des Verzeichnisses: ls -la
  • neues Verzeichnis erstellen: mkdir [VERZ]
  • leeres Verzeichnis löschen: rmdir [VERZ]
  • alle Dateien/Verzeichnisse unterhalb des Verzeichnisses löschen: rm -rf
  • Anzeige von Datum und Uhrzeit: Date
  • gibt die Nutzung des Arbeitsspeichers aus: free
  • Laufzeit und Prozessorauslastung: uptime
  • zeigt die höchsten Ressourcenverbraucher an: top
  • zeigt Informationen über laufende Prozesse an: ps ax
  • wer ist alles eingeloggt?: who
  • Passwort ändern: passwd

Es gibt natürlich noch wesentlich mehr Befehle, aber das ist schon mal ein gute Grundlage für den Anfang.

Programm installieren und deinstallieren

Vorhin wollten wir das Programm traceroute benutzen. Das ging aber nicht, weil es nicht installiert war.

novatrend@server1:~$ sudo apt-get install traceroute

Jetzt ist das Programm installiert und wir können nach der IP-Adresse von vorhin schauen

novatrend@server1:~$ traceroute 83.158.144.134
traceroute to 83.158.144.134 (83.158.144.134), 30 hops max, 60 byte packets
 1  46.232.178.1 (46.232.178.1)  0.322 ms  0.314 ms  0.397 ms
 2  gw-novatrend.init7.net (82.197.164.33)  73.224 ms  73.201 ms  73.145 ms
 3  r1zrh2.core.init7.net (77.109.128.237)  5.466 ms r1zrh1.core.init7.net (77.109.128.177)  0.337 ms r1zrh2.core.init7.net (77.109.128.237)  5.344 ms
 4  r1fra1.core.init7.net (77.109.128.250)  15.191 ms  15.153 ms  15.108 ms
 5  r1fra1.core.init7.net (77.109.128.250)  15.062 ms  15.016 ms  15.030 ms
 6  strasbourg-6k-1-po101.intf.routers.proxad.net (212.27.56.29)  18.034 ms decix.proxad.net (80.81.192.223)  13.996 ms  13.918 ms
 7  strasbourg-6k-1-po101.intf.routers.proxad.net (212.27.56.29)  21.075 ms p11-crs16-1-be1109.intf.routers.proxad.net (194.149.160.197)  23.685 ms  26.451 ms
 8  bzn-9k-4-be1004.intf.routers.proxad.net (78.254.249.2)  23.740 ms  23.736 ms  24.270 ms
 9  bzn-6k-5-po6.intf.routers.proxad.net (194.149.162.2)  23.119 ms * *
10  lns-bzn-4.routers.proxad.net (212.27.55.114)  22.981 ms *  22.969 ms
11  * * lns-bzn-4.routers.proxad.net (212.27.55.114)  23.423 ms
12  * * *
13  * * *
14  * * *

Aufgezeichnet wird der Weg von jeweils drei IP-Paketen, die Traceroute abschickt. Sie sehen das an den drei Millisekunden Angaben in jeder Zeile. Bekommt traceroute eine Antwort, schickt es wieder drei Pakete und so weiter. Drei Sternchen bedeuten, dass es kein Antwort erhält. Das kann unterschiedliche Gründe haben. In diesem Fall ist die letzte IP-Adresse die meines ADSL Anbieters und intern sind die Wege scheinbar geblockt für unser traceroute. Mit dem Befehl sudo apt-get remove traceroute können Sie das Programm wieder von Ihrem Root-Server entfernen. Bei einem so einfachen Programm wie traceroute funktioniert das schnell und problemlos. Komplexer wird es, wenn Sie grössere Programmpakete nutzen, die wiederum auf anderen Pakten aufbauen. Hier kann es sein, dass Sie zunächst Abhängigkeiten beachten müssen. Auch hierüber finden Sie Informationen im Ubuntu Wiki (apt-get).

Editoren

Jedes Linux System hat den Editor VI installiert. Es gibt hunderte anderer Editoren aber VI ist wirklich überall zu finden. Allein das macht es hilfreich, in der Lage zu sein, eine Datei zu öffnen, zu ändern und wieder abzuspeichern. Lassen Sie uns ein Beispiel machen: Ich erstelle eine Datei in /home/novatrend, füge die Worte hallo Welt ein, speichere Sie ab und zeige sie auf dem Bildschirm an:

novatrend@server1:~$ touch vi.txt

erzeugt eine neue Datei im Verzeichnis /home/novatrend/

novatrend@server1:~$ vi vi.txt

Ruft den VI Editor auf. Stellen Sie ihre innere Uhr jetzt um etwa 50 Jahre zurück. Um etwas zu schreiben, müssen Sie in den Einfügemodus. Das machen Sie, indem Sie die Taste i drücken. Es erscheint eine Statuszeile, in der links das Wort insert steht. Geben Sie nun Hello World ein und verlassen Sie den Einfügemodus durch drücken der Escape Taste. Drücken Sie dann die : (Doppelpunkt) Taste um in den Kommandomodus zu gelangen. Jetzt noch einmal w für write und q für quit. Dann auf Enter, und Sie habe die Aufgabe erfüllt. Der Befehl

novatrend@server1:~$ cat vi.txt
Hello World

Gibt den Inhalt der Datei aus. rm vi.txt löscht die Datei wieder und mit ls können Sie schauen, ob sie wirklich verschwunden ist. War doch einfach, oder? Sie können auch mit Emacs, JED, joe, Medit, Nano oder Vim arbeiten. Jeder von diesen Editoren wird Sie auf seine eigene Weise nerven oder zufriedenstellen. Die Diskussion über den besten Editor hält seit 50 Jahren an und ist nicht gelöst. Lernen Sie einfach die Grundlagen Befehle in VI und die Sache ist erledigt.


tl;dr: Ubuntu Linux ist weit verbreitet, einfach zu bedienen und der Editor VI ist auch nicht wirklich kompliziert.