Ein Content-Management-System (kurz CMS, deutsch Inhaltsverwaltungssystem) ist eine Software zur gemeinschaftlichen Erstellung, Bearbeitung und Organisation von Inhalten (Content) zumeist in Webseiten, aber auch in anderen Medienformen. Diese können aus Text- und Multimedia-Dokumenten bestehen. Ein Autor mit Zugriffsrechten kann ein solches System in vielen Fällen mit wenig Programmier- oder HTML-Kenntnissen bedienen, da die Mehrzahl der Systeme über eine grafische Benutzeroberfläche verfügt. WordPress, Joomla, TYPO3 und Drupal zählen zu den bekanntesten und sind derzeit die meistverwendeten Open-Source-CMS.

Obwohl fachlich präzise vom Web-content-Management-System (kurz WCMS) gesprochen werden müsste, wird der globale Begriff CMS im verbreiteten Sprachgebrauch für Systeme oder Module verwendet, die ausschließlich dem Erstellen von Webseiten dienen. Content-Management-Systeme sind größtenteils plattformunabhängig, da sie in Skriptsprachen geschrieben werden. Alle gängigen Skriptsprachen wie PHP, Ruby, Perl, Python oder JavaScript werden von den gängigsten Webservern unterstützt.

Die eigentlichen Inhalte werden oft in Datenbanken gespeichert, da sie schnelleren Zugriff erlauben und Datenbankindizien für Kategorien, Listen und Feeds zur Verfügung stellen. Kleinere CMS können Inhalte aber auch in Textdateien speichern. MySQL als Datenbank wird von praktisch allen CMS unterstützt, aber häufig finden auch PostgreSQL oder Microsoft SQL Server Verwendung. Content-Management-Systeme verknüpfen die gespeicherten Inhalte mit Formatvorlagen und übergeben diese an den ausliefernden Webserver.

Die Funktionen eines Content-Management-Systems müssen folgendes leisten:

  • Möglichkeit, unterschiedliche Rollen und Verantwortlichkeiten an verschiedene Nutzer und Content-Kategorien/Typen zu vergeben
  • Identifizieren der möglichen Nutzer und ihrer Rollen
  • Definition der Verarbeitungsprozesse als Workflow
    • Möglichkeit, Nachrichten (z. B. E-Mail) an Verantwortliche zu senden, sobald sich am Content bestimmter Unterlagen etwas ändert
  • Nachhalten und Verwalten verschiedener Versionen einer Unterlage
  • Semantisches Ordnen der Inhalte
  • Veröffentlichen des Contents in einer Ablage (z. B. einer Datenbank)
  • Export des Contents in eine andere Arbeitsumgebung oder Import aus einer solchen