Zum Inhalt springen

rudblog

rudblog: Erfahrungen aus meinem IT-Alltag

Plesk mit SSH bedienen

Laptop mit Plesk-Oberfläche und Terminalfenster

Plesk ist ein webbasiertes Hosting-Control-Panel, das als Verwaltungsschicht zwischen Betriebssystem und Hosting-Diensten fungiert.

Über das Plesk-CLI-Tool können nahezu alle Funktionen der Weboberfläche auch per SSH gesteuert werden - von Domain- und Benutzerverwaltung über Datenbanken bis hin zu Sicherheit, Backups und Automatisierung.

Diese Website dokumentiert die Nutzung von Plesk über die Kommandozeile und richtet sich an Administratoren, die servernah arbeiten möchten.

Vollständige Dokumentation : Plesk CLI commands

Plesk: notwendige Informationen

Für den Kunden sind folgende Informationen notwendig: E-Mail-Adresse, Kundenname und erste Domain.

EMAIL="user@domain.invalid"
CUSTOMER_NAME="Max Mustermann"
DOMAIN="domain.invalid"

Kunde anlegen im Terminal

Ich erzeuge den Nutzernamen als websichere Version des Kundennamens und ein dynamisches Passwort. Dafür muss das Paket pwgen installiert sein.

CUSTOMER_ID=$(echo "{$CUSTOMER_NAME}" | iconv -f UTF-8 -t ASCII//TRANSLIT | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '_' | sed 's/^_//; s/_$//')
CUSTUMER_PW=$(pwgen -s 16)

plesk bin customer --create "${CUSTOMER_ID}" \
  -email "${EMAIL}" \
  -passwd "${CUSTUMER_PW}" \
  -name "${CUSTOMER_NAME}"

⚠ Vollständige Dokumentation: Plesk CLI customer command

Kunden einen Subscription zuordnen

Nun existiert zwar der Kunde, er kann sein Hosting aber noch nicht nutzen. Hierfür muss noch eine Subscription angelegt werden. Um einem Kunden die vereinbarten Leistungen im Plesk zuzuordnen, muss dieser noch ein Serviceplan zugeordnet werden. Ich nutze den Serviceplan Default Domain.

Umlautdomains werden besser als Puny-Code Version angelegt. Hierfür muss das Paket idn2 installiert sein. Ich selbst nutze eine geteilte IP im Plesk. Diese wird über die Datenbank ermittelt.

Zusätzlich vergebe ich für die Subscription noch die Zugangsdaten für den System-Nutzer.

PUNYDOMAIN=$(idn2 --quiet "${DOMAIN}")
IP=$(plesk db -Ne "SELECT ip_address FROM IP_Addresses WHERE main='true' LIMIT 1;")
SYS_USER_ID=$(echo -n "${PUNYDOMAIN}"; echo -n "_"; pwgen -A -0 -s 8)
SYS_USER_PW=$(pwgen -s 16)

plesk bin subscription --create "${DOMAIN}" \
  -owner "${CUSTOMER_ID}" \
  -service-plan "Default Domain" \
  -ip "${IP}" \
  -login "${SYS_USER_ID}" \
  -passwd "${SYS_USER_PW}"

⚠ Vollständige Dokumentation: Plesk CLI subscription command

Ausgabe aller Daten für den Kunden und die Subscription

Die zum Teil generierten Daten werden im Terminal ausgegeben, um diese gesammelt an einem sicheren Platz abzuspeichern.

clear;
echo "Kunde: ${CUSTOMER_NAME} - E-Mail: ${EMAIL}"
echo "Domain: ${DOMAIN} ($PUNYDOMAIN) - IP: ${IP}"
echo "Zugang Plesk: ${CUSTOMER_ID} // ${CUSTUMER_PW}"
echo "Zugang Server: ${SYS_USER_ID} // ${SYS_USER_PW}"

Zusätzliche Domain für einen Kunden anlegen

Nun kann man für die Subscription des Kunden eine zusätzliche Domain anlegen. Domains benötigen vielerlei Optionen. Im folgenden Liste ich diese auf:

ADD_DOMAIN="additional.invalid"

plesk bin site --create "${ADD_DOMAIN}" \
  -webspace-name "${DOMAIN}" \
  -dns false \
  -hosting true \
  -seo-redirect none \
  -php true \
  -mail_service true \
  -empty-document-root true

Wenn man nur eine Domain für einen Redirect einrichten will, so muss der Parameter -hst_type std genutzt werden. Für das Ziel des Redirects nutzt man dann den Parameter -target_url.

ADD_DOMAIN="additional.invalid"
RED_DOMAIN="redirect.invalid"

plesk bin site --create "${ADD_DOMAIN}" \
  -webspace-name "${DOMAIN}" \
  -dns false \
  -hst_type std \
  -target_url "${RED_DOMAIN}"

⚠ Vollständige Dokumentation: Plesk CLI site command

Subdomain innerhalb einer Domain anlegen

Innerhalb einer Domain benötigt man auch manchmal Subdomains, um verschiedene Services einer Domain voneinander zu trennen. Hierfür ist der Befehl plesk bin subdomain vorgesehen.

SUBDOMAIN="sub.domain.invalid"
DOMAIN="domain.invalid"

plesk bin subdomain --create "${SUBDOMAIN}" \
  -dns false \
  -domain "${DOMAIN}" \
  -www-root "${SUBDOMAIN}" \
  -hosting true \
  -seo-redirect none \
  -php true \
  -mail_service false \
  -empty-document-root true

E-Mail-Adresse als Weiterleitung anlegen

Nicht immer aber manchmal benötigt man für die angelegte Domain eine Mailweiterleitung. Diese kann sehr einfach angelegt werden.

LOCAL_PART="user"
DOMAIN="domain.invalid"
TARGET_MAIL="target@domain.invalid"

plesk bin mail --create "${LOCAL_PART}@${DOMAIN}" \
  -forwarding true \
  -forwarding-addresses add: "${TARGET_MAIL}"

⚠ Vollständige Dokumentation: Plesk CLI mail command

Datenbank innerhalb einer Domain anlegen

Für die meisten Applikationen innerhalb eines Webspaces benötigt man eine Datenbank.

Zunächst legt man die Datenbank in über den Befehl plesk bin database --create der richtigen Subscription (Parameter -domain) an. Danach muss der Datenbanknutzer in der gleichen Subscrition wie die Datenbank selbst mit dem Befehl plesk bin database --create-dbuser erstellt werden. Über den Befehl plesk bin database --update wird der Nutzer der Datenbank zugeordnet und mittels -set-acl localhost,127.0.0.1,::1 werden nur lokale Verbindungen zugelassen.

SUBSCRITPION_DOMAIN="domain.invalid"

DATABASE_NAME="databasename"
DATABASE_USER="${DATABASE_NAME}"
DATABASE_PW=$(pwgen -s 16)

plesk bin database --create "${DATABASE_NAME}" \
  -domain "${SUBSCRITPION_DOMAIN}" \
  -type mysql

plesk bin database --create-dbuser "${DATABASE_USER}" \
  -passwd "${DATABASE_PW}" \
  -domain ${SUBSCRITPION_DOMAIN} \
  -server localhost:3306 \
  -database "${DATABASE_NAME}"

plesk bin database --update "${DATABASE_NAME}" \
  -update_user "${DATABASE_USER}" \
  -set-acl localhost,127.0.0.1,::1

echo "Database ${DATABASE_NAME} // ${DATABASE_USER} // ${DATABASE_PW}"

Lets Encrypt Zertifikat installieren

DOMAIN="domain.invalid"
EMAIL="user@domain.invalid"

plesk bin extension --exec letsencrypt cli.php \
  -d "${DOMAIN}" \
  -d "www.${DOMAIN}" \
  -m "${EMAIL}"

Illustration zur Absicherung und Optimierung von Plesk per Kommandozeile Zum nächsten Artikel "Plesk besser machen mit einfachen Mitteln"
Laptop mit einer Fehlermeldung im Terminal Zum vorherigen Artikel "Ubuntu Phased Updates"

Zurück zur Startseite