Installation eines vollwertigen Webservers auf dem Raspberry Pi2 mit Apache, PHP, MySql und phpMyAdmin

Dateien verwalten über SSH

Um Dateien auf den Raspberry Pi2 zu kopieren oder zu bearbeiten, kann natürlich ebenfalls ssh verwenden werden. Dies können wir zum einen wieder direkt in Putty über das Terminal mit dem scp-Kommando erledigen, weitaus einfacher wird es für die meisten aber mit einer grafischen Oberfläche sein.

Während sich für Windows-Benutzer das Programm WinSCP anbietet, welches nachinstalliert werden muss, haben Linux-Benutzer, zumindest viele von ihnen, alles notwendige schon vorinstalliert. Dateimanager wie Nautilus, Nemo, Dolphin und auch noch andere können sich ohne zusätzliche Installationsarbeiten direkt auf dem Raspberry Pi per ssh verbinden. Über eventuelle Eigenheiten von so manchem Dateimanager können sie hier näheres lesen. Wer FileZilla schon auf seinem Rechner installiert hat, kann auch diesen benutzen.

Die Einrichtung für den Zugriff auf den Raspberry Pi gestaltet sich alles andere als schwierig und ist mit Sicherheit von jedem zu bewältigen.

Nemo unter Linux Mint – Datei – mit Server verbinden – Server: IP des Raspberry Pi – Typ: SSH – Benutzername und das Passwort vom Raspberry eingeben und verbinden.

WinSCP unter Windows – Übertragunsprotokoll: SFTP – Rechnername: IP des Raspberry Pi – Benutzername und das Passwort – eventuell im Zuge des Speicherns noch eine Verknüpfung auf dem Desktop anlegen und verbinden.

FileZilla (Linux – Windows – Mac) – Datei – Servermanager – Neuer Server (eventuell noch benennen) – Server: IP des Raspberry Pi – Protokoll: SFTP – Verbindungsart: Normal – Benutzername und Passwort eingeben und verbinden.

Bei allen anderen Programmen die es noch so gibt, wird es auch kein unlösbares Problem sein, sich mit dem Raspberry Pi zu verbinden. Was jedoch derzeit noch ein Problem darstellt ist, dass wir als Benutzer pi noch keinen Schreibzugriff auf das Verzeichnis html haben, also auf den Webserver. Dazu fügen wir den Benutzer pi in die Gruppe www-data hinzu, überprüfen ob pi zur Gruppe www-data hinzugefügt wurde und übernehmen anschließend als Benutzer pi das Verzeichnis des Webservers.

// pi zu Gruppe www-data hinzufügen
sudo usermod -a -G www-data pi

// Überprüfen
groups pi

// Webroot übernehmen als pi
sudo chown -R pi /var/www/html

Als Benutzer pi können wir ab sofort auch in das Verzeichnis abspeichern. Einige PHP Anwendungen erfordern allerdings bei so manchen Verzeichnissen die Besitzrechte als www-data. Als Beispiel könnte man hier die Installation von Rainloop anführen. Um Rainloop überhaupt ausführen zu können, wird ohnehin zuerst noch die Nachinstallation eines Paketes verlangt.

// Nachinstallation wegen cUrl Fehler von Rainloop
sudo apt-get install php5-curl
// Apache2 Neustart
sudo /etc/init.d/apache2 restart

Nachdem wir das erledigt haben, stehen wir schon wieder vor dem nächsten Problem. Rainloop hat ein Rechte-Problem mit dem Verzeichnis data, wo es gerne hineinschreiben möchte, da wir ja die Dateien mit unserem Raspberry Pi Benutzer pi hochgeladen haben.

[202] Data folder permissions error [is_writable]

Dieses Problem können wir auf mehrer Arten beheben.

Indem wir das Verzeichnis data wieder dem Apache Benutzer www-data zuweisen.

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

Indem wir dem Verzeichnis data auch mit Gruppenschreibrechten ausstatten.

sudo chmod 775 /var/www/html/RAINLOOP/data

Wenn der Webserver über das Internet erreichbar sein soll, kann ich die zwei folgenden Methoden nicht empfehlen. Für eine lokale Testumgebung, wie bei mir, mag es aber durchaus praktisch sein, wenn man sich nicht des öfteren mit diversen Verzeichnisrechten beschäftigen muss. Eine dieser Hardcore-Varianten wäre, dass wir überhaupt den Apache Benutzer von www-data auf unseren lokalen Benutzer pi ändern. Dazu bearbeiten wir die Datei envvars.

sudo nano /etc/apache2/envvars

// aus
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
// wird
export APACHE_RUN_USER=pi
export APACHE_RUN_GROUP=pi

Die Datei abschließend wieder mit STRG +X -> Y -> ENTER abspeichern und anschließend Apache neustarten, damit die Änderungen wirksam werden.

sudo service apache2 restart

Elegant ist diese Lösung nicht, aber sie funktioniert. Statt dieser Lösung könnten wir auch einen neuen Benutzer anlegen den wir einfach mit der gleichen UID und GID ausstatten wie der Apache Benutzer www-data. Ist auch nicht besonders elegant, funktioniert aber auch. Für nicht von außerhalb erreichbaren Testumgebungen ziemlich egal. Hier wären wieder ein bisschen mehr Schritte erforderlich. Als erstes wollen wir die UID und GID von www-data herausfinden.

// Benutzer www-data
id -u www-data

// Gruppe www-data
id -g www-data

Als Ausgabe sollten wir jeweils „33“ erhalten. Jetzt fügen wir den Benutzer piweb hinzu und vergeben anschließend noch das Passwort für piweb.

// Benutzer hinzufügen
sudo useradd -o -u 33 -g 33 -d /var/www -M piweb

// Passwort anlegen für piweb
sudo passwd piweb

Abschließend übernehmen wir noch das Webserverhauptverzeichnis mit dem Benutzer piweb.

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

Unseren Dateienverkehr regeln wir in diesem Fall ab jetzt mit dem Benutzer piweb statt pi.