Podle statistik rozšíření CMS na internetu z ledna tohoto roku využívá 15% všech webů WordPress. Kdyby tedy hacker objevil ve WordPressu bezpečnostní díru, mohl by teoreticky ovládnout až 15% Internetu. Spoustu lidí se o to již pokusilo a jistě nadále pokouší a komunita vývojářů chyby rychle odstraňuje. Nové verze vychází zhruba jednou za měsíc. Oprava vám ale nepomůže, pokud jí nemáte nainstalovanou :). Je tedy nutné neustále aktualizovat.
WordPress se dá aktualizovat z administrace, proces ale potřebuje na stažení a rozbalení balíčku místo na disku, kterého se mi na freehostingu nedostává. Člověk se také musí přihlásit a zmáčknout tlačítko. Naštěstí to lze udělat i jinak. Stačí malý skript.
Můj skript stáhne poslední stabilní verze českého WordPressu a vašich pluginů, uloží je do lokálního repozitáře GITu a následně nahraje na FTP pouze ty soubory, které se změnily. K nahrání změněných souborů jsem využil skvělý skript git-ftp.py.
Aby git-ftp.py fungoval, vytvořte ve složce WordPressu soubor .git/ftpdata s následujícím obsahem a doplňte vaše údaje k FTP:
[master] username=me password=s00perP4zzw0rd hostname=ftp.hostname.com remotepath=/htdocs
Připravte si adresář, do kterého se rozbalí WordPress. Já mám WORKDIR nastavenou na /home/kuba/weby/oss/, takže WordPress se rozbalí do /home/kuba/weby/oss/wordpress. Do proměnné PLUGINY uveďte názvy pluginů získané z adres URL jejich webů. Zde je celý skript (stáhnout):
#!/bin/bash
#
# Automaticka aktualizace WordPressu pres FTP
#
WORKDIR="/home/kuba/weby/oss/"
TMPDIR="/tmp/wordpress-update/"
PLUGINY="w3-total-cache wp-syntax simplemodal-contact-form-smcf lightbox-plus openid"
function echoi {
echo -e "\e[1;36m""$1""\e[0m"
}
function stahnoutplugin {
PLUGINSVN=http://plugins.svn.wordpress.org/
PLUGINDIR="$TMPDIR"/"$1"
stabilni_verze=`svn ls "$PLUGINSVN"/"$1"/tags | tr -d / | sort -V | tail -n 1`
echoi "Stahuji $1-$stabilni_verze"
mkdir -p "$PLUGINDIR"
cd "$PLUGINDIR"
svn co "$PLUGINSVN"/"$1"/tags/"$stabilni_verze"
rm -rf `find -type d -name .svn`
mv "$stabilni_verze" "$1"
mv "$1" "$WORKDIR"/wordpress/wp-content/plugins
}
cd "$WORKDIR"
rm latest-cs_CZ.tar.gz
echoi "Stahuji aktualni wordpress"
wget http://cs.wordpress.org/latest-cs_CZ.tar.gz
rm -rf wordpress/*
tar xvf latest-cs_CZ.tar.gz
for plugin in $PLUGINY; do
stahnoutplugin "$plugin"
done
cd "$WORKDIR"/wordpress
echoi "Mazu zbytecnosti"
rm -rf wp-content/themes/twenty*
rm wp-content/plugins/*/screenshot-*
find -name \*.txt -exec rm '{}' \;
find -name \*.dev.\* -exec rm '{}' \;
rm -rf "$TMPDIR"
echoi "Commituji zmeny"
git add .
git commit -a
echoi "Nahravam na vzdaleny server"
git-ftp.py
O upozornění na nové verze WordPressu se stará moje RSS čtečka se speciálním kanálem. Časem by se to celé ale klidně dalo spojit s Cronem a nemusel bych se starat vůbec o nic.