Eigene CLI-Skripte für lokale WordPress-Projekte

🧱 Einleitung

Irgendwann kommt man als Webentwickler an den Punkt, an dem man immer wieder das Gleiche macht:

  • Verzeichnis anlegen
  • Apache konfigurieren
  • /etc/hosts anpassen
  • Datenbank erstellen
  • WordPress installieren

Am Anfang geht das noch.
Später wird es einfach nur nervig.

Ich habe mir deshalb eigene CLI-Skripte gebaut, um genau diese Schritte zu automatisieren.


🧠 Ziel

Ein einziger Befehl:

createProject --name meinprojekt

👉 und alles ist fertig:

  • meinprojekt.local erreichbar
  • Apache konfiguriert
  • Datenbank angelegt
  • WordPress installiert

🧱 Struktur der Skripte

Ich habe mich bewusst für kleine, modulare Skripte entschieden:

createProject
├── generate_credentials.sh
├── create_database.sh
├── create_vhost.sh
├── update_hosts.sh
└── install_wordpress.sh

🔑 Zentrale Idee: .env als gemeinsame Basis

Ein Problem bei mehreren Skripten ist:

Wie teile ich Daten zwischen ihnen?

Meine Lösung: eine .env Datei. Dies habe ich im Beitrag Eigene CLI-Skripte für lokale WordPress-Projekte ausführlich beschrieben.


Beispiel .env

DB_NAME=meinprojekt
DB_USER=meinprojekt
DB_PASSWORD=supergeheim

👉 Diese Datei wird einmal erzeugt und dann von den relevanten Skripten genutzt.


⚙️ Credentials automatisch erzeugen

Statt Passwörter manuell zu vergeben, generiere ich sie automatisch:

if command -v pwgen >/dev/null 2>&1; then
DB_PASSWORD=$(pwgen -s 16 1)
else
DB_PASSWORD=$(openssl rand -base64 12)
fi

💡 Warum so?

  • kein hartcodiertes Passwort
  • kein manuelles Eingeben
  • funktioniert auf fast jedem System

🗄️ Datenbank erstellen

Die Datenbank wird über sudo mysql erstellt:

sudo mysql <<SQL
CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';
GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';
FLUSH PRIVILEGES;
SQL

💡 Vorteil

  • kein MySQL-Passwort im Skript
  • nutzt das Linux-Rechtesystem

🌐 Hosts-Datei automatisch anpassen

Statt Copy & Paste:

127.0.0.1 meinprojekt.local

macht das Script das automatisch:

echo "127.0.0.1 $DOMAIN" | sudo tee -a /etc/hosts

🌍 Apache VirtualHost erstellen

Für jedes Projekt wird automatisch ein eigener VirtualHost erzeugt:

<VirtualHost *:80>
ServerName meinprojekt.local
DocumentRoot /home/user/www/meinprojekt <Directory /home/user/www/meinprojekt>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

🔍 Wichtig

Apache wird erst am Ende neu geladen, und nur wenn die Config gültig ist:

if sudo apache2ctl configtest; then
sudo systemctl reload apache2
fi

🚀 WordPress installieren mit WP-CLI

Hier kommt der eigentliche Komfort:

wp core download
wp config create --dbname="$DB_NAME" --dbuser="$DB_USER" --dbpass="$DB_PASSWORD"
wp core install ...

💡 Vorteil

  • keine Browser-Installation
  • komplett automatisiert
  • reproduzierbar

🔄 Standalone vs. orchestriert

Ein wichtiger Punkt in meinem Setup:

👉 Jedes Skript funktioniert auch alleine

Beispiel:

create_database.sh testprojekt

Wenn keine .env existiert:

👉 wird sie automatisch erzeugt


🧠 Erkenntnis aus der Praxis

Ich hatte anfangs alles in ein großes Skript gepackt.

Das Problem:

  • schwer zu warten
  • schwer zu debuggen
  • unflexibel

Die Aufteilung in kleine Skripte hat alles einfacher gemacht.


🔥 Fazit

Mit ein paar Bash-Skripten lässt sich eine lokale Entwicklungsumgebung massiv beschleunigen.

👉 Statt 10 Minuten Setup:

ein Befehl → fertig

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert