CoreCP

Serverprofielen

Een profiel is de vorm van een machine, één keer opgeschreven in plaats van per server ingetypt: welke rollen hij draait, welke tools hij draagt, hoe zijn database en zijn cache afgesteld staan, en waarmee een nieuwe WordPress-site erop beg

Geschreven voor: Beheerder

Een profiel is de vorm van een machine, één keer opgeschreven in plaats van per server ingetypt: welke rollen hij draait, welke tools hij draagt, hoe zijn database en zijn cache afgesteld staan, en waarmee een nieuwe WordPress-site erop begint.

Je zet er een machine mee op:

root@new:~# corectl setup --profile wordpress

en je kunt een bestaande machine erheen verhuizen — daar zitten de interessante regels.

Wat een profiel bepaalt

Rollenprecies deze set — web, db, mail, dns, ftp, backup
Webserverwelke provider, en of LSCache aanstaat
Toolsgit, Composer, WP-CLI, imapsync, Redis, een Node- of Python-serie
Instellingende eigen serverinstellingen die het meebrengt, op maat van deze machine
PHP-plafondsde directives waarvan dit soort machine de grens verlegt
WordPressde plugins en de object-cache die een nieuwe site erft

De lijsten zijn exact, geen minimum. Dat telt het zwaarst voor wat een profiel weglaat: het WordPress-profiel heeft geen mailrol, en die afwezigheid is een besluit, geen vergissing.

De twee profielen

root@web1:~# corectl profile list
Profiles:
     shared       Shared hosting — websites, databases, mail, DNS and FTP on one machine
  on wordpress    WordPress hosting — LiteSpeed with LSCache, Redis object cache, MariaDB tuned for InnoDB

This node carries wordpress. `corectl profile status` shows how far it has drifted.
Own presets go in /etc/corecp/profiles/<name>.yaml and win over the built-in one.

shared is de alles-in-één machine: websites, hun databases, hun e-mail, hun DNS en FTP, op één server. Dat profiel stelt bewust niets af — een gedeelde node host wat je klanten uploaden, en een instelling die de één helpt ten koste van de rest is geen standaard.

wordpress is een machine die één soort applicatie draait, en die kun je daarvoor afstellen:

  • LiteSpeed met LSCache, zodat de cache in de webserver zit, vóór PHP;
  • Redis met een geheugenplafond en een opruimregel, zodat een plugin die elke query cachet de machine niet kan omleggen;
  • een InnoDB-bufferpool op maat van deze machine in plaats van MariaDB's standaard 128 MB — dat is het grootste verschil tussen een trage en een snelle WordPress;
  • geen mailrol. Een WordPress-host is geen mailhost. Sites versturen via een relay en poort 25 blijft dicht.

Een nieuwe WordPress-site op zo'n machine krijgt de plugins LiteSpeed Cache en Redis Object Cache, en de object-cache wordt voor je aangezet. Paginacaching zet CoreCP bewust aan bij de site en niet bij de server: de server weet niet welke cookie "ingelogd" betekent en de cacheplugin wel, en een servicebrede één-seconde-cache is één plugin-update verwijderd van de pagina van een ingelogde bezoeker aan iemand anders tonen.

Een profiel helemaal lezen, inclusief waarom het kiest wat het kiest:

root@web1:~# corectl profile show wordpress
wordpress — WordPress hosting — LiteSpeed with LSCache, Redis object cache, MariaDB tuned for InnoDB
  source     built into corectl
  roles      web, db
  webserver  litespeed (lscache on)
  tools      composer, git, redis, wp-cli
  drop-in    mariadb (406 bytes, as rendered for this machine)
  drop-in    redis (39 bytes, as rendered for this machine)
  php policy max_input_vars max 30000
  wordpress  object cache redis, new sites get litespeed-cache, redis-cache
  note       Page caching is turned on at the *site*, not at the node. …

corectl profile show wordpress --yaml drukt het profiel af precies zoals het geschreven staat — dat is wat je kopieert om er zelf een te maken.

De maten komen van de machine

De database- en cache-instellingen zijn geen vaste getallen maar een percentage van het geheugen dat de server écht heeft, afgerond op iets wat een mens zou intypen:

root@web1:~# corectl profile status
profile   wordpress — WordPress hosting — LiteSpeed with LSCache, Redis object cache, MariaDB tuned for InnoDB
memory    3398 MB (what the profile's drop-ins are sized from)
drift     none — this node matches its profile

3398 MB levert een bufferpool van 960 MB en een Redis-plafond van 320 MB. Geef je de machine meer geheugen, dan past hij zichzelf niet aan — draai corectl profile apply wordpress opnieuw en de instellingen worden met de nieuwe getallen herschreven.

Het profiel van een machine wisselen

Kijk altijd eerst. --dry-run verandert niets en vertelt alles:

root@web1:~# corectl profile apply shared --dry-run

Erbij zetten is gratis. Een wissel die alleen een rol of een tool toevoegt gaat zonder vragen door.

Weghalen niet. Een rol weghalen betekent breken wat hem nodig heeft — mailboxen, DNS-zones, databases, FTP-logins — en een profielwissel is geen migratie. CoreCP weigert dus, en de weigering zegt precies wat in de weg staat en hoe je elk daarvan vrijmaakt:

root@web1:~# corectl profile apply wordpress
corectl: switching to profile wordpress would take the mail role(s) off this node, and 33 binding(s) still need it:
  mail      domain   voorbeeld.nl (account acme)            corectl mail disable voorbeeld.nl
  mail      mailbox  info@voorbeeld.nl (account acme)       corectl mailbox delete info@voorbeeld.nl
  mail      … and 27 more (19 domain, 14 mailbox in total)

Move them to another node first — that is what the panel's service bindings are for, and it keeps the data — or free them with the commands above, or pick a profile that keeps the role. Nothing on this node was changed.

Forceren kan niet, en dat is opzet. De weg langs een binding is hem verhuizen — daar is de serverplaatsing in het paneel voor, en dat behoudt de gegevens van de klant. Een geweigerde wissel raakt niets aan: de server staat er precies bij zoals hij stond.

Zit er niets vast, dan mag een rol er gewoon af. De regel gaat over bindingen, niet over de richting.

Een profiel is een startpunt, geen keurslijf

Je mag een machine aanpassen nadat je hem een profiel hebt gegeven. Niets draait dat terug. Wat CoreCP wél doet, is melden dat de machine en zijn profiel uit elkaar zijn gelopen:

root@web1:~# corectl tool add node@24
root@web1:~# corectl profile status
profile   wordpress — WordPress hosting — LiteSpeed with LSCache, Redis object cache, MariaDB tuned for InnoDB
memory    3398 MB (what the profile's drop-ins are sized from)
drift     1 difference(s). A profile is a starting point: these are
          reported, never undone.

  tool        node@24                added    installed here, not part of the profile

Put the node back on its profile with: corectl profile apply wordpress

Hetzelfde staat in de gezondheidscontrole als waarschuwing, nooit als fout — een machine waaraan je bewust een extra tool hebt gegeven is niet ziek:

root@web1:~# corectl doctor | grep profile
[warn] profile            wordpress — 1 difference(s): tool node@24 added — installed here, not part of the profile

En in het paneel, op de pagina van de server: de profielnaam met een badge die óf geen afwijkingen zegt óf hoeveel het er zijn, met de lijst eronder.

Een machine terugzetten op zijn profiel vraag je zelf, en alleen dan: corectl profile apply wordpress.

Zelf een profiel schrijven

Je eigen profielen staan in /etc/corecp/profiles/ en winnen van het ingebouwde profiel met dezelfde naam — je kunt dus veranderen wat "shared" op jouw vloot betekent zonder op ons te wachten. Begin bij een bestaand profiel:

root@web1:~# mkdir -p /etc/corecp/profiles
root@web1:~# corectl profile show shared --yaml > /etc/corecp/profiles/shared-nl.yaml
root@web1:~# nano /etc/corecp/profiles/shared-nl.yaml

Zet het veld name: gelijk aan de bestandsnaam — die twee moeten kloppen. De rest is een lijst die je bewerkt:

name: shared-nl
summary: Ons gedeelde platform, met Node voor de deploy-pipelines
roles: [web, db, mail, dns, ftp]
webserver: nginx_apache
tools: [composer, git, imapsync, node@24, redis, wp-cli]

Alles wat een profiel noemt wordt gecontroleerd vóórdat er één pakket geïnstalleerd wordt, en je krijgt het in één keer te horen in plaats van één fout per poging:

root@web1:~# corectl profile apply shared-nl --dry-run
corectl: profile shared-nl cannot be applied:
  role "mailserver" does not exist (backup, db, dns, ftp, mail, web)
  tool "kubernetes": unknown tool "kubernetes" — `corectl tool list` names the catalogue

Verder lezen

  • Tools op een server — wat een tool is en hoe de lijst werkt.
  • Eigen serverinstellingen — de instellingen die een profiel meebrengt, en hoe je er later met de hand een verandert.