Na své dílně potřebuji pravidelně zakládat nové WordPress site a nebaví mne pořád kopírovat WordPress a všechny jeho pluginy a vše znovu konfigurovat (DNS, Apache, WordPress). Rozhodl jsem se proto vyzkoušet WordPress Multisite, který by toto měl zvládnout za mne.
Oficiální návod na síťovou instalaci (jak se WordPress Multisite nazývá) funguje skvěle a podle něj můžeme nakonfigurovat celý WordPress. Co už však návod přehlíží, je nastavení „systému“, tedy DNS a Apache, aby dokázal s takovouto instalací fungovat.
DNS
Pro konfiguraci DNS potřebujeme vytvořit wildcard záznam do zóny, která obsluhuje náš WordPress, takže např. pro BIND přidáme do zónového souboru zápis
1 |
*.dilna 86400 IN A 123.123.123.123 |
Tím říkáme, že libovolná doména v subdoméně dilna.mojedomena.cz (pokud je zónový soubor pro mojedomena.cz) bude směřována na příslušnou IP adresu. Pokud nezapomeneme zvednout sériové číslo, bude to bez problémů fungovat.
Pokud však používáme BIND-SDB, tedy DNS server obsluhovaný z databáze, uvedený postup jednoduše selže. Pátráním v dokumentaci a zdrojovém kódu jsem zjistil, že dotaz databázového driveru bude proveden vždy na konkrétní jméno stroje a v případě neúspěchu na jméno *. Tzn. nikdy nebude provedena expanze na subdoménu a výraz *.dilna nebude nalezen. Je třeba oddelegovat celou subdoménu dilna do nového zónového souboru (nebo databázového záznamu) a v ní definovat samotné jméno stroje *.
Hlavní zónový soubor pak bude obsahovat
1 2 |
dilna 86400 IN NS ns1.mojedomena.cz. dilna 86400 IN NS ns2.mojedomena.cz. |
a nový zónový soubor pro dilna.mojedomena.cz bude obsahovat
1 |
* 86400 IN A 123.123.123.13 |
I když je tento postup v dokumentaci uveden, nalézt ho ve změti textů není úplně jednoduché (slovo wildcard se vyskytuje v BIND-SDB na mnoho místech).
Apache
Konfigurace pro Apache očekává zadefinovat virtuální stroj se ServerAlias na příslušnou wildcard subdoménu. Tedy cca takto
1 2 3 4 5 6 |
<VirtualHost *:80> ServerName dilna.mojedomena.cz ServerAlias *.dilna.mojedomena.cz DocumentRoot /mnt/www/mojedomena.cz/dilna </VirtualHost> |
a v adresáři /mnt/www/mojedomena.cz/dilna je již rozjetý WordPress Multisite s příslušným .htaccess, který nám vygeneruje instalace síťové verze.
Důležité je si uvědomit, že první definice <VirtualHost *:80> označuje virtuální stroj od příslušného NameVirtualHost v konfiguraci a nikoliv samotnou wildcard subdoménu (tu určuje až ServerAlias). Záměna zde může vést k náročnému hledání, kde je vlastně zakopán pes.