Features: - PHP 8.4 support (from 8.3) - WordPress 7.0 (auto-update via WP-CLI) - Modern TLS 1.3 cipher suites (2026 best practices) - Fail2Ban security integration (5 jails: SSH, Nginx, WordPress, recidive) - Auto-update cron job for WordPress (weekly Minor updates) - Debian 14 Forky support (testing) - Ubuntu 25.04 support - Python 3.12 in GitHub Actions Security: - Fail2Ban with SSH brute force protection (24h ban) - WordPress wp-login.php protection (2h ban) - Nginx bot scanner protection - Recidive jail for repeat offenders (1 week ban) - Modern TLS ciphers (AEAD only) - HSTS 2 years for preload Documentation: - docs/autoupdate.md - WordPress auto-update guide - docs/fail2ban.md - Fail2Ban configuration guide - docs/troubleshooting.md - Updated with php_version variable Breaking changes: - PHP 8.4 is now the default (requires Ubuntu 20.04+ or Debian 11+)
12 KiB
Executable File
Ansible LEMP WordPress Automation
🚀 Produktionsreife, vollautomatisierte LEMP-Stack (Linux, Nginx, MySQL, PHP) + WordPress-Bereitstellung mit Ansible
🌐 Andere Sprachen
🎯 Features
🏗️ Kern-Infrastruktur
✅ Komplette LEMP-Stack-Installation
- Nginx-Webserver mit produktionsreifer Optimierung
- MySQL 8.0+ mit sicherer Einrichtung und Performance-Tuning
- PHP 8.4+ mit FPM, OPcache und WordPress-Erweiterungen
- Ubuntu/Debian-Familie Unterstützung (20.04, 22.04, 24.04, 25.04, Debian 11, 12, 13, 14)
🛡️ WordPress & Sicherheit
✅ WordPress-Automatisierung & Sicherheit
- Neueste WordPress-Installation mit WP-CLI-Integration
- Automatische Datenbank-Einrichtung und sichere Konfiguration
- Integrierte SSL/HTTPS-Unterstützung mit Let's Encrypt
- Sicherheitshärtung (ordnungsgemäße Dateiberechtigungen, sichere Konfigurationen)
⚡ Performance & Caching
✅ Ultimate Performance-Optimierungen
- Redis Object-Caching für Datenbank-Optimierung
- PHP OPcache Konfiguration für verbesserte Performance
- MySQL Performance-Tuning mit optimierten Konfigurationen
- Nginx-Optimierung mit gzip, Caching-Headers und Worker-Tuning
🔧 Produktions-Features
✅ Produktions- und Entwicklungsbereit
- Zwei Bereitstellungs-Modi: Basic LEMP + Ultimate Performance
- Docker-Testumgebung für sicheres Testen
- Modulare, saubere Architektur - produktionsgetestet und dokumentiert
- Idempotente Playbooks (sicher mehrfach ausführbar)
- SSL-Unterstützung integriert in beiden Bereitstellungs-Modi
🚀 Schnellstart
Voraussetzungen
- Ansible 6.0+ auf Ihrem lokalen Rechner
- Ubuntu/Debian-Server (20.04+, Debian 11+)
- SSH-Zugang zu Ihren Zielservern
- sudo-Berechtigung auf Zielservern
1. Repository klonen
git clone https://github.com/spalencsar/ansible-lemp-wordpress.git
cd ansible-lemp-wordpress
2. Inventar konfigurieren
cp inventory/production.yml.example inventory/production.yml
# Bearbeiten Sie inventory/production.yml mit Ihren Server-Details
3. Wählen Sie Ihren Bereitstellungs-Modus
Option A: Basic LEMP + WordPress
# Standard LEMP-Stack mit WordPress
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress.yml
Option B: Ultimate Performance Setup
# LEMP + WordPress + Redis + OPcache + Nginx-Optimierung
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress-ultimate.yml
Option C: Mit SSL/HTTPS
# SSL während der Bereitstellung aktivieren
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress.yml \
-e "ssl_enabled=true" -e "ssl_email=ihre-email@domain.com"
# Oder mit Ultimate Performance + SSL
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress-ultimate.yml \
-e "ssl_enabled=true" -e "ssl_email=ihre-email@domain.com"
4. Zugriff auf Ihre WordPress-Seite
- Website:
http://ihre-server-ip(oderhttps://wenn SSL aktiviert) - Admin-Panel:
http://ihre-server-ip/wp-admin - Standard-Login: Prüfen Sie Ihre Inventory-Datei für
wp_admin_userundwp_admin_password
🐳 Docker-Testumgebung
Perfekt zum Testen vor der Bereitstellung auf Produktionsservern:
cd docker/
docker-compose up -d
# Test Basic LEMP Bereitstellung
ansible-playbook -i inventory/docker.yml playbooks/lemp-wordpress.yml
# Test Ultimate Performance Bereitstellung
ansible-playbook -i inventory/docker.yml playbooks/lemp-wordpress-ultimate.yml
Zugriff auf Test-Site: http://localhost:8080
<EFBFBD> Projektstruktur
ansible-lemp-wordpress/
├── playbooks/ # Haupt-Ansible-Playbooks (PRODUKTIONSREIF)
│ ├── lemp-wordpress.yml # Basic LEMP + WordPress Bereitstellung
│ └── lemp-wordpress-ultimate.yml # Ultimate: LEMP + WordPress + Redis + OPcache + Optimierung
├── inventory/ # Server-Inventar-Konfigurationen
│ ├── production.yml # Produktionsserver-Konfiguration
│ └── docker.yml # Docker-Testumgebung
├── templates/ # Jinja2-Konfigurationsvorlagen (PRODUKTIONSGETESTET)
│ ├── wp-config.php.j2 # WordPress-Konfiguration
│ ├── wordpress.nginx.j2 # Nginx Virtual Host (HTTP)
│ ├── wordpress-ssl.nginx.j2 # Nginx Virtual Host (HTTPS)
│ ├── my.cnf.j2 # MySQL-Konfiguration
│ └── www.conf.j2 # PHP-FPM Pool-Konfiguration
├── vars/ # OS-spezifische Variablen
│ └── debian-family.yml # Debian/Ubuntu-Variablen
├── docker/ # Docker-Testumgebung
│ ├── docker-compose.yml # Docker-Setup
│ ├── Dockerfile # Ubuntu-Test-Container
│ └── start-services.sh # Service-Startup-Skript
└── docs/ # Dokumentation
├── production-deployment.md
├── ssl-setup.md
└── troubleshooting.md
⚙️ Konfiguration
Bereitstellungs-Modi
Basic LEMP Modus (lemp-wordpress.yml)
- Standard LEMP-Stack (Nginx, MySQL, PHP)
- WordPress mit WP-CLI
- SSL-Unterstützung (optional)
- Geeignet für kleine bis mittlere Websites
Ultimate Performance Modus (lemp-wordpress-ultimate.yml)
- Alles aus dem Basic-Modus, plus:
- Redis Object-Caching
- PHP OPcache-Optimierung
- Nginx Performance-Tuning
- MySQL-Optimierung
- Geeignet für High-Traffic-Websites
SSL-Konfiguration
Beide Bereitstellungs-Modi unterstützen SSL:
# In inventory/production.yml
wordpress_servers:
hosts:
ihr-server:
ansible_host: ihre-ip
ssl_enabled: true
ssl_email: ihre-email@domain.com
Variablen-Konfiguration
Wichtige WordPress-Variablen:
# WordPress Admin
wp_admin_user: admin # WordPress Admin-Benutzername
wp_admin_password: "{{ vault_wp_admin_password }}" # Verwenden Sie Ansible Vault!
wp_admin_email: admin@domain.com # WordPress Admin-E-Mail
wp_site_title: "Meine WordPress-Seite"
# Datenbank
mysql_root_password: "{{ vault_mysql_root_password }}" # Verwenden Sie Ansible Vault!
wordpress_db_name: wordpress
wordpress_db_user: wordpress
wordpress_db_password: "{{ vault_wordpress_db_password }}" # Verwenden Sie Ansible Vault!
# SSL (optional)
ssl_enabled: false
ssl_email: admin@domain.com
Performance-Variablen (Ultimate Modus):
# Redis-Konfiguration
redis_enabled: true
redis_maxmemory: 256mb
# PHP-Optimierung
php_memory_limit: 512M
php_upload_max_filesize: 128M
php_opcache_enabled: true
# Nginx-Optimierung
nginx_worker_processes: auto
nginx_optimization_enabled: true
Server-Anforderungen
- OS: Ubuntu 20.04+ oder Debian 11+
- RAM: Mindestens 1GB (2GB+ empfohlen für Ultimate Modus)
- Speicher: Mindestens 10GB freier Speicherplatz
- Netzwerk: SSH-Zugang + Web-Ports (80/443)
🔒 Sicherheit & Best Practices
Sicherheits-Features
- Sichere Passwort-Behandlung mit Ansible Vault
- Ordnungsgemäße Dateiberechtigungen für WordPress und Systemdateien
- MySQL-Sicherheit mit benutzerdefiniertem Root-Passwort und eingeschränktem Zugang
- Nginx-Sicherheits-Header und Konfigurationshärtung
- SSL/HTTPS-Unterstützung mit Let's Encrypt-Integration
Best Practices
# Verwenden Sie Ansible Vault für sensible Daten
ansible-vault create inventory/group_vars/all/vault.yml
# Beispiel vault.yml Inhalt:
vault_mysql_root_password: "ihr-sicheres-mysql-passwort"
vault_wp_admin_password: "ihr-sicheres-wp-passwort"
vault_wordpress_db_password: "ihr-sicheres-db-passwort"
# Bereitstellung mit Vault
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress.yml --ask-vault-pass
🧪 Testen
Pre-Deployment-Tests
# Zuerst mit Docker testen
cd docker/
docker-compose up -d
ansible-playbook -i inventory/docker.yml playbooks/lemp-wordpress.yml
# Testumgebung aufrufen
curl -I http://localhost:8080/
Validierungs-Befehle
# WordPress-Installation prüfen
curl -s http://ihr-server/ | grep "WordPress"
# Admin-Zugang testen
curl -I http://ihr-server/wp-admin/
# PHP-Version prüfen
ansible all -i inventory/production.yml -m shell -a "php --version"
# MySQL-Verbindung testen
ansible all -i inventory/production.yml -m shell -a "mysql -u root -p{{ vault_mysql_root_password }} -e 'SELECT VERSION();'"
🚀 Performance-Features
Basic Modus Performance
- PHP-FPM-Optimierung mit angepasster Pool-Konfiguration
- MySQL-Optimierung mit produktionsbereiten Einstellungen
- Nginx-Optimierung mit gzip-Kompression und Caching-Headern
Ultimate Modus Performance
Alles aus dem Basic-Modus, plus:
- Redis Object-Caching für Datenbankabfrage-Optimierung
- PHP OPcache für Bytecode-Caching und verbesserte PHP-Performance
- Erweiterte Nginx-Tuning mit Worker-Optimierung und Verbindungsbehandlung
- MySQL Performance-Tuning mit erweiterten Konfigurationen
Performance-Vergleich
# Basic Modus bereitstellen
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress.yml
# Ultimate Modus für High-Traffic-Websites bereitstellen
ansible-playbook -i inventory/production.yml playbooks/lemp-wordpress-ultimate.yml
🌍 OS-Kompatibilität
| OS | Version | Status | Hinweise |
|---|---|---|---|
| Ubuntu | 24.04 LTS | ✅ Vollständig getestet | Empfohlen |
| Ubuntu | 22.04 LTS | ✅ Vollständig getestet | Empfohlen |
| Ubuntu | 20.04 LTS | ✅ Unterstützt | Getestet |
| Debian | 12 | ✅ Unterstützt | Kompatibel |
| Debian | 11 | ✅ Unterstützt | Kompatibel |
📚 Dokumentation
- Produktions-Bereitstellungsleitfaden
- SSL/Let's Encrypt-Setup
- Fehlerbehebungsleitfaden
- Beitragsleitlinien
🤝 Beitragen
Wir begrüßen Beiträge! Bitte lesen Sie unsere Beitragsleitlinien für Details.
- Repository forken
- Feature-Branch erstellen
- Änderungen mit der Docker-Umgebung testen
- Pull Request einreichen
<EFBFBD> Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE-Datei für Details.
🙏 Danksagungen
- WordPress - Das fantastische CMS
- WP-CLI - WordPress Kommandozeilen-Tool
- Ansible - Automatisierungsplattform
- Community-Mitwirkende und Tester
<EFBFBD> Support
- 📧 Issues: GitHub Issues
- 📖 Dokumentation: Wiki
- <EFBFBD> Diskussionen: GitHub Discussions
⭐ Wenn Ihnen dieses Projekt hilft, geben Sie ihm bitte einen Stern! ⭐
👨💻 Autor
Sebastian Palencsár
- Copyright (c) 2025 Sebastian Palencsár
- GitHub: @spalencsar