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 eCommerce, OpenCart, osCommerce, OXID, PrestaShop, Shopware, Randshop, xt: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
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. |
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.
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/*