Nginx unter macOS mittels Homebrew installieren und nutzen

Nginx wird für gewöhnlich unter Linux genutzt. Für Entwicklungszwecke kann es interessant sein Nginx unter macOS zu betreiben. Zur Installation von Nginx wird Homebrew benötigt. Homebrew ist ein Paketmanager für macOS, mit welchem viele Open-Source-Projekte unter macOS installiert werden können. Ist Homebrew installiert kann Nginx auf dem Terminal mittels:

brew install nginx

installiert werden. Standardmäßig läuft Nginx bei der Installation über Homebrew auf dem Port 8080. Hintergrund ist das der Webserver somit ohne root-Rechte bzw. ohne sudo genutzt werden kann. Wird der Port auf 80 oder generell auf einen Port kleiner 1024 gestellt, werden wieder entsprechende administrative Rechte benötigt. Soll der verwendete Port geändert werden, muss die Konfigurationsdatei angepasst werden:

nano /usr/local/etc/nginx/nginx.conf

In dieser findet sich folgender Block:

server {
  listen       8080;
  server_name  localhost;

Dort kann anschließend der Port geändert werden. Neben dem Port kann dort die Default-Location geändert werden. Dazu wird der server-Block bzw. dessen Unterblock, der location-Block angepasst:

location / {
  root /Users/seeseekey/Web;
  autoindex on;

Die root-Direktive gibt den Pfad an, welcher über den Webserver ausgeliefert wird. Die Option autoindex sorgt für das entsprechende Directory-Listing, was für Entwicklungszwecke nützlich sein kann. Gestartet und gestoppt werden kann der Service mittels:

brew services start nginx

bzw.

brew services stop nginx

Natürlich kann dies mittels restart in einem Rutsch erledigt werden:

brew services restart nginx

Anschließend kann Nginx mit der veränderten Konfiguration genutzt werden.

Durchsuchen der Bash-History

Bei der Nutzung der Bourne-again shell, kurz Bash, wird über die eingegebenen Kommandos Buch geführt. Dies ermöglicht es auf Befehle zurückzugreifen, welche bereits eingeben wurde. Auf die History kann mit den Cursor-Tasten Hoch und Runter zugegriffen werden.

Diese Vorgehensweise ist natürlich nur solange praktisch, wenn der gesuchte Befehl in letzter Zeit eingegeben wurde. Gespeichert wird die History im Home-Verzeichnis des jeweiligen Nutzers in einer Datei mit dem Namen .bash_history. Nun könnte der geneigte Nutzer auf die Idee kommen diese Datei einfach nach dem gesuchten Befehl zu durchforsten:

cat .bash_history | grep "befehl123"

Einfacher ist es allerdings auf die eingebaute Suchfunktion der Bash zurückzugreifen. Aktiviert wird diese mittels der Tastenkombination Strg + R. Danach kann der Suchbegriff eingeben werden und dem Nutzer werden Vorschläge aus der Bash-History angezeigt. Sagt einer dieser Vorschläge zu, kann er mit einem Druck auf die Enter-Taste bestätigt werden. Abgebrochen werden kann die Suche mittels der Tastenkombination Strg + C.

WebDAV unter Nginx einrichten

Der freie Webserver Nginx beherrscht nicht nur das gewöhnliche Ausliefern von Daten über HTTP und HTTPS, sondern verfügt daneben über weitere Module. Mit einem dieser Module kann WebDAV für eine Ressource bereitgestellt werden. Dazu muss die Konfiguration der jeweiligen Seite unter /etc/nginx/sites-available/ angepasst werden. In diesem Beispiel wäre dies:

nano /etc/nginx/sites-available/example

Zur dieser Konfigurationsdatei wird folgende Konfiguration hinzugefügt:

server {
        listen   443 ssl;
        listen [::]:443 ssl;

        ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem;

        root /var/www/example;

        server_name example.org;

        location / {
                dav_methods     PUT DELETE MKCOL COPY MOVE;
                dav_ext_methods   PROPFIND OPTIONS;
                dav_access    user:rw group:rw all:rw;

                autoindex     on;
        }
}

In diesem Fall wird für die Domain example.org die WebDAV-Unterstützung aktiviert. Dateien können hierbei ohne weitere Authentifizierung herunter- und hochgeladen werden. Soll WebDAV abgesichert werden, so geschieht das über den Basic authentication. Dazu wird dem location-Part folgendes hinzugefügt:

auth_basic "restricted";
auth_basic_user_file /var/www/example/.htpasswd;

Die .htpasswd-Datei kann mit dem Tool htpasswd erstellt werden:

htpasswd -c .htpasswd nutzer1

Bei der Nutzung wird das gewünschte Passwort erfragt. Soll ein weiterer Nutzer hinzugefügt werden, so muss der Parameter -c entfernt werden:

htpasswd .htpasswd nutzer2

Anschließend wird die Konfiguration von Nginx mittels:

service nginx reload

aktualisiert. Danach kann WebDAV für die Ressource verwendet werden.

Speedtest unter Ubuntu auf der Konsole

Für den Test der Geschwindigkeit der eigenen Anbindung an das Internet, gibt es seit Jahren den Speedtest von Ookla. Dieser kann nicht nur im Browser, sondern auch in der Konsole unter Ubuntu genutzt werden. Nach der Installation mittels:

apt install speedtest-cli

kann der Dienst über die Kommandozeile genutzt werden:

speedtest-cli

Anschließend startet der Test der Anbindung und das entsprechende Ergebnis wird dargestellt:

Retrieving speedtest.net configuration…
Testing from Deutsche Telekom (XXX.XXX.XXX.XXX)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by SMSnet (Szczecin) [85.48 km]: 24.498 ms
Testing download speed……………………………………………………………………..
Download: 160.21 Mbit/s
Testing upload speed…………………………………………………………………………………………
Upload: 121.56 Mbit/s

Im Gegensatz zur Webseite kommt die Version für die Kommandozeile ohne Werbung aus. Das Projekt für die Kommandzeilen-Version befindet sich auf GitHub. Es ist unter der Apache-Lizenz in Version 2 lizenziert und somit freie Software.

sudo mit anderem Nutzer durchführen

Wenn ein Kommando auf der Linux-Konsole mit vorangestellten sudo ausgeführt wird, wie z.B.

sudo apt install mc

wird das Kommando in Normalfall mit den Rechten und im Kontext des Nutzers root ausgeführt. Manchmal soll eine solche Operation jedoch mit einem anderen Nutzer durchgeführt werden. Dazu dient die sudo-Option -u:

sudo -u www-data crontab -e

Nach der Option muss der Nutzer angegeben werden, in dessen Kontext gewechselt werden soll. In diesem Beispiel würde die Crontab-Datei des Nutzers www-data geöffnet.