Automatisierte WordPress-Installation mit dem Script „wpnew“
Warum ich dieses Script entwickelt habe und wie es funktioniert
Wer regelmäßig WordPress-Webseiten für Kunden aufsetzt, kennt das Problem: Die Installationsschritte wiederholen sich jedes Mal. WordPress herunterladen, Datenbank verbinden, Grundeinstellungen setzen, Permalinks konfigurieren, Suchmaschinen blockieren, Plugins installieren, Seiten anlegen – all das kostet Zeit und birgt Fehlerquellen.
Um diesen Prozess zu standardisieren und zu beschleunigen, habe ich ein eigenes Installations-Script entwickelt.
Dieses Script „wpnew“ automatisiert die vollständige Einrichtung einer neuen WordPress-Installation innerhalb eines Unterordners meiner Projekt-Domain. Gleichzeitig bleibt jede Installation eigenständig und problemlos umziehbar.
Dieser Artikel dokumentiert ausführlich:
- Was das Script macht
- Warum es entwickelt wurde
- Wie es eingesetzt wird
- Wie es bearbeitet werden kann
- Wo es gespeichert ist
- Welche Server-Voraussetzungen gelten
Ohne sensible Daten offenzulegen.
Grundstruktur des Server-Setups
Die Projekte laufen in folgender Struktur:
/home/halloentwurf/htdocs/halloentwurf.de/
│
├── kunde-1/
├── kunde-2/
├── kunde-3/
├── wp-premium-plugins/
Jede Kundeninstallation:
- liegt in einem eigenen Unterordner
- besitzt eine eigene Datenbank
- ist vollständig unabhängig von anderen Installationen
Zusätzlich existiert ein zentraler Ordner für Premium-Plugins:
wp-premium-plugins
Alle ZIP-Dateien in diesem Ordner können automatisch installiert werden.
Das Script selbst liegt nicht im Webverzeichnis, sondern außerhalb des öffentlichen Bereichs, im Benutzerverzeichnis.
Speicherort des ScriptsDas Script befindet sich hier:
/home/pierrehansen/scripts/wpnew.sh
Es liegt bewusst außerhalb des Webroots, damit es nicht öffentlich erreichbar ist.
Was das Script „wpnew“ im Detail macht
1. Übergabe des Projekt-Namens
Das Script wird mit einem Parameter gestartet:
wpnew kunde-1
Der Parameter definiert:
- den Ordnernamen
- die Installations-URL
- den Seitentitel
Beispiel:
https://halloentwurf.de/kunde-1
2. Abfrage der Datenbank-Daten
Die Datenbank wird vorab manuell im Hostingpanel erstellt.
Das Script fragt interaktiv:
- Datenbankname
- Datenbankbenutzer
- Passwort
- Host
Dadurch wird vermieden, dass das Script automatische Root-Zugriffe benötigt oder gefährliche DB-Operationen ausführt.
3. Download von WordPress
WordPress wird per WP-CLI geladen:
wp core download --locale=de_DE
Es wird standardmäßig die deutsche Version installiert.
4. Erstellung der wp-config.php
Die Konfigurationsdatei wird automatisch generiert:
wp config create
Wichtig:
Es werden keine festen Domain-Konstanten wie WP_HOME oder WP_SITEURL gesetzt. Dadurch bleibt die Installation vollständig umziehbar.
5. Prüfung bestehender Datenbank-Tabellen
Falls in der gewählten Datenbank bereits Tabellen existieren, fragt das Script:
- Abbrechen
- Datenbank zurücksetzen
Bei Zustimmung wird ausgeführt:
wp db reset --yes
So wird verhindert, dass bestehende Inhalte unbeabsichtigt überschrieben werden.
6. Installation von WordPress
Die Installation erfolgt mit:
wp core install
Dabei werden automatisch gesetzt:
- URL (inkl. Unterordner)
- Seitentitel
- Admin-Benutzer
- generiertes sicheres Passwort
- Admin-Mailadresse
7. Grundkonfiguration nach Installation
Automatisch werden folgende Einstellungen gesetzt:
Suchmaschinen blockieren
blog_public = 0
Damit ist jede neue Seite zunächst nicht indexierbar.
Zeitzone
Europe/Berlin
Permalink-Struktur
/%postname%/
Kommentare deaktivieren
Standard-Kommentarfunktion wird ausgeschaltet.
Rewrite-Regeln neu generieren
wp rewrite flush
8. Automatische Seitenerstellung
Das Script legt an:
- Startseite „Home“
- Seite „Rechtliches“
- Unterseiten „Impressum“ und „Datenschutz“
Die Home-Seite wird automatisch als statische Startseite gesetzt.
Die Datenschutz-Seite wird zusätzlich als offizielle Datenschutz-Seite in WordPress registriert.
9. Installation von Plugins
Offizielle Repository-Plugins
Automatisch installiert werden:
- Yoast SEO
- Disable Comments
- SVG Support
- Kadence Blocks
- Duplicate Post
- All in One WP Security
Premium-Plugins
Alle ZIP-Dateien im Ordner:
/home/halloentwurf/htdocs/halloentwurf.de/wp-premium-plugins
werden automatisch installiert.
Das Script durchsucht diesen Ordner rekursiv und installiert jede ZIP-Datei per WP-CLI.
10. Aktivierungsoptionen
Am Ende kann entschieden werden:
- Alle Plugins aktivieren
- Nur Basis-Plugins aktivieren
- Einzelne Plugins auswählen
- Keine Plugins aktivieren
Server-Voraussetzung für Unterordner-WordPress
Damit WordPress in Unterordnern funktioniert, muss im Nginx-Vhost eine spezielle Routing-Regel vorhanden sein.
Im 8080-Block (Backend) ist folgende Struktur notwendig:
location ~* ^/([a-z0-9-]+)/ {
try_files $uri $uri/ /$1/index.php?$args;
}
Diese Regel sorgt dafür, dass Anfragen wie:
/kunde-1/wp-json/
/kunde-1/wp-admin/
/kunde-1/beispiel-seite/
korrekt an:
/kunde-1/index.php
weitergeleitet werden.
Ohne diese Regel würde WordPress keine gültige JSON-Antwort liefern und der Block-Editor würde Fehlermeldungen anzeigen.
Diese Konfiguration betrifft ausschließlich den Server und hat keinen Einfluss auf die spätere Umziehbarkeit der Seite.
Wie bearbeite ich das Script?
Öffnen
nano ~/scripts/wpnew.sh
Speichern
CTRL + O
Enter
Schließen
CTRL + X
Ausführbar machen
Nach Änderungen unbedingt:
chmod +x ~/scripts/wpnew.sh
Wie führe ich das Script aus?
Wenn ein Alias gesetzt ist:
wpnew kunde-1
Alternativ direkt:
~/scripts/wpnew.sh kunde-1
Kann ich diese Installationen später umziehen?
Ja.
Da keine festen Domain-Konstanten gesetzt werden, sind die Installationen vollständig migrationsfähig.
Mögliche Methoden:
- Duplicator
- All-in-One Migration
- Manuelles Kopieren + Search & Replace
- WP-CLI
Nach einem Domain-Umzug sollte ggf. ausgeführt werden:
wp search-replace alte-url neue-url --skip-columns=guid
wp rewrite flush
Es existieren keine scriptbedingten Abhängigkeiten, die einen Umzug verhindern.
Sicherheitsaspekte
- Keine Zugangsdaten im Script gespeichert
- Datenbank-Zugangsdaten werden interaktiv abgefragt
- Script liegt außerhalb des Webroots
- Keine sensiblen Informationen werden persistiert
Warum dieses Script langfristig sinnvoll ist
Dieses Script sorgt für:
- Standardisierte Projektstruktur
- Zeitersparnis
- Minimierung von Fehlerquellen
- Saubere Server-Integration
- Reproduzierbare Installationen
- Professionelles Deployment
Statt jedes Projekt manuell zu konfigurieren, existiert ein klar definierter technischer Ablauf.
Wartung und Weiterentwicklung
Wenn das Script erweitert werden soll:
- Neue Plugins → Plugin-Bereich anpassen
- Neue Standardseiten → Seiten-Block erweitern
- Andere Grundeinstellungen → Options-Bereich ändern
- Sicherheitsanpassungen → entsprechende WP-CLI-Befehle ergänzen
Nach jeder Änderung:
chmod +x ~/scripts/wpnew.sh
Fazit
Das Script „wpnew“ ist mein internes Deployment-Werkzeug für neue WordPress-Projekte im Unterordner-Setup.
Es automatisiert:
- Installation
- Konfiguration
- Seitenstruktur
- Plugin-Setup
- Sicherheitsgrundlagen
Und sorgt dafür, dass jedes neue Projekt technisch konsistent, sauber und schnell einsatzbereit ist.
Gleichzeitig bleibt jede Installation vollständig unabhängig und jederzeit problemlos umziehbar.