Zum Inhalt

Kategorie: Linux

SQLite und Java auf dem Raspberry Pi 3

Es ist nicht ganz so einfach, auf dem Raspberry Pi 3 unter Linux mit Java auf eine SQLite Datenbank zuzugreifen, musste ich feststellen. Scheinbar muss eine passende Version von libsqlitejdbc.so für ARM vorhanden sein, was nicht immer der Fall ist. Ansonsten fliegen z.B. Exceptions à la

Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so

oder

java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V

Funktioniert hat bei mir letztendlich die Version 3.8.10.2, die es hier zum Download gibt, oder so via Dependency in der pom.xml eingebunden werden kann:

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.8.10.2</version>
</dependency>

Git auf dem Raspberry Pi

Seinen eigenen Git Server kann man sehr einfach mit Gogs realisieren. Die einzige Voraussetzung ist eine installierte Datenbank, z.B. MySQL oder PostgreSQL. Ich benutze z.B. letztere, die ich mit

sudo apt-get install postgresql

installiert habe. Danach dann noch schnell das Passwort mit

sudo -u postgres psql postgres
\password

ändern, und eine Datenbank anlegen

CREATE DATABASE gogs ENCODING 'UTF8';

und es kann mit Gogs losgehen. Ach ja, falls noch kein git auf dem Raspberry Pi installiert sein sollte, hilft

sudo apt-get install git

bei diese Problem.

Bei GitHub gibts für allerlei Plattformen fertige Builds, u.a. auch für Linux ARM. Diese brauchen wird.

wget https://github.com/gogits/gogs/releases/download/v0.9.13/linux_arm.zip
unzip linux_arm.zip
cd gogs
./gogs web

Dann kann via Port 3000 der Installer von Gogs aufgerufen werden, z.B. http://localhost:3000/ oder http://raspberrypi:3000/. Dieser ist selbsterklärend.

ownCloud mit curl

Dank der WebDAV Unterstützung von ownCloud ist es sehr einfach, z.B. eine Datei via curl hochzuladen:

curl -v -u benutzer:passwort /home/dennis/backup-2016-07-04.zip https://www.example.com/owncloud/remote.php/webdav/UploadFolder

Benutzer und Passwort müssen in ownCloud eingerichtet werden, das Verzeichnis sollte auch schon vorhanden sein, bevor die Datei hochgeladen wird. Ansonsten lässt sich ein Verzeichnis auch via curl mit -X MKCOL anlegen.

http auf https umleiten mit Plesk

Mit Plesk lässt sich sehr einfach der komplette http Traffic für eine Domain auf https umstellen:

  1. Login als Admin in Plesk
  2. Domain auswählen
  3. Einstellungen für Apache & nginx
    Websites_Domains
  4. Zusätzliche Apache-Anweisungen
    Zusätzliche-Apache-Anweisungen

Und dort nun folgendes Eintragen:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,QSA]
</IfModule>

Testen kann man das z.B. via curl.

D:\Work>curl http://www.denniswilmsmann.de/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://www.denniswilmsmann.de/">here</a>.</p>
<hr>
<address>Apache Server at www.denniswilmsmann.de Port 80</address>
</body></html>

Let’s Encrypt und Plesk

Auf diesem vServer läuft Plesk, mittlerweile auch in Version 12.5. (Das Update hat komischerweise problemlos geklappt, trotz einiger Warnmeldungen.) Dafür gibt es eine praktische Erweiterung, um automatisch kostenlose SSL Zertifikate von Let’s Encrypt zu installieren und aktuell zu halten. Die Erweiterung kann bequem über den Katalog installiert werden:

plesk_lets_encrypt_1

Danach kann die Erweiterung verwendet werden:

plesk_lets_encrypt_2

plesk_lets_encrypt_3

Mit einem Klick auf die gewünschte Domain öffnet sich der Wizard und man muss eine eMail Adresse angeben. Es macht Sinn, auch die www Subdomain ins Zertifikat mit aufzunehmen:

plesk_lets_encrypt_4

Fertig! 🙂

Im Bereich „Tools & Einstellungen“ findet sich unter „Geplante Aufgaben“ nun auch ein Cronjob, der das Zertifikat monatlich erneuert:

plesk_lets_encrypt_5

ownCloud Fehlermeldung: Dieser Server hat keine funktionierende Internetverbindung.

Nachdem ich meine ownCloud Instanz auf 8.1.1 aktualisiert hatte, tauchte diese Warnmeldung auf: Dieser Server hat keine funktionierende Internetverbindung.

Die Lösung dafür ist, die Datei https://raw.githubusercontent.com/owncloud/core/stable8.1/config/ca-bundle.crt im config Verzeichnis abzulegen, damit kann curl wieder eine Verbindung via https zu owncloud.com herstellen.

VirtualBox Shared Folders mit Ubuntu

Ein VirtualBox Shared Folder lässt sich mit Ubuntu sehr einfach nutzen, um Dateien zwischen Host und Client auszutauschen, ohne auf WinSCP oder SMB Freigaben zurückgreifen zu müssen. Die einzige Voraussetzung ist die Installation der VirtualBox Guest Additions.

Also erstmal den Shared Folder einrichten:
vbox-shared-folders

 

Jetzt via SSH auf dem Ubuntu Client einloggen und der Shared Folder steht als /media/sf_Transfer eingebunden zur Verfügung, ist aber leider schreibgeschützt.

Der aktuelle User (in meinem Fall „dennis“) muss mit in die Gruppe vboxsf aufgenommen werden und nach einem Reboot hat dieser dann auch Schreibrechte:

sudo gpasswd -a dennis vboxsf

Plesk 502 Bad Gateway

Wer beim Login in Plesk einen Fehlermeldung à la „502 Bad Gateway“ erhält, kann einen Blick in das Logfile /var/log/sw-cp-server/error_log werfen um ein paar mehr Details zu bekommen:

2014/04/10 19:14:48 [crit] 1077#0: *7 connect() to unix:/var/run/sw-engine.sock failed (13: Permission denied) while connecting to upstream, client: 37.201.xxx.xxx, server: , request: "GET /login_up.php3 HTTP/1.1", upstream: "fastcgi://unix:/var/run/sw-engine.sock:", host: "mein-vserver.de:8443"
2014/04/10 19:14:53 [crit] 1077#0: *7 connect() to unix:/var/run/sw-engine.sock failed (13: Permission denied) while connecting to upstream, client: 37.201.xxx.xxx, server: , request: "GET /login_up.php3 HTTP/1.1", upstream: "fastcgi://unix:/var/run/sw-engine.sock:", host: "mein-vserver.de:8443"
2014/04/10 19:15:24 [crit] 1077#0: *7 connect() to unix:/var/run/sw-engine.sock failed (13: Permission denied) while connecting to upstream, client: 37.201.xxx.xxx, server: , request: "GET /login_up.php3 HTTP/1.1", upstream: "fastcgi://unix:/var/run/sw-engine.sock:", host: "mein-vserver.de:8443"
2014/04/10 19:15:27 [crit] 1077#0: *7 connect() to unix:/var/run/sw-engine.sock failed (13: Permission denied) while connecting to upstream, client: 37.201.xxx.xxx, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/sw-engine.sock:", host: "mein-vserver.de:8443"

Bei mir hat dann ein Neustart von Plesk geholfen: /etc/init.d/sw-cp-server restart

 

Alte Backups unter Linux automatisch löschen

Dieses einfache Script geht davon aus, dass im Verzeichnis /var/data/my-ftp-backup-folder/ Backups vorliegen und fängt an, alte Dateien zu löschen, sobald mehr als 7 Dateien vorliegen. Die Dateien müssen dabei schon passend geordnet vorliegen, z.B.
backup1.zip
backup2.zip
backup3.zip

backup9.zip


#!/bin/bash
# remove old backups automatically
# Version 1.0 -  03.04.2014
# https://www.denniswilmsmann.de/2014/04/alte-backups-unter-linux-automatisch-loeschen/

# how many backups should be kept?
let maxcount=7

let counter=0

for backupfile in /var/data/my-ftp-backup-folder/*; do
 let counter=$counter+1
 echo $backupfile
done
echo "Backup count:" $counter
if test $counter -gt $maxcount;
 then
 echo "Too many backups, forcing deletion..."
 let newcounter=0
 for deletefile in /var/data/my-ftp-backup-folder/*; do
 let newcounter=$newcounter+1
 # echo "newcounter" $newcounter
 let temp=$counter-$maxcount
 # echo "temp" $temp
 if test $newcounter -le $temp;
 then
 rm $deletefile
 echo "Deleting file" $deletefile
 fi

done

else
 echo "Nothing to do."
fi

Falls Dateien gelöscht werden, wird der betroffene Dateiename ausgegeben. Falls 7 (oder weniger) Dateien vorliegen, wird die Meldung „Nothing to do.“ ausgegeben. Ich lasse das Script täglich als cronjob laufen, um zu vermeiden, dass mein Backupverzeichnis vollläuft.

Funktioniert zuverlässig. 🙂 In dem Beispiel oben mit den Backups von 1 bis 9 löscht das Script also backup1.zip und backup2.zip.