Apache2 status Error www-browser not found

Wir möchten den Status eines Apache Server abfragen.

apachectl status

Erhalten aber dieses Fehlermeldung.

/usr/sbin/apachectl: 113: /usr/sbin/apachectl: www-browser: not found
'www-browser -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars

Um den Fehler zu beheben, müssen wir noch ein Text-Browser installieren.

sudo apt install w3m

Systemd DNS Resolver

Wenn die Namensauflösung mit Systemd nicht richtig funktioniert, dann muss man vielleicht einen Resolver manuelle einrichten.

Zuerst legen wird das Verzeichnis an.

sudo mkdir /etc/systemd/resolved.conf.d/

Jetzt hinterlegen wird den DNS Resolver.

sudo vim /etc/systemd/resolved.conf.d/dns_servers.conf

[Resolve]
DNS=1.1.1.1 8.8.8.8
DNSSEC=true
DNSOverTLS=opportunistic

Nach einem Neustart von Systemd-resolver sollte die Namensauflösung wieder funktionieren.

sudo systemctl restart systemd-resolved

Spracheinstellung von Ubuntu und Debian auf Deutsch umstellen

Wir wollen die Sprache von Englisch auf Deutsch in Ubuntu oder Debian ändern.

Dazu installieren wird die Sprachen.

sudo apt purge locales

Wir können uns die aktuellen Einstellung ansehen.

locale -a

Sollte die Sprache „Deutsch“ mit UTF-8 nicht nicht erzeugt sein, so sollten wir es jetzt vornehmen.

sudo locale-gen de_DE.UTF-8

Die Einstellungen für die Sprache können wir mit einem grafischen Tool einfach ändern.

sudo dpkg-reconfigure locales

Nach der Umstellung sollten nur Einträg welche ausgewählt wurden in der Datei enthalten sein.

cat /etc/locale.gen

de_DE.UTF-8 UTF-8

Für unsere Umgebung müssen wir ggf. noch die Einstellungen hinterlegen.

sudo vim /etc/environment

LC_ALL=de_DE.UTF-8
LANG=de_DE.UTF-8

Nach dem Update sollten alle Einstellung wie Datum und Währung und Sprache auf Deutsch umgestellt sein.

sudo update-locale

Diese Anleitung funktioniert mit Debian und Ubuntu.

Apache mit http/2 auf Ubuntu Server 18.04

Durch die Verwendung von HTTP/2 wird die Verbindung bei SSL/TSL Verbindungen stark beschleudingt. Wir müssen den Apache2 für die Verwendung von HTTP/2 umstellen.

Hinweis: Das Modul mod_php verwendet das Prozessmodul mpm_prefork. Um das Protokoll HTTP/2 zu verwenden, müssen wir auf das Prozessmodul mpm_event mit FastCGI umstellen.

Die Installation von Apache2 und PHP7.2 erfolgt unter Ubuntu 18.04 wie folgt.

sudo apt install apache2 php7.2

Nach der Installation läuft der Apache mit Prefork als Prozessmodul. Für HTTP/2 brauchen wir das Prozessmodul Event.

Zuerst deaktivieren wir MPM Prefork und das Modul von PHP.

sudo a2dismod php7.2
sudo a2dismod mpm_prefork

Jetzt aktivieren das MPM Event Prozessmodul mit FastCGI.

sudo a2enmod mpm_event proxy_fcgi setenvif

Wir möchten PHP mit FastCGI verwenden und installier es jetzt.

sudo apt install php7.2-fpm
sudo a2enconf php7.2-fpm

PHP läuft als extra Dienst, welche wir aktivieren und starten.

sudo systemctl start php7.2-fpm
sudo systemctl enable php7.2-fpm

Nach dem Neustart von Apache sollte PHP wieder laufen.

sudo systemctl restart apache2

Für HTTP/2 aktivieren wir das Modul.

sudo a2enmod http2

Damit unsere Webseite das Protokoll HTTP/2 verwendet, müssen wir es in der Konfiguration hinterlegen.

sudo vim /etc/apache2/sites-enabled/your-host-ssl.conf

<VirtualHost *:443>
 Protocols h2 http/1.1
 SSLEngine On
 ...

Nach einem Neustart von Apache sollte das Protokoll HTTP/2 funktionieren.

sudo systemctl restart apache2

Den Funktionstest kann man mit dem Curl Tool durchführen. Hier am Beispiel von Google.

curl -k -v --http2 https://www.google.com/

Sollte es zu Problemen mit der Anzahl der Theads kommen, kann man die Anzahl begrenzen.

sudo vim /etc/apache2/mods-enabled/http2.load

H2MinWorkers 1
H2MaxWorkers 1

Das Protokoll HTTP/2 ermöglich auch das Vorrausladen (Preload) von Inhalten. Hier ein Beispiel für WordPress als Header.

Header add Link "</wp-content/themes/twentyseventeen/style.css>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery.js>;rel=preload"
Header add Link "</wp-includes/js/jquery/jquery-migrate.min.js>;rel=preload"
Header add Link "</wp-includes/js/wp-embed.min.js>;rel=preload"

Raspbian (Exim4) Konfiguration für SMTP Relay

In dem Raspbian Image ist Exim4 enthalten und muss für den Versand noch konfiguriert werden.

sudo dpkg-reconfigure exim4-config

Die Einstellung erfolgen Grafisch. Hier die Vorgaben für einem SMTP Relay (192.168.10.123) ohne Authentifizierung.

„Versand über Sendezentrale (Smarthost); keine lokale E-Mail-Zustellung“

E-Mail-Name des Systems: raspberrypi

IP-Adressen, an denen eingehende SMTP-Verbindungen erwartet werden: 127.0.0.1 ; ::1

Weitere Ziele, für die E-Mails angenommen werden sollen: raspberrypi

Sichtbarer Domänenname für lokale Benutzer: domain.com

IP-Adresse oder Rechnername der Sendezentrale für ausgehende E-Mails: 192.168.10.123

DNS-Anfragen minimieren (Automatische Einwahl, Dial-on-Demand)? Nein

Einstellungen auf kleine Dateien aufteilen? Nein

Empfänger der E-Mails an die Benutzer root und postmaster: pi

Jetzt ist der Versand per Mail möglich.

PowerDNS als Secondary DNS mit SQLite

Wir möchten einen Secondary DNS auf Basis von PowerDNS und SQLite als Backend installieren. Wir verwenden Ubuntu Server 18.04 (bionic) mit PowerDNS 4.1 aus dem Repository.

Die Installation ist sehr einfach. Die Abhängigkeiten werden automatisch mit installiert.

sudo apt install pdns-backend-sqlite3

Bei der Einrichtung antworten wir mit „YES“. Damit wird die Einrichtung zu 90% durchgeführt. Wer die Frage mit „NO“ beantwortet muss selber Hand anlegen. Weitere Informationen am Ende von dem Artikel.

Der Start von dem Dienst „PDNS“ ist fehlgeschlagen.

Systemd enthält einen DNS Resolver für die Namensauflösung. Der Dienst läuft auch auf Port 53 und auf der IP Adresse 127.0.0.1.

Deshalb müssten wir PowerDNS auf die richtig IP Adresse des Server legen und nicht auf alle IP Adessen (0.0.0.0).

sudo vim /etc/powerdns/pdns.d/pdns.local.conf

local-address=123.123.123.123
local-ipv6=2a0:1:2:3:ff::1
local-port=53
version-string=anonymous
 
master=no
slave=yes
 
disable-axfr=yes
disable-tcp=no
slave-cycle-interval=60

Nach der Änderung sollten die Dienste PowerDNS und Resolver ohne Fehler starten.

sudo systemctl restart systemd-resolved pdns

Die Tabellen von PowerDNS wurden mit der Installation automatisch angelegt. Jetzt müssen noch weitere Einstellung hinterlegt werden.

Für den Primary DNS wird in der Tabelle „supermasters“ der Hostname und die IP Adresse von dem Haupserver eingetragen.

sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 "insert into supermasters values ('123.123.123.123', 'ns1.domain.com', 'admin');"

Sollten Sie bei der Einrichtung die Frage mit „NO“ beantwortet haben, fehlt die Tabelle. Dann müssen Sie die Datenbank selbst anlegen.

wget -O /tmp/schema.sqlite3.sql https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsqlite3backend/schema.sqlite3.sql
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 < /tmp/schema.sqlite3.sql

Der Import ist auch mit der Command Line Shell so möglich.

sudo sqlite3 /var/lib/powerdns/pdns.sqlite3
.read schema.sqlite3.sql
.quit

Die Datenbank braucht auch die richtig Rechte.

sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3

Die Datenbank muß manuell für das PowerDNS Backend konfiguriert werden.

sudo vim /etc/powerdns/pdns.d/pdns.local.gsqlite3.conf

launch+=gsqlite3
 
# Database location
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
gsqlite3-dnssec=on

Hier noch einige Hinweise zur Fehlersuche.

Sollte es nicht auf Anhieb funktionieren, kann man PowerDNS aus als Anwendung starten und sieht auf der Konsole die Fehlermeldungen.

sudo /usr/sbin/pdns_server

Mit dem Tool „dig“ kann man die Funktion und Erreichbarkeit des Primary und Secondary DNS überprüfen.

dig @ns2.domain.com meinname.info AXFR

Quellen: Powerdns Backend Sqlite

Ubuntu Desktop 18.04 mit xRDP und Sound

In Ubuntu 18.04 ist die xRDP Version 0.9.5 enthalten. Mit dieser Version ist es möglich auch Sound per RDP zu übertragen.

Als Desktop wird bei mir Ubuntu Mate verwendet. Natürlich können Sie auch andere Manager verwenden, aber Wayland ist zur Zeit noch nicht möglich.

Die Installation von XRDP erfolgt mit APT.

sudo apt install xrdp xorgxrdp xrdp-pulseaudio-installer

Für die Wiedergabe des Sound wird Plusaudio verwendet. Leider muss man für XRDP zwei Module selbst compilieren. Dafür brauchen wir die Quellen von Pulseaudio aus dem Archiv.

cd /tmp
apt source pulseaudio
cd pulseaudio-11.1
./configure

Nach erfolgreichem Kompilieren von Pulseaudio, kann man die XRDP Module für Pulseaudio kompilieren und installieren. Das Ubuntu Paket xrdp-pulseaudio-installer enthält die Quellen von
Github.

cd /usr/src/xrdp-pulseaudio-installer/
sudo make PULSE_DIR="/tmp/pulseaudio-11.1"
sudo install -s -m 644 module-xrdp-sink.so /usr/lib/pulse-11.1/modules
sudo install -s -m 644 module-xrdp-source.so /usr/lib/pulse-11.1/modules

Ein wichtiger Hinweis befand sich auf Github. Scheinbar funktioniert die Soundausgabe nur, wenn das Host-System eine reale Soundkarte verbaut hat. Server oder virtuelle Umgebung haben eigentlich keine Soundkarte On-Board. Ohne Soundkarte scheitert aber die Wiedergabe mit Pulseaudio und damit auch die Weiterleitung zum Client per RDP Verbindung.

Weitere Anleitungen:
How to set up audio redirection
Audio Output Virtual Channel-support in XRDP

Microsoft SQL Server 2017 in Docker

In diesem Artikel geht es um den neuen Microsoft SQL Server 2017 Linux für Docker.

Natürlich kann man auch MS SQL 2017 direkt unter Ubuntu installieren. Microsoft stellt dafür die Pakete und Docker Images auf dem Docker HUB bereit.

Als minimale Vorraussetzung wird auf der Festplatten rund 4GB Speicherplatz und 4GB RAM benötigt. Eine laufende Docker Installation setzten wir vorraus.

In den allgemeinen Docker Image von Microsoft sind unterschiedliche SQL Editionen verein. Über einen Docker Parameter wird die jeweilige Edition gesetzt.

SQL Developer edition -> MSSQL_PID=Express
SQL Express edition -> MSSQL_PID=Developer

Mit „docker pull“ starten wir den Download von dem Microsoft SQL Server 2017 vom Docker Hub. Im Anschluss erzeugen wir mit „docker run“ eine laufende SQL Express Instanz am Netzwerkport 1433. Unsere Datenbank soll nicht im Docker Container gespeichert werden, sondern im Verzeichnis /my/data/. Das erleichter spätere Updates vom Container. Das Kennword für den Benutzer „SA“ kann natürlich individuell gestalltet werden.

sudo docker pull microsoft/mssql-server-linux
sudo docker run --name mssql1 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=KennW@rt1' -e 'MSSQL_PID=Express' -p 1433:1433 -v /my/data:/var/opt/mssql/data -d microsoft/mssql-server-linux:2017-latest
sudo docker ps -a

Damit ist die Installation schon abgeschlossen. Jetzt können wir uns per Kommandozeile auf die Datenbank verbinden.

sudo docker exec -it mssql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'KennW@rt1'

Als Beispiel erzeugen wir die Datenbank „TestDB“ mit der Tabelle „Inventory“ und zwei Datensätzen. Per SQL Kommando kann man auch das Kennwort von Benutzer „SA“ ändern.

CREATE DATABASE TestDB
GO
USE TestDB
CREATE TABLE Inventory(ID INT, Name NVARCHAR(50), Quantity INT)
GO
INSERT INTO Inventory VALUES (1, 'banana', 25);
INSERT INTO Inventory VALUES (2, 'orange', 14);
SELECT * FROM Inventory WHERE quantity > 15;
GO
ALTER LOGIN SA WITH PASSWORD='Neues!Kennwort'
GO
QUIT

Microsoft stellt das SQL Server Management Studio Version 17 für Windows als grafisches Tool bereit. Die IDE ist sehr Umfangreich und setzt viele Resourcen vorraus.

Eine alternative IDE stellt HeidiSQL dar.

USB Festplatte in Standby versetzen

Aufgabe ist es die Lebenszeit einer externen Festplatte zu verlängern, indem wir Sie nach einiger Zeit runter fahren.

Dazu brauchen wir das HDParm Tool, mit dem wir die Werte in der Festplatte setzen können. Ist HDParm noch installiert, so machen wir jetzt.

sudo apt install hdparm

Jetzt können wir die Festplatte sofort in Standby setzt.

sudo hdparm -y /dev/sda

Soll die Festplatte automatisch nach 50 Sekunden runter fahren, können wir den Parameterwert -S 10 setzen (10 * 5 Sekunden = 50 Sekunden). Möglich Werte sind von 1 bis 240. Die Einstellung sind nicht statisch und müssen nach einem Neustart wieder gesetzt werden.

sudo hdparm -S 10 /dev/sda

Wir können den Status der Festplatte prüfen.

sudo hdparm -C /dev/sda

Mit einer UDev-Regel können wir die Werte für die USB Festplatte nach dem Anstecken automatisch setzen.

sudo vim /etc/udev/rules.d/50-hdparm.rules

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 120 /dev/%k"

Der Parameter -B 127 aktiviert das Energiemanagement der Festplatte. Der Parameter -S setzt den Timeout-Wert von 10 Minuten (120*5 Sekunden).

Die UDev-Regeln müssen neu geladen werden.

sudo udevadm control --reload-rules
sudo udevadm trigger