Post 1660
plesk,  Unix,  Web,  Wordpress

WordPress automatisch aktualisieren mit WP-CLI und Cron

Veraltete WordPress-Installationen, Plugins und Themes sind das häufigste Einfallstor für Angriffe auf Websites. Mit WP-CLI und einem einfachen Bash-Script lassen sich alle Updates automatisieren – und der Server übernimmt die lästige Wartungsarbeit selbst, ohne manuelle Eingriffe.

WP-CLI installieren

WP-CLI ist das offizielle Kommandozeilenwerkzeug für WordPress. Die Installation ist einfach:

# WP-CLI herunterladen
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# Prüfen ob die Datei funktioniert
php wp-cli.phar --info

# Global zugänglich machen
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# Installation prüfen
wp --info

Auf Servern mit mehreren PHP-Versionen (z.B. Plesk) muss der richtige PHP-Interpreter angegeben werden:

export PATH=/opt/plesk/php/8.4/bin:$PATH
wp --info

Das Update-Script

Ein kompaktes Bash-Script, das alle WordPress-Komponenten in der richtigen Reihenfolge aktualisiert:

#!/bin/bash
# WordPress Auto-Updater
# Speichern als /usr/local/bin/wp-update.sh

export PATH=/opt/plesk/php/8.4/bin:$PATH
WP_PATH="/var/www/vhosts/example.com/httpdocs"
LOG="/var/log/wp-updates.log"

echo "=== WordPress Update $(date) ===" >> "$LOG"

updater() {
    echo "-- WordPress Core --" >> "$LOG"
    wp core update --allow-root --path="$WP_PATH" >> "$LOG" 2>&1

    echo "-- Datenbank-Update --" >> "$LOG"
    wp core update-db --allow-root --path="$WP_PATH" >> "$LOG" 2>&1

    echo "-- Plugin-Updates --" >> "$LOG"
    wp plugin update --all --allow-root --path="$WP_PATH" >> "$LOG" 2>&1

    echo "-- Theme-Updates --" >> "$LOG"
    wp theme update --all --allow-root --path="$WP_PATH" >> "$LOG" 2>&1

    echo "-- Sprach-Updates --" >> "$LOG"
    wp core language update --allow-root --path="$WP_PATH" >> "$LOG" 2>&1

    echo "-- Cache leeren --" >> "$LOG"
    wp cache flush --allow-root --path="$WP_PATH" >> "$LOG" 2>&1
}

updater
echo "=== Update abgeschlossen ===" >> "$LOG"

Script ausführbar machen und testen

chmod +x /usr/local/bin/wp-update.sh

# Manuell testen
/usr/local/bin/wp-update.sh

# Log prüfen
tail -f /var/log/wp-updates.log

Automatische Ausführung per Cron

Den Cron-Job anlegen, der das Script wöchentlich ausführt – beispielsweise jeden Dienstag um 03:00 Uhr morgens:

crontab -e

Folgende Zeile einfügen:

# WordPress wöchentlich aktualisieren (Di 03:00)
0 3 * * 2 /usr/local/bin/wp-update.sh

Mehrere WordPress-Instanzen verwalten

Auf Servern mit mehreren WordPress-Installationen lässt sich das Script erweitern:

#!/bin/bash
export PATH=/opt/plesk/php/8.4/bin:$PATH

# Array aller WordPress-Installationen
WP_SITES=(
    "/var/www/vhosts/site1.com/httpdocs"
    "/var/www/vhosts/site2.com/httpdocs"
    "/var/www/vhosts/site3.com/httpdocs"
)

for site in "${WP_SITES[@]}"; do
    if [ -f "$site/wp-config.php" ]; then
        echo "Aktualisiere: $site"
        wp --path="$site" --allow-root core update
        wp --path="$site" --allow-root plugin update --all
        wp --path="$site" --allow-root theme update --all
        wp --path="$site" --allow-root cache flush
    fi
done

Mit diesem Setup werden alle WordPress-Installationen regelmäßig und vollautomatisch auf dem aktuellen Stand gehalten – ein wesentlicher Beitrag zur Sicherheit und Stabilität jeder WordPress-Website.