Een server kiezen voor WooCommerce
De officiële documentatie van WooCommerce vraagt om PHP 8.3 of nieuwer, MySQL 8.0 of MariaDB 10.6 of nieuwer, HTTPS en een WordPress-geheugenlimiet van minstens 256 MB. Voor het RAM van de server noemt ze geen cijfer. Voor een kleine webshop is beginnen met 2-4 GB RAM redelijk (een vuistregel die per webshop verschilt). Naarmate producten en bestellingen groeien, groeit ook de belasting van de database en de processor.
Een webshop gedraagt zich niet als een blog. De winkelwagen- en afrekenpagina's zijn voor elke bezoeker anders, dus ze kunnen niet worden gecachet, en bestellingen worden de hele dag naar de database geschreven. Bij hetzelfde verkeer heeft een webshop daarom vaak meer resources nodig dan een blog.
De officiële vereisten
Het document met serververeisten van WooCommerce (een officiële aanbeveling) noemt:
- PHP 8.3 of nieuwer.
- MySQL 8.0 of nieuwer, of MariaDB 10.6 of nieuwer.
- Ondersteuning voor HTTPS.
- Een WordPress-geheugenlimiet van 256 MB of meer.
- Apache of Nginx als webserver.
- Ondersteuning voor multibyte strings (mbstring) als je webshop niet in het Engels is. Het document beschouwt dit als een vereiste die van de webshop afhangt, en een Turkse webshop valt in die groep.
De 256 MB is een plafond voor één PHP-verzoek, niet het RAM van de server. Voeg indien nodig deze regel toe aan wp-config.php:
define( 'WP_MEMORY_LIMIT', '256M' );
Oudere versies zoals PHP 7.4 komen in het document alleen voor als terugvaloptie en worden niet aanbevolen.
Waarom een webshop anders is dan een blog
- Pagina's die niet gecachet kunnen worden. De cachinggids van WooCommerce zegt dat je de winkelwagen-, afreken- en accountpagina's buiten de cache moet houden, omdat ze gegevens van die specifieke bezoeker tonen. Ook bepaalde cookies, zoals de winkelwagencookies, moeten worden uitgesloten. Controleer of je cachingplug-in dat doet.
- Schrijfbelasting. Bestellingen aanmaken, voorraad bijwerken en sessies opslaan schrijft allemaal voortdurend naar de database. Een blog schrijft zelden, een webshop de hele dag.
- Achtergrondtaken. WooCommerce voert uitgestelde taken (e-mails, webhooks, abonnementsbetalingen) uit via een ingebouwde taakwachtrij die Action Scheduler heet. De wachtrij wordt gestart door WP-Cron, dus in een webshop met weinig verkeer kunnen taken te laat draaien. Stel je op de server een cron-taak in die WP-Cron volgens schema uitvoert (samen met de instelling
DISABLE_WP_CRON), dan ben je die afhankelijkheid kwijt. De wachtrij zie je onder WooCommerce > Status > Scheduled Actions.
Bestelgegevens en HPOS
High-Performance Order Storage (HPOS) bewaart bestellingen in eigen tabellen die voor dit doel zijn gemaakt, in plaats van in de algemene berichtentabellen van WordPress. Het is de standaard bij nieuwe installaties sinds WooCommerce 8.2. Oudere webshops schakelen niet vanzelf over. Je zet het aan onder WooCommerce > Settings > Advanced > Features, en een compatibiliteitsmodus houdt de twee structuren gelijk. Voor de server komt het hierop neer: de structuur is geoptimaliseerd voor bestellingen, maar de database heeft nog steeds geheugen en schijf nodig.
Beginmaat
Deze waarden zijn vuistregels en verschillen per webshop. Het is geen vaste belofte.
| Webshop | Begin-RAM | vCores |
|---|---|---|
| Nieuwe webshop: weinig producten, weinig bestellingen | 2-4 GB | 1-2 |
| Groeiende webshop: duizenden producten, regelmatige acties | 4-8 GB | 2-4 |
| Drukke webshop: frequente acties, veel plug-ins en koppelingen | 8 GB en meer | 4 en meer |
Het aantal plug-ins, de afbeeldingsgroottes en plotselinge belasting tijdens een actie tellen even zwaar als het aantal producten. Een objectcache (zoals Redis) verlaagt de databasebelasting, maar heeft geheugen nodig. Begin klein en groei dan door op piekuren de uitvoer van free -h en top te bekijken.
Veelvoorkomende redenen waarom een webshop traag wordt
- Grote, niet gecomprimeerde productafbeeldingen.
- Ongebruikte plug-ins en extra scripts die op elke pagina draaien.
- Geen objectcache, waardoor dezelfde databasequery steeds opnieuw draait.
- Een oude PHP-versie die niet meer wordt onderhouden.
Deze dingen oplossen komt vaak vóór opschalen. Helpt opschalen niet, dan zit het probleem meestal in de configuratie.
Back-ups: een dagelijkse back-up is misschien niet genoeg
Bij Seturack wordt de server elke nacht geback-upt en worden de laatste 7 dagen bewaard. In een webshop komen de hele dag bestellingen binnen, dus dat alleen kan tekortschieten. Herstel je, dan gaan de bestellingen sinds de laatste back-up verloren. Maak vaker een databasedump en kopieer die ergens anders naartoe:
mysqldump --single-transaction -u USER -p DATABASE | gzip > orders-$(date +%F-%H%M).sql.gz
Zet in een geplande taak het wachtwoord niet op de opdrachtregel. Gebruik een bestand ~/.my.cnf met rechten 600. Op een kant-en-klare WooCommerce-server draait de applicatie in Docker, dus voer de databaseopdrachten uit vanuit de container. De database daar is MariaDB. De container bevat mogelijk geen mysqldump, gebruik dan mariadb-dump. Productafbeeldingen staan in de map wp-content/uploads, kopieer die dus ook.
Wat je naast de grootte moet voorbereiden
- HTTPS. Dat is verplicht voor WooCommerce. Een kant-en-klare WooCommerce-server opent via HTTPS op een adres dat met sslip.io van je IP is afgeleid. Om je eigen domein te koppelen, zie dit artikel.
- E-mail. Installeer een SMTP-plug-in zodat bestelmails worden verstuurd. De installatie stelt het versturen van e-mail niet in.
- Updates. Na de installatie zijn updates van WordPress, WooCommerce en je plug-ins jouw zaak. Maak vanuit het paneel een snapshot voor een grote update. Een snapshot vervangt geen back-up, je kunt er alleen mee terug naar het punt ervoor.
Een server met WooCommerce voorgeïnstalleerd staat in ongeveer 3,5 tot 4 minuten klaar en je kunt hem vanuit het paneel opschalen als de webshop groeit. Bekijk de pagina WooCommerce-server.
Reacties0
Nog geen reacties
Deel als eerste uw gedachten.
Meld u aan of registreer u om een reactie te plaatsen.