Webserver auf dem ODROID installieren

Hier erkläre ich wie man einen LAMP (Linux, Apache, MySQL, PHP) Webserver auf seinem ODROID installieren und einrichten kann. Dieser Beitrag baut auf dem Artikel „Linux auf dem ODROID installieren“ auf. Das bedeutet dass alle Schritte die hier erklärt werden auf Ubuntu 10.05 basieren. Ab Ubuntu 13.10 werden z.B. einige Konfigurationsdateien im Apache2 Verzeichnis anders behandelt als in älteren Versionen.

  1. Apache installieren
  2. MySQL installieren
  3. PHP installieren
  4. phpMyAdmin installieren
  5. Sicherheitszertifikat erstellen (SSL)

LAMP-Webserver

 

Apache installieren

Mit folgendem Befehl installieren Sie den Apache Webserver
sudo apt-get install apache2

Geben Sie anschließend im Browser die IP des odroid ein.
Sie sollten nun eine Seite „It works“ sehen. Dies bedeutet dass die Installation erfolgreich war und Ihr Apache läuft.

Apache - it works

 

MySQL installieren

Um den MySQL-Server und einen MySQL-Client zu installieren geben Sie im Terminal folgenden Befehl ein.
sudo apt-get install mysql-server mysql-client

Nach der Installation öffnet sich ein Fenster in dem Sie das Passwort für den Root-Nutzer setzen sollten.

MySQL - root Passwort

 

PHP installieren

Mit folgendem Befehl installieren Sie php5 und die für den Apache nötigen Libraries und Module
sudo apt-get install php5 php5-mysql libapache2-mod-php5

Um zu testen ob PHP richtig installiert wurde, legen Sie eine Testdatei im Dokument-Root-Verzeichnis des Servers an.
sudo vim /var/www/info.php

Es wird der Editor vim mit einer leeren Datei geöffnet.
Drücken Sie die Taste i um in den Einfügemodus zu gelangen und geben Sie folgendes ein.

Speichern Sie die Datei indem Sie die Taste ESC und anschließend Doppelpunkt, W und Q drücken.
Erklärung: Mit der Taste ESC verlassen Sie den Einfügemodus, Die Taste W speichert die Datei und mit Q wird diese geschlossen.

Der Apache Webserver sollte nun neu gestartet werden.
sudo service apache2 restart

Es kann sein dass Sie hier folgende Meldung zu sehen bekommen.

In diesem Fall überprüfen Sie bitte die Datei „/etc/hosts“.
Der erste Eintrag sollte 127.0.0.1 localhost heißen.
Bei Ihnen steht höchstwahrscheinlich 127.0.0.1 odroid-server.
Rufen Sie also die Datei auf und ändern Sie den Wert auf 127.0.0.1 localhost.
sudo vim /etc/hosts

Nachdem Sie die Datei gespeichert haben, können Sie im  Browser die IP Ihres ODROID gefolgt von /info.php eingeben. Also z.B. http://192.168.178.20/info.php Wenn alles richtig ist sollten Sie eine Seite mit Informationen zum Server und zu php sehen.

phpinfo

Benötigen Sie weitere php Module, können Sie sich mit folgendem Befehl eine Liste aller verfügbaren Module anzeigen lassen.
apt-cache search php5

Sie können nun eins oder mehrere der Module installieren indem Sie apt-get install gefolgt von einem oder mehreren Modulnamen, die durch ein Leerzeichen getrennt werden, angeben.
Ich habe im Hinblick auf die spätere Installation von owncloud, folgende Module zusätzlich installiert.
sudo apt-get install php5-curl php5-gd php5-mysql php-auth php5-mcrypt php5-memcache php5-xcache

 

phpMyAdmin installieren

phpMyAdmin ist eine super Weboberfläche zum administrieren von MySQL Datenbanken.

Geben Sie zum installieren von phpMyAdmin folgenden Befehl ein.
sudo apt-get install phpmyadmin

Wählen Sie als nächstes die Art des Webservers, in unserem Fall also apache2

Die nächste Frage beantworten Sie mit JA.
Dann geben Sie das Passwort für den MySQL-Root-User ein
Als nächstes geben Sie das Passwort ein, das abgefragt wird wenn Sie phpMyAdmin über den Browser öffnen wollen.

Nun noch folgenden Befehl eingeben um einen symbolischen Link auf das Dokument-Root-Verzeichnis des Servers zu setzen.
sudo ln -s /usr/share/phpmyadmin /var/www

Wenn Sie jetzt im Browser die IP des ODROID, gefolgt von /phpmyadmin eingeben sollten Sie die Loginmaske von phpmyadmin sehen.
Geben Sie root als Username und ihr zuvor erstelltes Passwort ein.

phpMyAdmin - Login

 

Sicherheitszertifikat erstellen

Ein Sicherheitszertifikat ist nötig wenn Sie eine verschlüsselte Transaktion zwischen Server und Client gewährleisten wollen.

SSL-Zertifikate werden üblicherweise durch eine autorisierte Zertifizierungsstelle (Certification Authority oder kurz CA) signiert.

Da für ein offizielles und durch eine Zertifizierungsstelle signiertes Zertifikat eine jährliche Gebühr in Höhe von mehreren hundert Euro kosten kann, werden wir uns hier ein Zertifikat selbst erstellen und signieren. Der einzige Unterschied zu einem von einer anerkannten Stelle signierten Zertifikat ist, dass der Client (eMailprogramm, Browser, etc) beim ersten Aufruf der Seite eine Warnung ausgeben wird, dass er die CA nicht kennt. Der Benutzer muss dann einmal bestätigen dass er dem Zertifikat vertraut.

als root anmelden mit sudo -s

Zertifikat erstellen
Zuerst legen wir unter /etc/apache2 ein neues Verzeichnis mit dem Namen ssl an
mkdir -p /etc/apache2/ssl

Dann erstellen wir ein Schlüsselpaar für unser Zertifikate Authority (CA).
Dabei werden zuerst der Schlüssel und danach das Zertifikat erstellt.
In diesem Fall wird das Zertifikat 10 Jahre lang gültig sein.
openssl req -new -x509 -days 3650 -nodes -sha256 -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem

Jetzt werden einige Daten abgefragt wovon nur eine wirklich wichtig ist, aber fangen wir von vorn an.
Bei dem Eintrag „Common Name (e.g. server FQDN or YOUR name) []:“, ist es extrem wichtig das Sie den genauen Domainnamen eingeben für den die Verschlüsselung gelten soll!!!

ln -sf /etc/apache2/ssl/apache.pem /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0
chmod 600 /etc/apache2/ssl/apache.pem

mit exit schließen wir das root Terminal

Anschließend überprüfen wir ob in der Datei /etc/apache2/ports.conf der Eintrag Listen 443 vorhanden und nicht auskommentiert ist.
Sollte eine Raute davor stehen, entfernen wir diese und speichern die Datei ab.
sudo vim /etc/apache2/ports.conf

In der Datei sollten folgende Einträge vorkommen und auch nicht auskommentiert sein.

Nachdem die Datei geändert wurde, muss der Webserver neu gestartet werden.
sudo service apache2 reload

Jetzt aktivieren wir das SSL Modul des Webservers
sudo a2enmod ssl

SSL Website konfigurieren
Als nächstes richten wir den VirtualHost für SSL ein.
sudo vim /etc/apache2/sites-available/ssl

Übrigens hängt man ab der Version 13.10 an den Dateinamen die Endung conf an.
Da ich jedoch Linaro 13.05 installiert habe, lasse ich die Erweiterung einfach weg.

In die Datei „ssl“ schreiben wir folgenden Text

Anschließend muss die neue VirtualHost Datei aktiviert werden. sudo a2ensite ssl

Jetzt wird der Webserver noch einmal neu gestartet
sudo service apache2 force-reload

Wenn Sie wollen dass Ihre Seite nur über https erreicht werden kann, können Sie dies mit dem Apache Modul mod_rewrite erreichen.

Modul aktivieren
sudo a2enmod rewrite

Falls das Verzeichnis /var/run/apache2 nicht vorhanden ist, legen wir dieses an.
sudo mkdir -p /var/run/apache2

anschließend muss der Besitzer des Verzeichnisses auf www-data geändert werden.
sudo chown -R www-data /var/run/apache2

Zum Schluss lesen wir die Konfiguration von Apache neu ein.
sudo /etc/init.d/apache2 force-reload

Um das Modul nutzen zu können, müssen wir, je nach genutzter Linux Version, die Datei /etc/apache2/sites-enabled/000-default oder default in einem Terminal mit root Rechten öffnen und anpassen.
sudo vim /etc/apache2/sites-enabled/000-default

Nun suchen wir in dieser Datei nach folgender Sektion.

und ändern die Zeile AllowOverride None zu AllowOverride FileInfo
Damit erlauben wir das Umschreiben von Urls.

Nun müssen wir noch die Datei /etc/apache2/sites-available/default bearbeiten.
sudo vim /etc/apache2/sites-available/default

Direkt nach ServerAdmin können wir folgende Zeilen einfügen

In diesem Beispiel sorgen wir dafür das http://profwebapps.no-ip.org/phpmyadmin automatisch auf https://profwebapps.no-ip.org/phpmyadmin umgeleitet wird.

Wenn Sie nicht nur ein Verzeichnis sondern den kompletten Webserver mit SSL absichern wollen, können Sie stattdessen folgenden Text eingeben.

 



Raspberry Pi

In diesem zweiten Teil meiner ODROID Reihe haben Sie gelernt wie man einen LAMP-Webserver, sowie phpMyAdmin installiert und einrichtet und wie man sich sein eigenes Sicherheitszertifikat anlegen kann. Im dritten Teil erkläre ich Ihnen wie wie man owncloud 6 auf seinem ODROID installiert, wie man Kontakte und Kalender von Google in seine owncloud importiert und wie man letztendlich seine owncloud mit den verschiedensten Geräten wie Mac, iPad und Android Smartphone synchronisiert.

Zurück zu Teil 1                Weiter zu Teil 3

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

4 Kommentare zu “Webserver auf dem ODROID installieren

  1. Pingback: Linux auf dem ODROID installieren | Fluuux - TechBlog

  2. Pingback: owncloud 6 auf dem ODROID installieren | Fluuux - TechBlog

  3. Beeindruckend was der Odroid leistet. Wie sieht es aber grundsätzlich mit der Performance aus? Ich habe ein auf Verbrauch optimiertes Setup (Pentium M, 1,7 Ghz untervoltet, 2GB Ram, Technik von 2004!) und überlege auf ARM zu migrieren.
    Das Problem: Mein Ziel sind rechenintensive PHP-Scripte (Zeichenvergleich, lesen und schreiben mehrerer tausend Dateien etc.), die ich aber auf der Maschine zu Hause ausführen muss.
    Die Vergleichbarkeit zwischen x86 und ARM ist ja eher schwierig, aber es gibt ein „PHP benchmark script“
    (http://www.php-benchmark-script.com/) das die üblichen Operationen testet um Scenarien abschätzen zu können.

    Anbei ein Testergebnis auf meinem System und eines auf dem Rechenzentrums-Server meines ISPs/Hosters (Octa-Core der neuesten Generation, etwa 10-12x so schnell).
    Könntest jemand das script mal auf nem ODROID ausführen?

    Besten Dank, Bob

    home-Server:
    ————————————–
    | PHP BENCHMARK SCRIPT |
    ————————————–
    Start : 2014-07-11 04:38:45
    Server : ######################
    PHP version : 5.3.5
    Platform : ####################
    ————————————–
    test_Math : 11.698 sec.
    test_StringManipulation : 12.515 sec.
    test_Loops : 12.444 sec.
    test_IfElse : 9.195 sec.
    ————————————–
    Total time: : 45.852 sec.

    ISP-Server:
    ————————————–
    | PHP BENCHMARK SCRIPT |
    ————————————–
    Start : 2014-07-11 07:14:53
    Server : ##################
    PHP version : 5.3.3-7+squeeze19
    Platform : ###############
    ————————————–
    test_Math : 1.564 sec.
    test_StringManipulation : 1.579 sec.
    test_Loops : 1.159 sec.
    test_IfElse : 0.867 sec.
    ————————————–
    Total time: : 5.169 sec.

  4. ————————————–
    | PHP BENCHMARK SCRIPT |
    ————————————–
    Start : 2015-09-04 12:22:44
    Server :
    PHP version : 5.5.9-1ubuntu4.11
    Platform : Linux
    ————————————–
    test_math : 9.840 sec.
    test_stringmanipulation : 9.680 sec.
    test_loops : 5.328 sec.
    test_ifelse : 3.228 sec.
    ————————————–
    Total time: : 28.076 sec