Raspberry Pi Webserver (Apache, MySQL, PHP7)

Ich gehe davon aus, dass du mit dem Raspi per SSH verbunden bist und dieser Anschluss zum Internet hat.

Zunächst solltest du dir Root-Rechte holen:

sudo bash

Apache 2.4

Nun können wir Apache mit folgendem Befehl installieren:

apt-get install apache2
Apache2 Debian Default Page
Apache2 Debian Default Page

Wenn du jetzt die (lokale) IP-Adresse des Raspberrys in deinem Browser eingibst, sollte der Server eine Dummy-Seite ausgeben (Bild rechts).

Das Standard-Verzeichnis des Webservers liegt unter /var/www/. Dort sollte eine index.html liegen, die die Seite wie im Bild rechts anzeigt.

Konfiguration

Apache wird unter /etc/apache2 konfiguriert. Hier kannst du verschiedene Module aktivieren, Ports freischalten oder VHosts einrichten. Die Konfigurations-Datei liegt meist unter /etc/apache2/*-available/ wobei * für conf (configuration), mods (modules) oder sites steht. Um diese zu aktivieren erzeugt man einen Link auf eine dieser Dateien unter /etc/apache2/*-enabled/.

Dieser Link wird mit dem Befehl a2enmod (apache2 enable module) für Module automatisch erstellt: Beispielsweise a2enmod wsgi. Für alle anderen Links muss die Debian-Funktion ln (link) verwendet werden. Die Aktivierung einer Seite sieht dann in etwa so aus:

ln -s /etc/apache2/sites-available/my-new-site /etc/apache2/sites-enabled/my-new-site

Um diese Seite wieder zu deaktivieren muss einfach der Link gelöscht werden:

rm /etc/apache2/sites-enabled/my-new-site

PHP 7

Für PHP 7 ist es wichtig, dass du die aktuellste Debian Version benutzt (sprich 8.0 aka „Jessie“ oder höher). PHP 7 wird zurzeit noch nicht in der Standard-Liste ausgeliefert, deshalb muss eine weitere Quelle hinzugefügt werden. Öffne zunächst die Liste der Quellen /etc/apt/sources.list beispielsweise mit nano:

nano /etc/apt/sources.list

und füge folgende Zeile an das Ende der Datei ein (Tipp: In PuTTY kannst du die aktuelle Zwischenablage mit Rechtsklick einfügen):

deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free

Die Datei mit Strg+x schließen und mit y die Änderungen übernehmen. Anschließend muss die Paketverwaltung upgedatet und PHP 7.0 installiert werden:

apt-get update
apt-get install php7.0

PHP 7.0 ist nach einem Neustart von Apache (/etc/init.d/apache2 restart) einsatzbereit.

Um PHP zu testen kannst du eine PHP-Datei unter /var/www/ mit folgendem Inhalt anlegen:

<?php
phpinfo();

Anschließend die Seite im Browser öffnen – es erscheint eine Seite mit Infos zur installierten PHP-Version.

MySQL

MySQL kann mit folgendem Befehl installiert werden:

apt-get install mysql-server mysql-client

Während der Installation wirst du aufgefordert ein Passwort für den MySQL Root-User zu vergeben. Dieses Passwort kann später auch für phpMyAdmin verwendet werden.

Um MySQL ausreichend gegen Angriffe zu schützen, sollte der Remote-Zugriff unterbunden werden. Das ist zwar standardmäßig abgeschaltet aber überprüfen schadet nicht: In der MySQL-Config /etc/mysql/my.cnf sollte vor bind-address = 127.0.0.1 keine Raute sein. Mit einem Port-Scanner sollte Port 3306 nicht offen sein.

Außerdem sollte ein weiterer MySQL-Benutzer angelegt werden, der nur die wichtigsten Rechte besitzt. Das kann aber bequem über phpMyAdmin gemacht werden.

phpMyAdmin

Wie immer erst mal das Paket laden und installieren:

apt-get install phpmyadmin
phpMyAdmin Login
phpMyAdmin Login

Im Browser deiner Wahl die lokale IP-Adresse des RasPis gefolgt von /phpmyadmin eingeben und es erscheint die Login-Seite von phpMyAdmin. Beispiel: 192.168.10.5/phpmyadmin.

Benutzername: root oder phpmyadmin
Passwort: [Passwort wurde während der Installation abgefragt – wenn nicht dann ist es das gleiche wie in der MySQL-Installation]


Kommentare

21 Antworten zu „Raspberry Pi Webserver (Apache, MySQL, PHP7)“

  1. Avatar von Bastian Schaedler
    Bastian Schaedler

    Danke sehr es hat mir sehr weitergeholfen.

  2. Hallo,

    Ich habe eine kleine Webseite erstellt, Index.php, ganzes Inhalt(CSS und andere Sache) habe ich in den Ordner gepackt.

    Dann habe ich den Ordner nach var/www verschoben.

    Nun will ich die Seite Starten, aber da der Ordner nicht erkannt wird, kann ich dadrauf nicht zugreifen.

    Meine Frage: wie kann ich es lösen?
    P.S. habe die PHP update installiert

    1. Hi,

      hast du das als root verschoben? Wahrscheinlich musst du nochmal die Berechtigungen anpassen.

      chmod -R u+rwX,go+rX,go-w * && chown -R www-data:www-data *

      Quelle: https://bsc.at/richtige-rechte-im-apache-datenverzeichnis/

  3. Avatar von Mesolk
    Mesolk

    Hallo, ich habe ebenfalls das Problem das nach keinem Passwort bei der MySQL Installation gefragt wurde. Allerdings wurde nach einem Passwort bei der phpmyadmin Installation gefragt. Ich habe das Tutorial jetzt 2 mal probiert um einen Tippfehler bei der Passwortvergabe auszuschließen.
    Ich kann mich einfach nicht in mein phpmyadmin einloggen.

    „mysqli_real_connect(): (HY000/1698): Access denied for user ‚root’@’localhost’“

    Ich komme nicht weiter.

    Die Anleitung zum Passwortwechsel https://wiki.debian.org/MySql#Troubleshooting funktioniert leider auch nicht, mysql hängt sich komplett auf.

    Installiert habe ich ein frisches raspbian strech lite auf einem rasp3b 32gb

    viele Grüße
    Mesolk

    1. Hi Mesolk,

      ich teste das morgen mal mit einer frischen Installation und passe das Tutorial entsprechend an.

      Gruß
      Christoph

      1. Avatar von Mesolk
        Mesolk

        sudo cat /etc/phpmyadmin/config-db.php | grep -iA6 dbuser

        gibt inforamtionen zu Benutzername und Passwort zum einloggen von phpmyadmin.

        In meinem Fall war der Benutzername „phpmyadmin“ und nicht „root“
        Das Passwort stimmte mit dem Passwort überein was bei der Installation von phpmyadmin abgefragt wurde und nicht bei der Installation von Mysql.

        Beste Grüße
        Mesolk

        1. Danke für die Information.

          Ich kam leider noch nicht dazu es bei mir zu testen und werde es vermutlich erst nächste Woche schaffen.
          Bei mir wurde damals während der phpmyadmin Installation kein PW abgefragt, so war es das von MySQL.

          Das Tutorial ist aber schon mal angepasst.

          Gruß
          Christoph

  4. Ich habe das gleiche Problem wie Ralf:

    allerdings nur wenn ich mit dem PC per Browser auf meinen Pi zugreife. Dann wird alle nur in html angezeigt. PHP scheint nicht übertragen zu werden.

    Im Pi Browser selbst läuft alles wunderbar.

    Ich möchte aber gerne meine Test-Seite an meinem PC bearbeiten und nicht am Pi.

    Thx Chris

    1. Hi Chris,

      es wird also nur lokal PHP ausgeführt? Teste mal das Gleiche wie Ralf: Versuch mal eine neue Datei „phpinfo.php“ zu erstellen und nur eine Zeile einzufügen: „< ?php phpinfo(); ?>„. Die Log-Daten von Apache könnten auch hilfreich sein (nutze ggf. https://pastebin.com um es hier zu posten).

      Ansonsten müssen wir uns die Config-Dateien anschauen – evtl. stimmt dort etwas nicht.

      Gruß

  5. Hallo Christoph,

    erstmal vielen Dank für die gute Anleitung. Bei mir besteht das Problem darin, dass in einer html-Seite ein php-Script läuft. Wenn ich die html-Seite aufrufe bekomme ich alles angezeigt bis zum <?php erst wenn &rt; folgt geht die Seite weiter (allerdings zeigt sie den Inhalt dann in Klartext).
    So betrachtet führt Apache2 kein PHP aus – oder nicht richtig.

    Ist das Problem bekannt und kannst Du mir da helfen?

    Vielen Dank

    Ralf

    PS: Scheinbar werden Bei Dir keine Tags angezeigt oder gefiltert – versuche es nochmal mit Referenzzeichen.

    1. Hi Ralf,

      versuchst du PHP Code in einer *.html-Datei auszuführen?
      Schau mal in deine Log-Dateien unter /var/log/apache2. Wenn PHP nicht ausgeführt wird stimmt irgendwas nicht…

      Versuch mal eine neue Datei „phpinfo.php“ zu erstellen und nur eine Zeile einzufügen: „< ?php phpinfo(); ?>„.

      Gruß

  6. Hallo Christoph,

    in deinem Tutorial schreibst du, dass man während der Installation von MYSQL ein Passwort eingeben muss. Jedoch ercheint bei mir kein Fenster oder sonstiges. Kannst du mir irgendwie helfen?

    Mit freundlichen Grüßen Timm

    1. Hi Timm,

      das ist seltsam. Normalerweise wird man nach einem PW gefragt. Wenn du kein PW hast oder das PW vergessen hast, sollte dir diese Anleitung weiterhelfen: https://wiki.debian.org/MySql#Troubleshooting

  7. Avatar von Sören
    Sören

    Danke Christoph,
    die Macht ist mit Dir. :-)
    Es war wirklich die php-mbstring. Nach einem Update konnte ich dieses Modul installieren und dann konnte ich wie gewohnt phpMyAdmin starten.
    Perfekt.
    Ich denke über deine Anleitung und diese Anregung werden sich seeeehr viele User freuen.
    Damit wird der pi dann endlich vernünftig php7 tauglich.
    Danke nochmals.

    1. Freut mich, dass ich dir helfen konnte :)

  8. Avatar von Sören
    Sören

    Ich würde gern die Frage von Sebastian aufgreifen.
    Nach Installation von php7.0 erscheint bei Aufruf von phpMyAdmin nur eine leere Seite.
    Gibt es einen Lösungsansatz.
    Danke

    1. Welche Version von phpMyAdmin benutzt du denn?
      Was steht in den Log-Dateien von Apache?

      Die Error-Log liegt z.B. unter /var/log/apache2/error.log

      1. Avatar von Sören
        Sören

        Hi Christoph,
        vielen Dank für die schnelle Antwort und das ebenso für deine Hilfe.
        die Error log sagt:
        PHP Fatal error: Uncaught Error: Call to undefined function __() in /usr/share/phpmyadmin/libraries/core.lib.php:235\nStack trace:\n#0 /usr/share/phpmyadmin/libraries/core.lib.php(308): PMA_fatalError(‚The [a@./url.ph…‘)\n#1 /usr/share/phpmyadmin/libraries/common.inc.php(90): PMA_warnMissingExtension(‚mbstring‘, true)\n#2 /usr/share/phpmyadmin/index.php(12): require_once(‚/usr/share/phpm…‘)\n#3 {main}\n thrown in /usr/share/phpmyadmin/libraries/core.lib.php on line 235.
        Als phpMyAdmin Version kommt die aktuelle aus Debian Jessie zum Einsatz.
        Danke

        1. Hi Sören,

          es sieht so aus, dass das PHP Moldul mbstring nicht installiert ist.
          Versuch es mal mit folgendem Befehl zu installieren:

          sudo apt-get install php-mbstring

  9. Avatar von TYPO3 Internetagentur - Sebastian
    TYPO3 Internetagentur – Sebastian

    danke dir für Deine Anleitung, wie hast du denn das Problem gelöst, dass du php7 installiert hast, aber phpmyadmin noch php5 benötigt?
    würde gerne den phpmyadmin via php7 installieren ?

    1. Ich habe ehrlich gesagt keine Probleme mit phpMyAdmin und PHP7.

      Welche Version von phpMyAdmin nutzt du denn? Bekommst du eine Fehlermeldung?
      Laut phpmyadmin.net ist die aktuelle Version 4.7 mit PHP7 kompatibel, während Version 4.0 nur bis PHP 5.5 funktioniert.