Pakete die installiert werden:
- Apache (Webserver)
- MariaDB (MySQL-Datenbank)
  PHP (Script-Sprache für Webprogrammierung. Wird für Joomla etc. benötigt)

- phpMyAdmin (PHP-basierter Web-MySQL-Datenbankeditor)
Optionale Verwaltungs-Tools:
- Remote-Desktop & SSH-Freigabe
- ProFTP (FTP-Pogramm)
- Shell In A Box (Web Terminal)
- Webmin (Web-Admin-Tool)
Optionale Pakete:
- Drupal, Grav, Ilch, Joomla, TYPO3 (CMS)
- Wordpress (Blog)
- Piwigo, TinyWebGallery, X3 Photo Gallery, ZenPhotoCMS (Foto-Album)
Magento, modified eCommerceOpenCartosCommerce, OXID, PrestaShop, Shopware, Randshopxt:Commerce (Web-Shop)
- DokuWiki, MediaWiki, WackoWiki (Wiki)


Vorwort:
Ganz entscheidend für die Performance des Raspberry Pi ist tatsächlich die Schreib-Lese-Geschwindigkeit der microSD-Karte.
Bei einer schnellen microSD-Karte kann das Raspberry Pi OS auch als 32Bit System flüssig verwendet werden. Hiert lohnt die Ivestition.


Folgende Schritte müssen durchlaufen werden:

Raspbian als Betriebssystem installieren.

Hinweis: Ab dem Raspberry Pi 4 ist die Firmeware auf dem Board gespeichert und wird nicht wie in den Vorgänger-Versionen von der SD-Karte geladen.
Raspberry Pi OS 32-Bit herunterladen. 64-Bit (Desktop) bzw. 64-Bit (Lite) Stand: 23.08.2020 noch mit Einschränkung da die Installation des Webserver nicht korrekt funktioniert)
*   Raspberry Pi OS Lite  (Nur Konsolenversion ohne grafische Oberfläche. Ideal als Webserver da schon von Haus aus schlank gehalten)
      oder
    Raspberry Pi OS with desktop  (Desktop-Version zur einfacheren Orientierung)
    herunterladen.
* Auf eine microSD-Karte kopieren. z.B. mit Rufus portable.
* Raspberry Pi mit Raspbian starten.
* Im Desktop durch den selbsterklärenden Dialog gehen (Es kann ein neues Passwort vergeben werden).
Am Ende sollte der Reboot durchgeführt werden.


Weiter geht's in einem Terminal-Fenster  >_ 

Alles "in einem Rutsch" installieren.
Anmerkung: Das Skript ist noch in der Entwicklung da ich mich erst seit kurzem näher mit Linux beschäftige.

Es wird von alant.de ein Bash-Script heruntergeladen und in den Home-Ordner des Users
pi abgelegt. Mit dem 2. Befehl wird das Bash-Script gestartet.
Das Script kann auch mehrmals ausgeführt werden wenn etwas nachinstalliert werden soll (Deinstallieren muss "per Hand" durchgeführt werden!). 
Ablauf:
* Das Script frägt während der Installation muss ein das Passwort für den mysql-Zugriff des Unsers root  eingegeben werden.
   Beim ersten Lauf  wird dieses Passwort für den Benutzer root in die MySQl-Datenbank einigetragen
   Beim 2. Lauf wird das root-Passwort nur benötigt wenn für ein CMS, ect. ein Datenbankeintrag gemacht werden.
* phpMyAdmin wird während er Installatinon nach dem Webserver (Apache) und phpmyadmin-user fragen.
* Das Script möchte nach der Intallation der Web-Serverkomponenten wissen welche Erweiterung installiert werden soll.

wget https://alant.de/download/raspberry_pi/rpi.sh
bash rpi.sh
Hinweis: Wurde die Lite-Version installiert ist im Terminal das englische Tastaturlayout aktiv.
wget httpsÖ//alant.de/download/raspberry_pi/rpi.sh

Oder alles "von Hand"

Nach dem ersten Hochfahres von Raspian OS ersteinmal updaten

Login:
User: pi
Passwort: raspberry (durch das englische Tastaturlayout: raspberrz)

sudo apt update && sudo apt upgrade -y && sudo reboot

  Passwort und Terminal-Sprache anpassen (Via Raspberry Pi Software Configuration Tool)

sudo sudo raspi-config

 

-> 1 System Options -> S3 Password
-> 5 Localisation Options -> L1 Locale
    =>  [*] de_DE.UTF-8 UTF-8 
    => im 2. Schritt   de_DE.UTF-8  als Default local setzen
-> 5 Localisation Options -> L3 Keyboard
   => Generische PC-Tastatur mit 105 Tasten (Intl) [default]
   => ⇓ andere -> Deutsch
   => ⇑ Deutsch
   => Der Standard für die Tastenbelegung [default}
   => Keien Compose-Taste [default]


Die einzelnen Komponenten nacheinander installieren
Apache Server installieren (Dies ist der Webserver)
(Apache2 incl.PHP)

sudo apt install apache2 php libapache2-mod-php -y
Danach ist der Apache-Server unter verschiedenen Adressen erreichbar
Im eigenen Netzwerk: http://raspberrypi/ bzw. unter der IP-Adresse des Raspberry Pi's. Kann mittels ifconfig (Linux) oder ping -4 raspberrypi (Windows PC) ausgelesen werden.
Auf dem Raspberry Pi selbst auch unter http://localhost/ oder http://127.0.0.1/
 

MariaDB installieren (MySQL Datenbank)

sudo apt install mariadb-server mariadb-client -y

phpMyAdmin installieren (MySQL-Datenbank-Editor)
Wichtig ist dass noch kein Passwort für root vergeben wurde sonst kann phpmyadmin nicht den user phpmyadmin anlegen. (Kann aber ggf. nachträgich gemacht werden)

sudo apt install phpmyadmin -y

Es kommt immer wieder vor das phpmyadmin im apt-chache nicht enthalten ist und kann somit kann die Installation über das backports repository durchgeführt werden

echo "deb http://deb.debian.org/debian buster-backports main contrib non-free"|sudo tee -a /etc/apt/sources.list
sudo apt -q update sudo apt -t buster-backports -y install phpmyadmin

 Während der Installation muss der Webserver ausgewählt (apache2) und ein Passwort z.B. 'Passwort' für den user phpmyadmin eingegeben und eine Datenbank angelegt werden.


Tasten-Steuerung:
Leerzeichen (um apache2 zu markieren)
Enter (Beendet das Eingabefenster)
 
Nach erfolgreicher installation ist phpMyAdmin über die Web-Oberfläche erreichbar. http://raspberrypi/phpmyadmin/
Ein login ist möglich, mit beschränkten Rechten.
User: phpmyadmin
PW: 'Passwort'


Enter


 

Passwort eintippen 'Passwort'
Enter (Beendet das Eingabefenster)
(Wiederholen)

 

phpMyAdmin auf den aktuellen Stand bringen.

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpMyAdmin.zip
unzip -o -qq phpMyAdmin.zip
# alte Version sichern
sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin.bak
sudo mkdir /usr/share/phpmyadmin
sudo mkdir /usr/share/phpmyadmin/tmp
# Schreibrechte anpassen für die Web-Anwendung
sudo chown www-data:www-data /usr/share/phpmyadmin/tmp && sudo chmod 755 /usr/share/phpmyadmin/tmp
sudo cp -r phpMyAdmin-*/. /usr/share/phpmyadmin
sudo rm -rf phpMyAdmin-*/
# Blowfish Secret (Einfach einen neuen String erzeugen. Könnte auch ausgelesen werden)
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
rd=$(cat /dev/urandom | tr -dc '{}[]().:\-_,;a-zA-Z0-9' | fold -w 32 | head -n 1)
sudo sed -i "s/cfg\['blowfish_secret'\] = ''/cfg\['blowfish_secret'\] = '$rd'/g" $phpmyadmind/config.inc.php

Apache anpassen

Die Apache Konfiguration sollte angepasst werden damit per .htaccess in den einzelnen CMS-Installationen Veränderungen am Verhalten des Webserver möglich ist.

# Conf sichern
sudo mv /etc/apache2/apache2.conf /etc/apache2/apache2.conf.org
sudo Nano etc/apache2/apache2.conf
# Besitzer auf root setzen
sudo chown root:root $f && sudo chmod -R 644 $f

Runterscrollen bis Zeile ~178 und dort ändern.
Mit STRG-x, j Enter das Ganze ändern-

<Directory /var/www/>
Options Indexes FollowSymLinks
  AllowOverride None
AllowOverride All
Require all granted
</Directory>

Module Rewrite aktivieren damit die Anweisungen in .htaccess Wirkung zeigen

sudo a2enmod rewrite

PHP anpassen
- Tmp-Ordner für PHP-Uploads anlegen

sudo mkdir /var/www/phptmp

php.ini anpassen
Der Unterordner der PHP-Version muss ggf. angepasst werden.
- Dateiupload-Größe: 2M -> 20M
- Dateigröße per POST übermittelt: 8M -> 20M
- max. Zeit zum ausführen: 30Sek. -> 120Se2 Min.
- Speicherlimit:  128M -> 500M (je nach RAM Größe kann auf 1G eingesetzt werden)
-

# Stand April 2020. Zu einem späteren Zeitpunkt kann sich die Version ändern (Einfach vorab checken Pfad /etc/php/). 
phpversion
="
7.3"
# ini sichern
sudo mv /etc/php/$phpversion/apache2/php.ini /etc/php/$phpversion/apache2/php.ini.org

# Wenn diese Eintrag angepasst wird muss ggf. auch in den Einstellungen der CMS dieser Pfad eingetragen werden!
sudo
sed -i "s/.*upload_tmp_dir =.*/;upload_tmp_dir = /var/www/phptmp/g" /etc/php/
$phpversion/apache2/php.ini
sudo sed -i "s/upload_max_filesize =.*/upload_max_filesize = 20M/g" /etc/php/$phpversion/apache2/php.ini
sudo sed -i "s/post_max_size =.*/post_max_size = 20M/g" /etc/php/$phpversion/apache2/php.ini
sudo sed -i "s/max_execution_time =.*/max_execution_time = 240/g" /etc/php/$phpversion/apache2/php.ini
sudo sed -i "s/memory_limit =.*/memory_limit = 500M/g" /etc/php/$phpversion/apache2/php.ini
sudo sed -i "s/output_buffering =.*/output_buffering = Off/g" /etc/php/$phpversion/apache2/php.ini

In MariaDB einloggen und Befehle ausführen

* In die MariaDB Shell einloggen.

 sudo mysql

Anmerkung: ist schon ein Passwort vergeben dann: sudo mysql -u root -p"Passwort"

* Passwort 'Passwort' für Benutzer 'root' erstellen. (Passwort kann natürlich frei gewählt werden ;-). Einstellungen aktivieren und mysql verlassen.

MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'Passwort' WITH GRANT OPTION;FLUSH PRIVILEGES;CREATE DATABASE joomla;exit

Als Ergebnis soll diese Rückmeldungen erfolgen "Query OK, 0 rows affected (0.001 sec)"


phpInfo erzeugen (damit die PHP-Einstellungen ausgelesen werden können).

sudo echo '<?php' > /var/www/html/phpinfo.php && sudo echo "phpinfo()" >> /var/www/html/phpinfo.php && sudo echo '?>' >> /var/www/html/phpinfo.php

Via http://raspberrypi/phpinfo.php kann jetzt aktuelle PHP Version und die Einstellungen abgerufen werden.


FTP-Server installieren (Nicht zwingend notwendig)
Hier der ProFTP-Server installiert.

sudo apt install proftpd-basic -y


* FTP-Server konfigurieren

IP6 deaktivieren

sudo sed -i "s/UseIPv6 on/UseIPv6 off/g" /etc/proftpd/proftpd.conf

  FTP-Server starten

sudo /etc/init.d/proftpd restart

Remote Desktop Zugriff installieren (Nicht zwingend notwendig)

Es wird nur ein Paket benötigt

sudo apt install xrdp -y

Jetzt kann unter Windows einfach die Remotedesktopverbindung aufgerufen werden.
Computer: raspberrypi
User: pi
Passwort: (das neu vergebene Passwort) sonst: raspberry
Anmerkung: Mit Ubuntu klappt das nur wenn die Distribution ohne Desktop verwendet wurde und nachträglich der XFCE-Desktop installiert wird

  xrdp login xrdp login windows 

SSH Zugang aktivieren (Nicht zwingend notwendig)
Es kann durch den Menüpunkt Einstellungen -> RaspberrPi-Konfiguration Register Schnittstellen der SSH auf Aktiviert gesetzt werden oder im Terminal mit folgenden Befehlen:

sudo systemctl enable ssh && sudo systemctl start ssh

Danach kann von jedem PC aus per z.B. PuTTY auf den Raspberry Pi zugegriffen werden.
User: pi
Passwort: (das neu vergebene Passwort) sonst: raspberry

Shell In A Box (Web Terminal)
Aufruf der Shell über die Webseite http://raspberrypi:4200/
Stand 28.08.2020
Damit Shell In A Box läuft muss nach der Installation die Default-Einstellungen angepasst werden.
Den shellinaboxd Deamon in den Cronjob eintragen.

sudo apt -yq install shellinabox
# Default-Port auf 4100 legen  
sudo sed -i "s/SHELLINABOX_PORT=4200/SHELLINABOX_PORT=4100/g" /etc/default/shellinabox
# Start des shellinaboxd Daemon beim booten
sudo crontab -e
# Am Ende einfügen "@reboot sudo shellinaboxd -b -t --port 4200" (ohne Anführungszeigen :-)
# ggf. noch starten damit Shell In A Box sofort aufgerufen werden kann
sudo shellinaboxd -b -t --port 4200

Webmin installieren (Nicht zwingend notwendig)
Beim 1. Insallationsversuch treten Fehler auf und deshalb zweimal
Homepage für die Linkquelle: https://sourceforge.net/projects/webadmin/files/webmin/. Dort den aktuellsten Ordner öffen und den deb-Link kopieren

wget https://sourceforge.net/projects/webadmin/files/webmin/1.941/webmin_1.953_all.deb/download -O webmin.deb
sudo dpkg -i webmin.deb
sudo apt --fix-broken install -y
# Ein 2. mal
sudo dpkg -i
webmin.deb

 


CMS / Blog installieren
Hinweis:
Da sich die Version nach Erstellung des Artikels sicherlich wieder verändert haben, muss der Link auf der jeweiligen Seite erfragt werden. Die Datenbank muss ebenfalls für jedes CMS, Blog ect  "von Hand"  in phpMyAdmin angelegt werden.

Joomla
Homepage (J!German) für die aktuelle Linkquelle: https://www.jgerman.de/downloads/joomla-3x-auf-deutsch.html

# Das bz2 Paket auswählen und den kopierten Link anstelle verwenden!
wget
https://github.com/joomlagerman/joomla/releases/download/3.9.16v1/Joomla_3.9.16-Stable-Full_Package_German.tar.bz2 -O joomla_de.tar.bz2

Web-Ordner joomla erstellen

sudo mkdir /var/www/html/joomla

 Entpacken in den Web-Ordner joomla

sudo tar -xf /home/pi/joomla_de.tar.bz2 -C /var/www/html/joomla

Ab jetzt ist Joomla über http://raspberrypi/joomla/ erreichbar.


WordPress download
Die Datenbank für Wordpress muss "von Hand"  in phpMyAdmin angelgt werden.

wget https://de.wordpress.org/latest-de_DE.tar.gz

Entpacken in den HTML-Ordner

sudo tar -xvzf /home/pi/latest-de_DE.tar.gz -C /var/www/html

Ab jetzt ist Wordpress über http://raspberrypi/wordpress/ erreichbar.


Drupal download
Die Datenbank für muss "von Hand"  in phpMyAdmin angelgt werden.

wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz

Entpacken in den HTML-Ordner
Dem Drupal-Ordner muss noch die Version entfernt werden dtrupal6.2 ->drupal

sudo tar -xvzf /home/pi/drupal.tar.gz -C /var/www/html
sudo cp /var/www/html/drupal/default.settings.php /var/www/html/drupal/settings.php
sudo mkdir /var/www/html/drupal/files
sudo mkdir /var/www/html/drupal/files/translations

Ab jetzt ist Drupal über http://raspberrypi/drupal/ erreichbar.


TYPO3
Homepage für die aktuelle Linkquelle: https://get.typo3.org/version/10

# Das bz2 Paket auswählen und den kopierten Link anstelle verwenden!
wget --content-disposition https://get.typo3.org/10.4.0/tar.gz -O typo.tar.gz
sudo tar -xzf typo.tar.gz
sudo cp -r typo3*/. /var/www/html/typo3
# Es wrid noch eine leeere Datei erwartet
printf "" | sudo tee /var/www/html/FIRST_INSTALL

 Ab jetzt ist TYPO3 über http://raspberrypi/typo3/ erreichbar.


Piwigo download
Die Datenbank für Wordpress muss "von Hand"  in phpMyAdmin angelgt werden.

wget https://de.piwigo.org/download/dlcounter.php?code=latest -O piwigo.zip

Entpacken in den HTML-Ordner

sudo unzip /home/pi/piwigo.zip -d $html -d /var/www/html

Ab jetzt ist Piwigo über http://raspberrypi/piwigo/ erreichbar.

OXID eShop download

Da es mit dem Composer sehr lange dauern kann hier ersteinmal der Weg mit dem direkten download

https://oxidforge.org/download/download-oxid-eshop-6-2-0?wpdmdl=26034

 

OXID wird via Compser installiert. dieser muss vorab installiert werden. Ebenfalls werden noch 2 PHP-Erweiterungen benötigt

sudo sudo apt install composer -y
sudo apt install php-bcmath php-soap -y

Jetzt den Shop herunterladen und installieren. In diesem Bsb. wird die Comunity Edition Version 6.2 installiert
Anmerkung: Es wird hier mit sudo OXID installiert (ggf. für eine produktive Umgebung erst auf ein Testsystem installieren und dann die Dateien kopieren)

sudo composer create-project --no-dev oxid-esales/oxideshop-project oxid dev-b-6.2-ce

Ab jetzt ist OXID über http://raspberrypi/oxid erreichbar.

 

https://get.typo3.org/version/10

 


WordPress download
Die Datenbank für Wordpress muss "von Hand"  in phpMyAdmin angelgt werden.

wget https://de.wordpress.org/latest-de_DE.tar.gz

Entpacken in den HTML-Ordner

sudo tar -xvzf /home/pi/latest-de_DE.tar.gz -C /var/www/html

Ab jetzt ist Wordpress über http://raspberrypi/wordpress erreichbar.


 

Schreibrechte anpassen

Besitzer und Schreibrechte für den www-Ordner des Apache-Servers anpassen. Sonst hätte nur root Schreibrechte und kein Script könnte dort Änderungen vornehmen oder dort etwas speichern.

# Benutzer des Webservers Apache (www-data)
sudo chown -R www-data:www-data /var/www && sudo
chmod -R 755
/var/www

 Symbolischen Link auf den Apache-Ordner ins Homeverzeichnis von pi setzen

ln -s /var/www/html/ ./html

Die graphische Oberfläche abschalten (Nicht zwingend notwendig)
Diese wird bei einem Betrieb als Webserver nicht benötigt. Per RDP ist es weiterhin möglich die grafische Oberläsche aufzurufen

sudo systemctl set-default multi-user.target

 Wieder einschalten geht so:-) sudo systemctl set-default graphical.target



Problemecke:

Testen ob MariaDB läuft

sudo systemctl status mariadb

Tip: Mit STRG-C kann das Statusfenster verlassen werden.

Sollte nicht in der Zeile Acitve: active (running) stehen folgenden Befehl ausführen um den Dienst zu starten: sudo systemctl start mariadb


Bootloader Firmare checken. (Nicht zwingend notwendig)

rpi-eeprom-update

 

Remote Desktop Verbindungsprobleme

 Sollte es zu einer Fehlermeldung kommen „error – problem connecting“ dann die VNC-Version aktualisieren.

sudo apt-get remove xrdp vnc4server tightvncserver -y &&
sudo apt-get install tightvncserver -y &&
sudo apt-get install xrdp -y

Alles wieder entfernen

sudo apt remove --purge phpmyadmin -y
sudo apt remove --purge mariadb-server mariadb-client -y
sudo apt remove --purge apache2 php libapache2-mod-php -y
sudo apt remove --purge proftpd-basic -y
sudo apt remove --purge shellinabox -y
sudo apt remove --purge xrdp -y
sudo rm -r /var/www/html/*