Storage Server s WordPressem: co funguje a co ne

Publikováno 5 min čtení

Ne všechno, co se o WordPressu a externím úložišti píše, také funguje. Tento článek rozděluje tři případy: zálohy jdou hned, soubory ke stažení s malou prací a knihovna médií jen za jedné podmínky.

Adresář wp-content/uploads je ta část WordPressu, která roste bez zábran. Obrázky, soubory PDF, videa, k tomu od každého obrázku několik velikostí, které WordPress vytvoří automaticky. Po několika letech tam leží desítky gigabajtů, a místo na webserveru je to nejdražší, co se dá koupit.

Storage Server stojí zlomek toho. Otázkou jen je, co se dá skutečně přesunout. Na internetu se k tomu píše hodně věcí, které v praxi nefungují. Tento článek tři případy čistě rozděluje.

Tři případy v přehledu

CoJde to?Náročnost
Zálohyano, hnedčtvrt hodiny, bezplatný plugin
Velké soubory ke staženíanomalý skript nebo plugin pro stahování
Knihovna médií, vlastní serveranojednou připojit, pak je nevidět
Knihovna médií, shared hostingnechybí vhodný plugin

O ten poslední bod zakopne většina lidí. Proto nejdřív nepříjemná pravda.

Proč pro knihovnu médií žádný plugin není

Známé pluginy pro přesun ve WordPressu mluví všechny stejnou řečí: S3. Spojí se s Amazon S3 nebo kompatibilní službou, nahrají tam soubor, smažou místní kopii a adresu v příspěvku nahradí veřejnou adresou té služby.

Přesně to se na Storage Server přenést nedá, a to ze dvou důvodů:

  • Úložiště mluví SMB, SFTP a WebDAV, ale ne S3.
  • Neexistuje veřejná adresa pro každý soubor. Každý přístup je přihlášený, nemůže tedy být odkaz, který by prohlížeč návštěvníka vyvolal přímo.

Existují jednotlivé pluginy, které pracují s FTP, ale žádný s významným rozšířením a aktuální údržbou, který by knihovnu médií přesunul celou přes SFTP nebo WebDAV. Kdo nějaký najde, měl by se před použitím podívat na datum poslední aktualizace a na počet aktivních instalací.

Cesta, která funguje: připojit místo přesunout

Na vlastním serveru s root právy se věc obrátí. Místo abyste WordPress učili mluvit s cizím úložištěm, přinesete úložiště na to místo, kam WordPress zapisuje tak jako tak:

apt install -y cifs-utils
mkdir -p /mnt/storage
printf 'username=u123456-sub1\npassword=VASE_HESLO\n' > /etc/samba/storage.cred
chmod 600 /etc/samba/storage.cred

Záznam v /etc/fstab:

//u123456.storage.kernelhost.net/backup /mnt/storage cifs credentials=/etc/samba/storage.cred,uid=www-data,gid=www-data,file_mode=0660,dir_mode=0770,seal,_netdev,nofail 0 0

Potom přestěhovat existující soubory a adresář vyměnit:

mount -a
mkdir -p /mnt/storage/uploads
rsync -a /var/www/example.com/wp-content/uploads/ /mnt/storage/uploads/
mv /var/www/example.com/wp-content/uploads /var/www/example.com/wp-content/uploads.alt
ln -s /mnt/storage/uploads /var/www/example.com/wp-content/uploads

WordPress si toho nevšimne, pro aplikaci je to úplně normální cesta. Starý adresář zůstane ležet jako uploads.alt, dokud neověříte, že všechno funguje. Smazat teprve potom, ne dřív.

Past v tom: náhledy

WordPress vytvoří od každého obrázku několik velikostí a načítá je při každém zobrazení stránky. Pokud tyto malé soubory leží na síťovém úložišti, přidá se u každého souboru doba odezvy sítě a galerie se čtyřiceti obrázky čeká čtyřicetkrát.

Dvě řešení, obě dobrá:

  • Postavit před to mezipaměť, třeba cache ve webserveru, která vydané soubory drží lokálně.
  • Na úložiště položit jen originály a vytvořené velikosti nechat lokálně. Je to o trochu více práce, ale pro stránky s mnoha obrázky nejčistší cesta.

Zálohy: nejrychlejší přínos

Pokud uděláte jen jednu věc, pak tuhle. Záloha na tomtéž serveru není záloha: když se disk smaže nebo web zašifruje, je pryč s ním. Na odděleném úložišti přežije.

Bezplatný plugin WPvivid umí v základní verzi zálohovat na úložiště přes SFTP, s časovým plánem a pravidlem pro uchovávání. Úplný návod k tomu stojí v článku Zálohy WordPressu na Storage Server.

Na vlastním serveru to jde ještě lépe, totiž s rsync nebo BorgBackup přímo z časového plánu. Pak přenášíte jen změny a BorgBackup navíc deduplikuje.

Výdej velkých souborů ke stažení

Pro soubory, které si mají návštěvníci stáhnout, je úložiště ideální: čtou se zřídka, jsou velké a nemusí být rychlé, jen musí dojít. Přístup vede přes malý skript, který nejdřív ověří oprávnění:

<?php
// ve functions.php nebo jako vlastní plugin
add_action('template_redirect', function () {
    if (!isset($_GET['kh_download'])) {
        return;
    }
    if (!is_user_logged_in()) {
        wp_die('Přihlaste se, prosím', '', ['response' => 403]);
    }

    $pfad = '/mnt/storage/downloads/' . basename($_GET['kh_download']);
    if (!is_readable($pfad)) {
        wp_die('Soubor nenalezen', '', ['response' => 404]);
    }

    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . basename($pfad) . '"');
    header('Content-Length: ' . filesize($pfad));
    readfile($pfad);
    exit;
});

Příklad vychází z připojeného úložiště. Bez připojení nahradíte readfile() voláním přes SFTP nebo WebDAV, jak je popsané v článku Storage Server pro vlastní web.

Vedlejší efekt je příjemný: protože soubor nikdy nemá veřejnou adresu, nemůže nikdo poslat odkaz dál. Ověření oprávnění se nedá obejít.

Co zůstává na shared hostingu

ZáměrShared hostingVlastní server
Záloha pluginemanoano
Výdej souborů ke stažení přes PHPano, přes WebDAV nebo SFTPano
Přesun knihovny médiíneano, připojením
rsync nebo BorgBackupvětšinou neano

Na shared hostingu je WebDAV přes HTTPS nejspolehlivější cesta, protože port 443 není zablokovaný prakticky nikdy. SFTP funguje také, u nás ale běží na portu 23, a ne každý poskytovatel odchozí spojení na takových portech povolí. To je dobré před objednávkou krátce ověřit.

Jeden podúčet na každý účel

Každý Storage Server dovoluje až 100 podúčtů, každý s vlastním výchozím adresářem, vlastním heslem a vlastními povolenými protokoly. Pro WordPress to znamená nejméně dva:

  • Jeden účet pro web, který vidí jen /uploads.
  • Jeden účet pro zálohy, který vidí jen /backup.

Pokud web někdo převezme, najde útočník ve wp-config.php přístupové údaje prvního účtu. Zálohy zůstanou nedotčené, protože tento účet je vůbec nezná. S jediným hlavním účtem by na tomto místě bylo všechno pryč.

Když více uživatelů potřebuje vlastní místo

Storage Server kvótu na podúčet nezná. Účet zůstane ve svém adresáři, může tam ale zaplnit celý tarif. Kdo chce zákazníkům, fotografům nebo redaktorům dát každému omezený kontingent, postaví proto před úložiště aplikaci, která to převezme. Nextcloud je k tomu nejbližší volba, přináší uživatele, kvóty i odkazy na sdílení: Propojení Nextcloudu se Storage Serverem.

Který tarif se hodí

TarifMístoPodúčtyCena
Storage-11 TB1009,99 EUR
Storage-25 TB10029,99 EUR
Storage-310 TB10039,99 EUR
Storage-420 TB10069,99 EUR

Pro jediný web na WordPressu se zálohami vystačí Storage-1 zpravidla na dlouho. Kdo přesouvá knihovny médií více webů nebo pracuje s videem, skončí rychle u Storage-2 nebo Storage-3. Všechny tarify stojí v Německu, jsou bez zřizovacího poplatku, účtují se na bázi PrePaid a nemají minimální dobu trvání. Přechod do nejbližšího většího tarifu je možný kdykoli, aniž byste se museli dotknout dat.

Časté dotazy

Mohu knihovnu médií WordPressu přesunout na Storage Server pluginem?
Ne, alespoň ne spolehlivě. Známé pluginy pro přesun mluví výhradně S3 a kompatibilní služby. Pro SFTP nebo WebDAV neexistuje udržovaný plugin, který by knihovnu médií přesunul celou. Kdo tohle čte a přesto nějaký plugin najde, měl by si u něj zkontrolovat datum aktualizace a počet instalací.
Jak to tedy přece jde?
Na vlastním serveru s root právy. Tam úložiště připojíte do souborového systému a adresář wp-content/uploads položíte na něj. WordPress si toho nevšimne, pro aplikaci je to úplně normální cesta. Na shared hostingu bez root práv to nefunguje.
Jaký je nejjednodušší přínos?
Zálohy. Plugin jako WPvivid umí v bezplatné verzi zálohovat na úložiště přes SFTP, nastaví se za čtvrt hodiny a hned přinese bezpečí, protože záloha už neleží na stejném stroji jako web.
Budou se mi tím obrázky načítat pomaleji?
Pokud to postavíte špatně, ano. Náhledy jsou potřeba při každém zobrazení stránky a každý přístup přes síť stojí čas. Řešením je držet originály na úložišti a velikosti vytvořené WordPressem nechat lokálně nebo si je odložit do mezipaměti.
Mohu odkazovat soubory ke stažení přímo z úložiště?
Ne, každý přístup k úložišti je přihlášený. Soubor vydáte malým skriptem v PHP nebo pluginem pro stahování, který ověří oprávnění a soubor předá dál. Je to dokonce výhoda, protože nikdo nemůže poslat odkaz dál.
Který protokol vzít na shared hostingu?
WebDAV přes HTTPS, protože port 443 není zablokovaný prakticky nikdy. SFTP jde také, u nás ale běží na portu 23, a někteří poskytovatelé shared hostingu odchozí spojení na takových portech nepovolí. To si nejlépe ověřte předem.
Potřebuji pro každý účel vlastní podúčet?
Je to velmi doporučené. Každý Storage Server dovoluje až 100 podúčtů s vlastním adresářem a vlastním heslem. Pokud web někdo převezme, na zálohy se útočník nedostane, protože účet webu je vůbec nevidí.
Co s více uživateli, z nichž každý potřebuje vlastní místo?
Na to samotné úložiště udělané není, protože kvóta na podúčet neexistuje. V takovém případě před něj postavte Nextcloud, ten přinese uživatele, kvóty i sdílení a soubory odkládá na úložiště.
Vyplatí se to u malého webu?
Pro zálohy ano, vždy. Pro knihovnu médií teprve tehdy, když je místo na webserveru těsné nebo drahé. Jako pravidlo: jakmile začnete uvažovat o dalším webspace, je Storage Server tou levnější odpovědí.
Kolik to stojí?
Storage-1 s 1 TB stojí 9,99 EUR měsíčně, Storage-2 s 5 TB 29,99, Storage-3 s 10 TB 39,99 a Storage-4 s 20 TB 69,99. Lokalita Německo, bez zřizovacího poplatku, PrePaid a bez minimální doby trvání.

WordPress Storage Server Mediathek Backup Downloads SFTP WebDAV