Raspberry Pi

Aus EDOMI
Zur Navigation springenZur Suche springen

EDOMI läuft auf einem Raspberry Pi ab der Version 3, da EDOMI mindestens die 64 Bit Unterstützung benötigt.

Die EDOMI Installation auf einem Rapsberry Pi verwendet entweder die Linux-Distribution Ubuntu oder (seitdem CentOS-7 auch vernünftig auf dem RasPi funktioniert) die Linux-Distribution CentOS-7.

CentOS-7 ist die native und vom Entwickler bevorzugte Distribution, aber auf dem RasPi noch nicht so gut getestet. Außerdem fehlt auf ARM64 noch die aktuelle PHP Version (7.2) und es steht nur die veraltete Version 5.6 zur Verfügung.

Diese Installationsanleitung besteht daher aus zwei unterschiedlichen Anleitungen:

Installation (Ubuntu)

Die Installation von EDOMI2 unter Ubuntu 18.04 läuft wie folgt:

1. Image herunterladen:

wget -c http://cdimage.ubuntu.com/releases/bionic/release/ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img.xz
(siehe auch: https://wiki.ubuntu.com/ARM/RaspberryPi)

2. Image entpacken:

unxz ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img.xz

3. Image auf SD-Card installieren:

dd if=ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img of=/dev/mmcblk0 bs=1M status=progress

4. SD Karte einsetzen und Ubuntu starten.

Einloggen mit ubuntu und ubuntu.

Nach dem Einloggen wird ein neues Passwort abgefragt!

(Eventuell braucht das System einen kleinen Augenblick, 1-2 Minuten, bis der Login funktioniert...)

Gegebenfalls mit ip addr aktuelle IP-Adresse abfragen.

5. Installationskript ubuntu-edomi-install.sh auf den Raspberry Pi kopieren:

scp ubuntu-edomi-install.sh ubuntu@<IP-ADDR>:~

6. Installation starten:

chmod +x ubuntu-edomi-install.sh
./ubuntu-edomi-install.sh

Sollte diese Meldung kommen, so muss man einfach etwas warten:

E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3176 (unattended-upgr) - open (11: Resource temporarily unavailable)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Im Hintergrund läuft dann ein System-Update-Prozess, der die Installation blockiert. Dies kann bis zu 15 Minuten dauern...

7. Wenn die Installation erfolgreich war, den RasPi neu booten.

8. Mit Web-Browser auf http://<IP-ADDR>/admin verbinden.

Installationsskript

Das folgende Skript dient zu Installation von EDOMI auf einem Ubuntu 18.04 LTS System (getestet) und kann auch auf neueren Ubuntu-Systemen installiert werden (noch ungetestet). Das Skript passt das Grundsystem an, lädt EDOMI herunter und installiert dieses. Nach einem anschließendem Reboot kann EDOMI sofort genutzt werden.

Das Skript sollte als ubuntu-edomi-install.sh abgespeichert werden.

#!/bin/bash
set -e

# Lade OS version
. /etc/os-release

# Entscheide, welche PHP Version zu installieren ist
PHPVER=7.2
[ ${VERSION_ID%.*} -gt 19 -o ${VERSION_ID#*.} -gt 4 ] && PHPVER=7.3

# Cloud Pakete deinstallieren
sudo apt -y purge snapd cloud-init 
sudo rm -rf /etc/cloud/cloud.cfg.d/

# Paketlisten aktualisieren
sudo apt-get update

sudo apt -y autoremove

# Nötige Pakete installieren
sudo apt-get -y install ntp vsftpd \
  mariadb-server apache2 \
  libapache2-mod-php$PHPVER php$PHPVER-cli \
  php$PHPVER-bz2 php$PHPVER-common php$PHPVER-dba php$PHPVER-gd php$PHPVER-json \
  php$PHPVER-mbstring php$PHPVER-mysql php$PHPVER-soap php$PHPVER-xml php$PHPVER-curl \
  joe rfkill

sudo apt-get -y dist-upgrade

# Automatische Updates deaktivieren
sudo sed -i -e 's/Update-Package-Lists "1"/Update-Package-Lists "0"/' /etc/apt/apt.conf.d/10periodic
sudo sed -i -e 's/Update-Package-Lists "1"/Update-Package-Lists "0"/' /etc/apt/apt.conf.d/20auto-upgrades
sudo chmod -x /etc/cron.daily/apt-compat

sudo systemctl stop unattended-upgrades.service
sudo systemctl disable unattended-upgrades.service

# Dienste aktivieren
sudo systemctl enable ntp
sudo systemctl enable vsftpd
sudo ln -sf /lib/systemd/system/ntp.service /etc/systemd/system/ntpd.service

# Set Timezone
sudo timedatectl set-timezone Europe/Berlin

# VSFTP konfigurieren
sudo sed -i -e '/listen=/ s/=.*/=YES/' /etc/vsftpd.conf
sudo sed -i -e '/listen_ipv6=/ s/=.*/=NO/' /etc/vsftpd.conf

# MySQL/MariaDB konfigurieren

# Verwendete MariaDB Version feststellen
TMP1=`mariadb -V`; TMP2=${TMP1#*Distrib }; MVER=${TMP2%-MariaDB*}
[ "${MVER%.*}" = "10.3" -a ${MVER##*.} -gt 4 ] && NEWDB=1
echo "MariaDB Version: $MVER"

# Test DB entfernen
if [ -d /var/lib/mysql/test ]; then
  sudo mysql -e "DROP DATABASE test;"
  sudo mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
  sudo mysql -e "FLUSH PRIVILEGES;"
  sudo mysql -e "GRANT ALL ON *.* TO mysql@'%';"
fi

# MariaDB konfigurieren
echo "[mysqld]"                                 > /tmp/tmp.txt
echo "key_buffer_size=256M"                     >> /tmp/tmp.txt
echo "sort_buffer_size=8M"                      >> /tmp/tmp.txt
echo "read_buffer_size=16M"                     >> /tmp/tmp.txt
echo "read_rnd_buffer_size=4M"                  >> /tmp/tmp.txt
echo "myisam_sort_buffer_size=4M"               >> /tmp/tmp.txt
echo "join_buffer_size=4M"                      >> /tmp/tmp.txt
echo "query_cache_limit=8M"                     >> /tmp/tmp.txt
echo "query_cache_size=8M"                      >> /tmp/tmp.txt
echo "query_cache_type=1"                       >> /tmp/tmp.txt
echo "wait_timeout=28800"                       >> /tmp/tmp.txt
echo "interactive_timeout=28800"                >> /tmp/tmp.txt
echo "innodb_file_per_table=ON"                 >> /tmp/tmp.txt
echo "character-set-server=latin1"              >> /tmp/tmp.txt
echo "collation-server=latin1_swedish_ci"       >> /tmp/tmp.txt
[ -n "$NEWDB" ] && echo 'sql-mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"' >> /tmp/tmp.txt
sudo cp /tmp/tmp.txt /etc/mysql/mariadb.conf.d/99-edomi.cnf

# EDOMI Benutzer für DB setzen
if [ -z "$NEWDB" ]; then
# (altes DB "user" Tabellen Format)
echo "Using old DB user table format"
cat >/tmp/mysql-add-users.sql <<EOF
LOCK TABLES \`user\` WRITE;
REPLACE INTO \`user\` VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0.000000);
REPLACE INTO \`user\` VALUES ('localhost','ubuntu','*3CD53EE62F8F7439157DF288B55772A2CA36E60C','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0.000000);
REPLACE INTO \`user\` VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0.000000);
UNLOCK TABLES;
FLUSH PRIVILEGES;
EOF
else
# (neues DB "user" Tabellen Format, ab MariaDB Version 10.3.5)
echo "Using new DB user table format"
cat >/tmp/mysql-add-users.sql <<EOF
LOCK TABLES \`user\` WRITE;
REPLACE INTO \`user\` VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0.000000);
REPLACE INTO \`user\` VALUES ('localhost','ubuntu','*3CD53EE62F8F7439157DF288B55772A2CA36E60C','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0.000000);
REPLACE INTO \`user\` VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0.000000);
UNLOCK TABLES;
FLUSH PRIVILEGES;
EOF
fi
sudo mysql -u root mysql </tmp/mysql-add-users.sql

# Apache konfigurieren
cat >/tmp/001-edomi.conf <<EOF
<VirtualHost *:80>
  ServerName edomi
  ServerAdmin webmaster@localhost
  DocumentRoot /usr/local/edomi/www
  <Directory /usr/local/edomi/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
sudo cp /tmp/001-edomi.conf /etc/apache2/sites-available/001-edomi.conf
sudo ln -sf /etc/apache2/sites-available/001-edomi.conf /etc/apache2/sites-enabled/001-edomi.conf
sudo rm -f /etc/apache2/sites-enabled/000-default.conf

# PHP konfigurieren
cat >/tmp/edomi.ini << EOF
short_open_tag = On
post_max_size = 100M
upload_max_filesize = 100M
max_file_uploads = 1000
EOF
sudo cp /tmp/edomi.ini /etc/php/$PHPVER/edomi.ini

sudo ln -sf /etc/php/$PHPVER/edomi.ini /etc/php/$PHPVER/cli/conf.d/99-edomi.ini
sudo ln -sf /etc/php/$PHPVER/edomi.ini /etc/php/$PHPVER/apache2/conf.d/99-edomi.ini

# EDOMI Download 
cd /tmp; wget -c http://www.edomi.de/download/install/EDOMI_201.tar

# EDOMI Installation
mkdir -p edomi
tar -C edomi -xf /tmp/EDOMI_201.tar 

# EDOMI Autostart konfigurieren
cat >/tmp/edomi.service << EOF
[Unit]
Description=EDOMI
Before=getty@tty1.service getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service
After=httpd.service mysqld.service network.target
Conflicts=getty@tty1.service getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service

[Service]
Type=simple
ExecStart=/bin/bash /usr/local/edomi/main/start.sh
TimeoutStartSec=0
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit

[Install]
WantedBy=default.target
EOF
sudo cp /tmp/edomi.service /etc/systemd/system/edomi.service

sudo systemctl daemon-reload
sudo systemctl enable edomi

# EDOMI selbst installieren
MAIN_PATH="/usr/local/edomi"

# EDOMI installieren
sudo systemctl stop mysqld
sudo mkdir -p $MAIN_PATH
sudo tar -xf edomi/edomi.edomiinstall -C $MAIN_PATH
sudo chmod 777 -R $MAIN_PATH

# edomi Start-Skript anpassen
sed -i -e "s#/bin/sh#/bin/bash#" $MAIN_PATH/main/start.sh

# edomi.ini anpassen
sed -i -e "s#global_serverIP.*#global_serverIP='auto'#" $MAIN_PATH/edomi.ini
sed -i -e "s#global_sqlHost.*#global_sqlHost=''#" $MAIN_PATH/edomi.ini


Installation (CentOS)

Die Installation von EDOMI2 unter CentOS-7 läuft wie folgt:

1. Image herunterladen:

wget -c http://mirror.ehv.weppel.nl/centos-altarch/7.8.2003/isos/aarch64/images/CentOS-Userland-7-aarch64-RaspberryPI-Minimal-4-2003-sda.raw.xz
(siehe auch: https://wiki.centos.org/SpecialInterestGroup/AltArch und 
 https://wiki.centos.org/SpecialInterestGroup/AltArch/Arm32/RaspberryPi3)

2. Image entpacken:

unxz CentOS-Userland-7-aarch64-RaspberryPI-Minimal-4-2003-sda.raw.xz

2. Image auf SD-Card installieren:

dd if=CentOS-Userland-7-aarch64-RaspberryPI-Minimal-4-2003-sda.raw of=/dev/mmcblk0 bs=1M status=progress

3. SD Karte einsetzen und Ubuntu starten.

Einloggen mit root und centos.

Gegebenfalls mit ip addr aktuelle IP-Adresse abfragen.

4. EDOMI herunterladen und auspacken

5. Änderungen am Installationsscript durchführen:

 sed -i 's/.*grub/#&/' install.sh
 sed -i 's/.*remi/#&/' install.sh

6. Nach Anweisung installieren.

7. Gegebenenfalls noch fehlende Packete nachinstallieren:

 yum -y install file
 yum -y install joe