🧱 Einleitung
Irgendwann kommt man als Webentwickler an den Punkt, an dem man immer wieder das Gleiche macht:
- Verzeichnis anlegen
- Apache konfigurieren
/etc/hostsanpassen- 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.localerreichbar- 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