Un CMS (pour l'anglais Content Management Systems, parfois appelé en français SGC pour Système de Gestion de Contenu), est un logiciel destiné à la conception et à la mise à jour de sites web dynamiques.
Un site web dynamique est un site dont le contenu est amené à changer, que ce soit par des mises à jour du contenu par l'administrateur ou par des paramètres tels que l'identité de l'utilisateur, la date, ou autres. On utilise ce terme par opposition à site statique (dont le contenu ne change pas selon la consultation).
Comme les fonctionnalités des sites internet sont souvent les mêmes d'un site à l'autre (accueil, menu, pages, blog, galleries, etc.), on a mis au point des systèmes qui permettent à l'administrateur de gérer de manière simplifiée et graphique le contenu de sites dynamiques. C'est ce qu'on appelle un CMS.
Un CMS peut simplifier le travail d'un développeur web, mais il peut aussi permettre à des utilisateurs sans compétence en développement de déployer un site web dynamique assez simplement.
Mais en parlant de gestion de contenu, on ne précise pas le type de contenu, la porte reste donc ouverte sur un champs beaucoup plus large. Wikipédia en français inclut en plus dans sa définition :
Pour des raisons de simplicité, nous ne traiterons sur cette page que de la mise en place de sites "classiques" ou de blogs. Mais il faut noter que la plupart des CMS listés ici proposent des extensions pour mettre en place des galleries d'image, des outils communautaires, voir des boutiques en ligne.
Certains CMS sont disponibles dans les dépôts officiels d'Ubuntu, mais avant de vous lancer dans une installation par paquet, vérifiez que la version proposée correspond à la dernière version sur le site officiel du CMS (ce qui est rarement le cas).
À l'heure de la rédaction de cette page la dernière version de WordPress est par exemple la 4.9.4.
apt show wordpress
retourne par contre sur Xenial le numéro de version 4.4.2 (sortie il y a 2 ans).
La plupart des CMS stockent le contenu dynamique dans des bases de données (MySQL la plupart du temps), mais d'autres prennent le parti de stocker les informations directement sous forme de fichiers texte. On appelle cette stratégie le flat file.
L'inconvénient avec les CMS flat file c'est que les recherches sur leur contenu dynamique sont généralement plus lentes, en particulier si celui-ci est important. Par contre ils sont la plupart du temps plus rapides d'une manière générale et surtout beaucoup plus simples à installer et à sauvegarder que leurs homologues à base de données.
Nom du CMS | Licence | Base de données | Langage | Facilité d'utilisation | Description |
---|---|---|---|---|---|
WordPress | libre | MySQL | PHP | WordPress est le CMS le plus utilisé (28% des sites du WWW !). Il rassemble une énorme communauté et propose un nombre sidérant de fonctionnalités par l'ajout d'extensions. Il est par contre d'une certaine manière victime de son succès : c'est une des solutions web les plus attaquées, il est donc impératif de le maintenir à jour constamment. Une fois installé il est assez simple à utiliser, mais il est un peu vieillissant et propose une ergonomie héritée du système de blog qu'il était à l'origine. | |
Joomla! | libre | MySQL | PHP | Joomla! bénéficie également d'une communauté importante. Il propose plus de fonctionnalités nativement que WordPress (permissions, multilingue…), mais on trouve moins de choses dans les extensions. Il ne bénéficie pas d'une image aussi "professionnelle" que WordPress. Le projet est actuellement moins dynamique1) | |
Drupal | libre | MySQL | PHP | Drupal est le 3e CMS le plus utilisé, avec une bonne dynamique2). Il est davantage orienté vers les développeurs, ce qui le rend plus souple, mais plus compliqué à prendre en main. Il est particulièrement bien sécurisé. | |
CMS Made Simple | libre | MySQL | PHP | CMSMS se veut plus simple que WordPress. Son interface est effectivement plus claire, peut-être parce qu'il propose moins de fonctionnalités, mais il repose encore beaucoup sur de l'édition par code. | |
Grav | libre | flat file (YAML) | PHP | Grav est un petit nouveau. Il n'utilise pas de base de données, il est très rapide, propose une interface très claire et ergonomique, et il est basé sur des technologies actuelles. Il ne propose évidemment pas encore autant de fonctionnalités que WordPress (il dispose quand même d'un catalogue d'extensions de qualité) mais il en est une alternative beaucoup plus moderne. Le site officiel est en anglais, mais l'interface d'administration est entièrement traduite en français. | |
Pico CMS | libre | flat file (Markdown) | PHP | CMS flat file moderne et extrêmement simple, aussi bien à installer qu'à utiliser. Il dispose de quelques thèmes et extensions. On peut éditer les fichiers en markdown ou utiliser une interface en ligne grâce au plugin Pico Edit. Il peut s'intégrer facilement à Nextcloud au moyen de cette app. | |
PluXml | libre | flat file (XML) | PHP | Outil de gestion de blog et site classique très simple, voir un peu rudimentaire. Il dispose d'un petit catalogue d'extensions et de nombreux thèmes. | |
Zwii | libre | flat file (JSON) | PHP | Un autre CMS (blog et site classique) extrêmement simple, qui dispose aussi d'un petit catalogue d'extensions. À la différence de PluXml il ne propose qu'un seul thème (responsive) hautement personnalisable. | |
Nibbleblog | libre | flat file (XML) | PHP | Outil de gestion de blog très simple mais pauvre en fonctionnalités. | |
CMSimple | libre | flat file (HTML) | PHP | ||
Django CMS | libre | MySQL | Python | Django CMS est basé sur le framework Python Django. Il est relativement simple à utiliser et propose de nombreuses fonctionnalités, mais sa configuration se fait en modifiant le code source. | |
SPIP | libre | MySQL | PHP | SPIP est un CMS qui a une longue existence, créé au début des années 2000. Il bénéficie toujours d'une communauté active et d'un développement continu. Il propose un large éventail de plugins couvrant nombre de besoins. | |
Plone | libre | ZODB | Python | Plone fait plus que mettre en place un site Internet, et propose des fonctionnalités de gestion d'intranet. Il est basé sur Zope et est particulièrement sécurisé. | |
PHPBoost | libre | MySQL | PHP | PHPBoost propose nativement de nombreuses fonctionnalités : pages, articles, calendrier, forum, wiki, newsletter, sondages, livre d'or etc. Malheureusement son ergonomie est assez datée. | |
Ametys | libre | MySQL | Java | Ametys propose une interface d'édition datée et peu adaptée aux nouvelles technologies du Web. | |
eZ Platform | libre | MySQL | PHP | eZ Platform est un CMS puissant mais complexe, principalement à destination des développeurs et des entreprises. | |
BlogoText | libre | MySQL SQLite | PHP | BlogoText est un CMS qui peut utiliser MySQL ou SQLite (plus simple). C'est un moteur de blog simple qui donne la possibilité de partager des liens. | |
TYPO3 | libre | MySQL | PHP | TYPO3 est un cms très personnalisable. Il n'est en revanche pas fait pour les débutants. | |
strapi | libre | agnostique | JavaScript | Strapi est un CMS headless. Il est idéal pour monter une pile Jamstack, et permet par ex. d'alimenter un générateur de site statique ou une API. Son déploiement est un travail de développeur, mais il est d'une simplicité d'utilisation enfantine. |
Les générateurs de sites statiques (souvent appelés SSG pour Static Site Generator) se rapprochent des CMS en ce sens que leur contenu est facilement modifiable par l'administrateur.
Cependant ce contenu n'est pas généré à chaque consultation et une fois modifié il se présente sous la forme de fichiers HTML, comme un site statique.
Ils disposent de moins de fonctionnalités que les CMS, mais suffisent en général à la mise en place de sites "vitrines" ou de blogs. Ils bénéficient d'une sécurité infaillible et d'une vitesse incomparable, et peuvent être hébergés n'importe où (pas de script à exécuter sur le serveur, juste du HTML à servir).3)
Une liste beaucoup plus complète, en anglais.
Le contenu de ces sites s'administre généralement en éditant des fichiers Markdown (pour les textes riches) et / ou YAML (pour les autres données).
Il est aussi possible de gérer le contenu d'un site statique créé de la sorte au moyen d'interfaces graphiques.
À l'utilisation cela se rapproche donc encore plus du CMS classique.
On parle dans ce cas de CMS headless (sans tête).4) La tête fait ici référence au site public dans son ensemble, et au moteur qui le génère, un projet séparé indépendant de son administration. Decap est un CMS headless libre particulièrement intéressant. Son rôle principal est de fournir une interface graphique pour éditer des fichiers Markdown et YAML, dans le contexte d'un site et à partir desquels ce site sera généré (lors de son administration : SSG, pas de sa consultation : CMS traditionnel).
Ces technologies ne sont pas forcément simples à mettre en oeuvre, mais à l'usage elles offrent une simplicité supérieure aux CMS, ainsi qu'un niveau de sécurité, une vitesse et une légèreté côté serveur incomparables, et ne demandent aucune maintenance une fois en place (il s'agit bien de sites statiques).