Configuration matérielle pour un serveur de production
Dans ce dossier, nous tenterons de répondre à la problématique suivante : disposer d'une infrastructure fiable, performante et évolutive pour délivrer du contenu à plusieurs dizaines de milliers de visiteurs. Cette infrastructure pourrait également permettre l'hébergement de plusieurs sites, en plusieurs langues. Je rappelle que TYPO3 permet une gestion multisites et multilingues.
Petit avertissement... On effectue en général toute une batterie de tests pour simuler les utilisateurs qui se connecteront au site. Des montées en charge par exemple, permettent de mettre à l'épreuve une configuration matérielle et logicielle face aux nombreuses requêtes d'internautes. Je n'ai pas malheureusement ces informations ; je m'appuie uniquement sur mon expérience de Webmaster/Développeur et sur les infos trouvées ici ou là sur des forums d'utilisateurs, des sites spécialisés...
1. Objectif
Nous ne reviendrons pas sur l?étude du CMS, ni sur les raisons qui nous ont motivées à le choisir. Il s'agit ici simplement de donner des spécifications techniques afin de répondre le mieux possible à l'objectif évoqué ci-dessus. Les recommandations tiendront compte de l'environnement nécessaire pour faire fonctionner le CMS TYPO3 (OS, langage de programmation ...) mais également des perspectives de développement liées à l'utilisation de cet outil.
2. Mise en place d'un clustering
Nous allons évoquer la mise en place d'un clustering de serveurs pour TYPO3 mais intéressons-nous tout d'abord au serveur même.
2.1 Les principales composantes du serveur
2.1.1 Composantes logicielles
Composantes logicielles | |
Système d'exploitation | Debian Sarge 3.1 (Kernel 2.6 mini)** |
Serveur http | Apache 2.0 |
Langage | PHP 4 (ou PHP 5 mais attention à la compatibilité avec les extensions existantes) |
Base de données | MySQL 4 ou MySQL 5 |
Serveur FTP | Proftpd ou autre |
Demon SSH | SSHD (accès root) |
Typo3 et extensions | Typo3 3.8.1 (dernière version stable) + vos extensions préférées (JavaScript Selector, RealURL, Kickstarter, macina_banners, Page Template selector, Automaketemplate, etc) |
Divers | php-devel + autoconf (préalable à l?install des accélérateurs PHP) |
** Le package php-devel doit être installé au préalable. Je recommande une Debian testing pour plus de flexibilité dans la mise à jour de la machine et notamment l?exploitation d?outils de cache pour PHP (d?où php-devel pour créer des extensions PHP).
2.1.2 Composantes matérielles (principales)
2.1.2.1 Serveur Web
Composantes logicielles | |
CPU | Intel P4 3 Ghz HyperThreading |
Mémoire | 1 Go |
Disques | 3x SCSI Raid 5 (73 Go par disque*) (dont 1 de parité). Vous pouvez également mettre de l'IDE ou du serial ATA. Dans ce cas, prévoyez deux disques. Bien que cette solution soit moins chère, elle est aussi moins performante que du RAID5. Vous pouvez également alterner. Le RAID pour le serveur MySQL et de l'ATA pour des serveurs frontaux (si vous séparez la base du serveur MySQL comme nous le verrons plus loin) |
* Capacité exploitable : 2x73-73 = 146 Go
2.1.2.2 Serveur MySQL
Composantes logicielles | |
CPU | Intel P4 3 Ghz HyperThreading |
Mémoire | 2 Go |
Disques | 3x SCSI Raid 5 (73 Go par disque*) (dont 1 de parité). Vous pouvez également mettre de l'IDE ou du serial ATA. Dans ce cas, prévoyez deux disques. Bien que cette solution soit moins chère, elle est aussi moins performante que du RAID5. Vous pouvez également alterner. Le RAID pour le serveur MySQL et de l'ATA pour des serveurs frontaux (si vous séparez la base du serveur MySQL comme nous le verrons plus loin) |
* Capacité exploitable : 2x73-73 = 146 Go