Storage Server cu WordPress: ce funcționează și ce nu

Publicat pe 6 min de citit

Nu tot ce se citește despre WordPress și spațiu de stocare extern funcționează și în practică. Articolul separă cele trei cazuri: backupurile merg imediat, descărcările cu puțin efort, iar biblioteca media doar cu o condiție.

Directorul wp-content/uploads este partea din WordPress care crește fără frână. Imagini, fișiere PDF, videoclipuri, iar de la fiecare imagine mai multe dimensiuni, pe care WordPress le creează automat. După câțiva ani se adună acolo zeci de gigabytes, iar spațiul de pe serverul web este cel mai scump pe care îl poți cumpăra.

Un Storage Server costă o fracțiune din asta. Întrebarea este doar ce se poate muta cu adevărat. Pe net se scriu despre asta multe lucruri care în practică nu funcționează. Articolul separă curat cele trei cazuri.

Cele trei cazuri pe scurt

CeMerge?Efort
Backupurida, imediatun sfert de oră, plugin gratuit
Descărcări maridaun script mic sau un plugin de descărcare
Biblioteca media, server propriudao montare o singură dată, apoi invizibil
Biblioteca media, hosting partajatnulipsește pluginul potrivit

Ultimul punct este cel de care se împiedică cei mai mulți. De aceea, mai întâi adevărul neplăcut.

De ce nu există un plugin pentru biblioteca media

Pluginurile cunoscute de mutare pentru WordPress vorbesc toate aceeași limbă: S3. Se conectează la Amazon S3 sau la un serviciu compatibil, încarcă fișierul acolo, șterg copia locală și înlocuiesc adresa din articol cu o adresă publică a serviciului.

Exact asta nu se poate transpune pe un Storage Server, și anume din două motive:

  • Storage-ul vorbește SMB, SFTP și WebDAV, dar nu S3.
  • Nu există o adresă publică pentru fiecare fișier. Fiecare acces este autentificat, deci nu poate exista un link pe care browserul vizitatorului să îl deschidă direct.

Există pluginuri izolate care lucrează cu FTP, dar niciunul cu răspândire demnă de menționat și cu întreținere actuală, care să mute complet biblioteca media prin SFTP sau WebDAV. Cine găsește unul ar trebui să se uite, înainte de a-l folosi, la data ultimei actualizări și la numărul de instalări active.

Calea care funcționează: montare în loc de mutare

Pe un server propriu, cu drepturi de root, se întoarce toată treaba. În loc să înveți WordPress să vorbească cu spațiu de stocare străin, aduci storage-ul acolo unde WordPress scrie oricum:

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

Intrarea în /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

Apoi mută fișierele existente și înlocuiește directorul:

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 nu observă nimic, pentru aplicație este o cale absolut normală. Directorul vechi rămâne pe loc ca uploads.alt până ai verificat că totul funcționează. Abia atunci îl ștergi, nu înainte.

Capcana din drum: miniaturile

WordPress creează de la fiecare imagine mai multe dimensiuni și le încarcă la fiecare afișare de pagină. Dacă aceste fișiere mici stau pe spațiul de stocare din rețea, se adaugă latența de rețea pentru fiecare fișier, iar o galerie cu patruzeci de imagini așteaptă patruzeci de ori.

Două soluții, ambele bune:

  • Pui un cache în față, de exemplu un cache în serverul web, care ține local fișierele livrate.
  • Pui doar originalele pe storage și lași local dimensiunile create. Este un pic mai multă muncă, dar este calea cea mai curată pentru pagini cu multe imagini.

Backupuri: folosul cel mai rapid

Dacă faci un singur lucru, atunci pe acesta. Un backup pe același server nu este un backup: dacă discul este șters sau site-ul criptat, dispare împreună cu el. Pe un storage separat supraviețuiește.

Pluginul gratuit WPvivid poate salva pe storage prin SFTP chiar în versiunea de bază, cu programare și regulă de păstrare. Ghidul complet pentru asta stă în Backupuri WordPress pe Storage Server.

Pe un server propriu merge și mai bine, și anume cu rsync sau BorgBackup direct dintr-o sarcină programată. Atunci transferi doar modificările, iar BorgBackup deduplică în plus.

Livrarea descărcărilor mari

Pentru fișiere pe care vizitatorii trebuie să le descarce, storage-ul este ideal: se citesc rar, sunt mari și nu trebuie să fie rapide, trebuie doar să ajungă. Accesul trece printr-un script mic, care verifică înainte dreptul de acces:

<?php
// în functions.php sau ca plugin propriu
add_action('template_redirect', function () {
    if (!isset($_GET['kh_download'])) {
        return;
    }
    if (!is_user_logged_in()) {
        wp_die('Te rugăm să te autentifici', '', ['response' => 403]);
    }

    $pfad = '/mnt/storage/downloads/' . basename($_GET['kh_download']);
    if (!is_readable($pfad)) {
        wp_die('Fișierul nu a fost găsit', '', ['response' => 404]);
    }

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

Exemplul pornește de la un storage montat. Fără montare, înlocuiești readfile() cu un apel SFTP sau WebDAV, așa cum este descris în Storage Server pentru site-ul propriu.

Efectul secundar este plăcut: pentru că fișierul nu are niciodată o adresă publică, nimeni nu poate da linkul mai departe. Verificarea dreptului de acces nu se poate ocoli.

Ce rămâne pe hosting partajat

Ce vrei să faciHosting partajatServer propriu
Backup prin plugindada
Livrarea descărcărilor prin PHPda, prin WebDAV sau SFTPda
Mutarea bibliotecii medianuda, prin montare
rsync sau BorgBackupde obicei nuda

Pe hosting partajat, WebDAV prin HTTPS este calea cea mai de încredere, pentru că portul 443 nu este practic niciodată blocat. SFTP funcționează de asemenea, dar la noi rulează pe portul 23, și nu orice furnizor permite conexiuni de ieșire pe astfel de porturi. Asta ar trebui verificat scurt înainte de comandă.

Un subcont pentru fiecare scop

Fiecare Storage Server permite până la 100 de subconturi, fiecare cu director de start propriu, parolă proprie și permisiuni de protocol proprii. Pentru WordPress asta înseamnă cel puțin două:

  • Un cont pentru site, care vede doar /uploads.
  • Un cont pentru backupuri, care vede doar /backup.

Dacă site-ul ajunge să fie compromis, atacatorul găsește în wp-config.php datele de acces ale primului cont. Backupurile rămân neatinse, pentru că acel cont nici nu le cunoaște. Cu un singur cont principal, în acest punct ar fi dispărut tot.

Când mai mulți utilizatori au nevoie de spațiu propriu

Un Storage Server nu cunoaște nicio cotă pe subcont. Un cont rămâne în directorul lui, dar acolo poate umple tot tariful. Cine vrea să dea clienților, fotografilor sau redactorilor câte un contingent limitat pune de aceea în față o aplicație care preia asta. Nextcloud este cea mai la îndemână, aduce utilizatori, cote și linkuri de partajare: Conectarea Nextcloud la Storage Server.

Ce tarif se potrivește

TarifSpațiuSubconturiPreț
Storage-11 TB1009,99 EUR
Storage-25 TB10029,99 EUR
Storage-310 TB10039,99 EUR
Storage-420 TB10069,99 EUR

Pentru un singur site WordPress cu backupuri, Storage-1 ajunge de regulă mult timp. Cine mută bibliotecile media ale mai multor site-uri sau lucrează cu video ajunge repede la Storage-2 sau Storage-3. Toate tarifele stau în Germania, vin fără taxă de configurare, se facturează pe bază PrePaid și nu au durată minimă. Trecerea la tariful imediat mai mare este posibilă oricând, fără să atingi datele.

Întrebări frecvente

Pot muta biblioteca media din WordPress pe un Storage Server cu un plugin?
Nu, cel puțin nu de încredere. Pluginurile cunoscute de mutare vorbesc exclusiv S3 și servicii compatibile. Pentru SFTP sau WebDAV nu există niciun plugin întreținut care să mute complet biblioteca media. Cine citește asta și găsește totuși un plugin ar trebui să verifice data ultimei actualizări și numărul de instalări.
Cum merge totuși?
Pe un server propriu, cu drepturi de root. Acolo montezi storage-ul în sistemul de fișiere și pui directorul wp-content/uploads pe el. WordPress nu observă nimic, pentru aplicație este o cale absolut normală. Pe hosting partajat, fără drepturi de root, asta nu funcționează.
Care este folosul cel mai simplu?
Backupurile. Un plugin ca WPvivid poate salva pe storage prin SFTP chiar în versiunea gratuită, se configurează într-un sfert de oră și aduce imediat siguranță, pentru că backupul nu mai stă pe aceeași mașină ca site-ul.
Se vor încărca imaginile mele mai lent din cauza asta?
Dacă o construiești greșit, da. Miniaturile sunt necesare la fiecare afișare de pagină, iar fiecare acces prin rețea costă timp. Soluția este să ții originalele pe storage și să lași local dimensiunile create de WordPress sau să le ții în cache.
Pot lega descărcările direct de pe storage?
Nu, fiecare acces la storage este autentificat. Livrezi fișierul printr-un script PHP mic sau printr-un plugin de descărcare, care verifică dreptul de acces și trimite fișierul mai departe. Asta este chiar un avantaj, pentru că nimeni nu poate da linkul mai departe.
Ce protocol folosesc pe hosting partajat?
WebDAV prin HTTPS, pentru că portul 443 nu este practic niciodată blocat. SFTP merge și el, dar la noi rulează pe portul 23, iar unii furnizori de hosting partajat nu permit conexiuni de ieșire pe astfel de porturi. Cel mai bine verifici asta înainte.
Am nevoie de un subcont separat pentru fiecare scop?
Este foarte recomandat. Fiecare Storage Server permite până la 100 de subconturi, cu director propriu și parolă proprie. Dacă site-ul ajunge să fie compromis, atacatorul nu ajunge la backupuri, pentru că contul site-ului nici nu le vede.
Cum rămâne cu mai mulți utilizatori care au nevoie fiecare de spațiu propriu?
Pentru asta storage-ul singur nu este făcut, pentru că o cotă pe subcont nu există. Pune în acest caz Nextcloud în față: el aduce utilizatori, cote și partajări și depune fișierele pe storage.
Merită la un site mic?
Pentru backupuri da, mereu. Pentru biblioteca media abia când spațiul de pe serverul web devine insuficient sau scump. Ca regulă de bază: imediat ce te gândești la spațiu web suplimentar, un Storage Server este răspunsul mai ieftin.
Cât costă?
Storage-1 cu 1 TB costă 9,99 euro pe lună, Storage-2 cu 5 TB 29,99, Storage-3 cu 10 TB 39,99 și Storage-4 cu 20 TB 69,99. Locație Germania, fără taxă de configurare, PrePaid și fără durată minimă.

WordPress Storage Server Mediathek Backup Downloads SFTP WebDAV