Das Tor zur Welt: LAMP-Server

Voraussetzung: »Basisinstallation«

LAMP steht als Abkürzung für das Paket aus Linux, Apache, MySQL und PHP. Wie wir diese Software auf unser System hieven, beschreibe ich als erstes, denn sofern man damit nicht nur eine Homepage erstellen möchte, ist ein fertig konfigurierter LAMP-Server auch für spätere Projekte nützlich (DVB-Streaming, DLNA-Server). Als Grundlage dient der englischsprachige »Apache HTTP Server-Artikel des ArchLinux-Wikis«, hier allerdings in einer vereinfachten, stark gekürzten Form, die für unsere Zwecke vollkommen ausreicht.

Installation von Apache

Zuerst installieren wir den Webserver Apache und nehmen vorerst nur eine Konfiguration an ihm vor: Wir stellen ihn ruhig, sodass er keine Informationen wie z.B. seine eigene Software-Version übermittelt.

pacman -S apache
nano /etc/httpd/conf/extra/httpd-default.conf

In dieser Datei suchen wir den Abschnitt ServerTokens und ändern den freizügigen Parameter „Full“ auf den restriktivsten „Prod“:

ServerTokens Prod

systemctl start httpd.service
systemctl enable httpd.service

Geben wir nach Öffnen des Browsers die IP des SBCs, die wir während der Installation des Betriebssystems vergeben haben, in die Adresszeile ein, so sollte sich nun der Webserver melden.

Installation von PHP

Viele Projekte verwenden heutzutage PHP, denn damit sind u.a. dynamische Seiten möglich. Wir installieren also PHP und aktivieren es im Apache-Server:

pacman -S php php-fpm php-sqlite
nano /etc/httpd/conf/httpd.conf

Hier gehen wir in den Abschnitt mit den vielen LoadModule-Zeilen, suchen folgende Einträge und aktivieren sie durch entkommentieren:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Weiterhin erstellen wir eine Konfigurationsdatei:

nano /etc/httpd/conf/extra/php-fpm.conf

mit folgendem Inhalt:

DirectoryIndex index.php index.html
<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/"
</FilesMatch>

Diese Datei binden wir am Ende der Datei /etc/httpd/conf/httpd.conf ein:

Include conf/extra/php-fpm.conf

Jetzt starten wir den Apache-Server und php-fpm neu:

systemctl restart httpd.service
systemctl restart php-fpm.service
systemctl enable php-fpm.service

Ob die Installation von PHP erfolgreich war, können wir mit einer kleinen PHP-Info-Datei im DocumentRoot von Apache testen:

nano /srv/http/info.php

<?php phpinfo(); ?>

Bei Eingabe von <IP des SBC>/info.php in die Browser-Adresszeile sollte nun die PHP-Info-Seite erscheinen.

Bisher haben wir nur den Apache-Server fit gemacht für PHP. Nun konfigurieren PHP selbst:

nano /etc/php/php.ini

Achtung: Diese Datei ist riesig, Suchfunktion von nano (STRG + W) nutzen und Zeilen entsprechend bearbeiten, Kommentarzeichen (hier Semikolon) ggf. entfernen!

Zuerst die Zeitzone festlegen:

date.timezone = Europe/Berlin

Optional aktivieren wir Datenbank-Module, die wir sicherheitshalber schon mit installiert hatten (z.B. brauchen wir SQLite später fürs DLNA-Projekt):

extension=pdo_sqlite.so
extension=sqlite3.so
extension=mysqli

Am Schluss nicht vergessen, den Apache-Server neuzustarten:

systemctl restart httpd.service

Installation von MySQL / MariaDB

ArchLinux verwendet MariaDB als freie MySQL-Implementation (Oracles MySQL wird mehr und mehr closed source).[1][2] Die Installation erfolgt wie im »ArchLinux-Wiki zu MySQL«.

Webserver via FTP-Server befüllen

Die Inhalte der Webseite werden abgelegt im Verzeichnis /srv/http und irgendwie müssen wir die Dateien dorthin bekommen, solange wir sie nicht via SSH direkt im SBC erstellen. Wir nutzen für diese Aufgabe »proFTPD«, einen FTP-Server. proFTPD gibt es jedoch für ArchLinux nicht als vorkompiliertes Binärpaket, sodass wir es aus dem AUR selbst kompilieren müssen. Wir dürfen jetzt nicht als root angemeldet sein!

wget https://aur.archlinux.org/cgit/aur.git/snapshot/proftpd.tar.gz
tar -xvf proftpd.tar.gz
cd proftpd
makepkg -Asic
sudo nano /etc/proftpd.conf

Nun konfigurieren wir den FTP-Server. Wir nutzen virtuelle Benutzer und passen die Datei folgendermaßen an (die Anonymous-Sektion kann gelöscht werden):

DefaultRoot ~
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /etc/ftpd.passwd
AuthPAM off
RequireValidShell off

Nun erstellen wir einen virtuellen FTP-Benutzer namens ftpschmied mit dem DocumentRoot des Apache-Servers /srv/http und den Nutzer- und Gruppenrechten des Users http (id http zeigt uid und gid als 33 an).

cd /etc
sudo ftpasswd --passwd --name ftpschmied --uid 33 --gid 33 --home /srv/http --shell /bin/false
sudo systemctl start proftpd.service
sudo systemctl enable proftpd.service

Ein gutes FTP-Client-Programm zum Befüllen des Servers ist beispielsweise »FileZilla«.