CGI mit NGINX unter CentOS7

12 Nov 2019 Lesezeit: 3 Minuten

CGI ist nicht tot zu bekommen. Warum auch? Ist es doch eine (für den Admin) coole Lösung um mal fix ein BASH Skript zu schreiben und dieses durch eine URL angetriggert auszuführen.

Leider läuft das ganze nicht out-of-the-Box, daher müssen folgende Dinge auf einem CentOS System passieren, damit es funktioniert:

yum install -y fcgiwrap.x86_64 spawn-fcgi

damit haben wir dann schon die Grundlage geschaffen.

  • fcgiwrap ist das tool der Wahl und die als Wrapper für unsere Skripts
  • spawn-fcgi dient uns damit, das es fcgiwrap für uns als deamon startet

Nun müssen wir noch spawn-fcgi konfigurieren, damit es später mit unserem NGINX zusammenspielt:

cat << EOF > /etc/sysconfig/spawn-fcgi
FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/sbin/fcgiwrap
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS="-M 0777"
OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"
EOF

damit legen wir nach dem Start einen unix socket für die Kommunikatio unter /var/run/fcgiwrap.socket an und übergeben die Rechte an NGINX.

Nun machen wir uns noch ein Skriptverzeichnis:

mkdir -p -m 770 /var/www/cgi-bin
chown -vR nginx:nginx /var/www/cgi-bin

und natürlich müssen wir unserem NGINX beibringen mit dem Dienst zu reden - dazu nutzen wir eine location directive:

  location / {
    root /var/www/cgi-bin;
    fastcgi_intercept_errors on;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;
  }

im Anschluss müssen wir unsere Dienste noch aktualisieren:

systemctl enable spawn-fcgi
systemctl start spawn-fcgi
systemctl restart nginx

von nun an sollten wir in der Lage sein Skripte unter /var/www/cgi-bin über den Aufruf innerhalb der URL anzusprechen und zur Ausführung zu bewegen. Ein Skript sollte übrigens in etwa so beginnen:

#!/bin/bash

echo "Content-type: text/html"
echo ""

echo "<html>"
echo "<head>"
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"
echo "<title>Bash CGI script</title>"
echo "</head>"
echo "<body>"
echo ""
echo ""
echo ""
echo "</body>"
echo "</html>"

Fedora Upgrade from 30 to 31

11 Nov 2019 Lesezeit: ~1 Minute

Same as everytime... works for me very fine :)

sudo dnf upgrade -y
sudo dnf upgrade --refresh
sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=31
sudo dnf system-upgrade reboot

Quellen und Links


CentOS mit LDAP Authentifizierung

11 Okt 2019 Lesezeit: 2 Minuten

Hin und wieder macht es ja durchaus Sinn einen zentralen Directory-Service zu nutzen. So zum Beispiel, wenn man mehrere Benutzer hat, und keine Lust versprürt alles doppelt und dreifach zu verwalten.

In meinem Fall ist es OpenLDAP (was übrigens neben dem hässlichen Entlein auch ne ziemlich geile Sau ist und deutlich verkannt wird).

Nachdem PAM Authentifzierung für einen SFTP Server auf einem Debian ziemlich eckelig einzurichten war, habe ich mich gefreut, dass es bei meiner bevorzugten Linux Distribution (CentOS) dann doch wesentlich angenehmer geht. Wer es also einfach haben will, der folgt der Anleitung in Quellen und Links. In meinem Fall reichte es schon das Kommando:

authconfig --updateall --enableldap --enableldapauth

Auszuführen.

Bemerkung: das ging natürlich nur, weil ich die anderen Schritte schon ausgeführt hatte. Memo an mich selbst:

yum install nss-pam-ldapd openssl nscd

#edit /etc/nslcd.conf
vi /etc/nslcd.conf

# enable authconfig things+
authconfig --updateall --enableldap --enableldapauth

# enable and start services
systemctl enable nslcd
systemctl restart nslcd

Quellen und Links