English version is available here: Install you own StatusNet with PHP-FPM and Nginx
Dans l'épisode précédent
En fait, rien vu que c'est le premier. La liste sera mise à jour au fur et à mesure des publications:
- Part 1: Installer sa propre instance StatusNet avec PHP-FPM et Nginx
- Part 2: Optimiser les performances et les fonctionnalités de son instance StatusNet
- Part 3: Une extension pour optimiser les performances de son instance StatusNet
Je ferai appel, sans rentrer dans les détails, à des éléments de configuration déjà abordés:
- Nginx: Configuration d'hôtes virtuels avec support automatique des sous-domaines, du SSL et de l'authentification sous GNU/Debian Linux version 2
- PHP-FPM, le serveur d'application par PHP
Néanmoins, les éléments purement liés à la configuration de StatusNet sont abordables, même si vous utilisez d'autres serveurs web.
Introduction
StatusNet est un logiciel de micro-blogging. Il constitue une alternative ouverte à Twitter par exemple. Il est développé en PHP, utilise MySQL pour le stockage persistent et peut utiliser les technologies NoSQL, telles que memcache pour améliorer les performances. De nombreux plugins sont en outre disponibles pour enrichir les fonctionnalités du produit.
StatusNet repose sur l'utilisation de protocoles ouverts permettant de fédérer l'information au sens large. Il s'agit principalement de oStatus et oAuth.
La principale plate-forme à faire fonctionner ce logiciel est identi.ca avec près de 450000 utilisateurs. Une version cloud pointe le bout de nez. Il s'agit de status.net. Ces 2 plate-formes sont opérées par l'entreprise qui développe le système, statusnet.
L'un des principaux avantages de StatusNet, outre le fait qu'il soit distribué sous licence libre, réside dans la décentralissation qu'il peut apporter. Lorsque Twitter a le hoquet, le fameux "Fail Whale", c'est un pan entier d'Internet qui disparaît. Dans le cas de StatusNet, c'est différent: qu'une instance plante, et seuls les utilisateurs de cette instance sont coupés du réseau mais le service demeure globalement fonctionnel. Évidemment, lorsque c'est identi.ca qui rencontre des problèmes, ce sont 450000 utilisateurs qui sont coupés du Net. D'où l'intérêt d'installer sa propre instance. Vous participerez alors à la résilience au "réseau" StatusNet et, cerise sur le gâteau, vous garderez le contrôle de vos données.
Voyons donc comment apporter notre pierre à l'édifice StatusNet en installant notre propre instance avec Nginx et PHP-FPM. Je suppose ici que vous disposez de votre propre serveur, physique ou virtuel peu importe, mais surtout que vous disposez d'un accès en ligne de commande. En effet, nous allons installer StatusNet en ligne de commande. Grâce à cela, vous découvrirez des aspects méconnus du logiciel.
Mieux, cela simplifiera la configuration de NGinx.
Avant de se lancer dans la technique
StatusNet propose une option importante qui peut impacter le fonctionnement de l'application. Il s'agit du mode "SingleUser". Avant de commencer, il faut donc d'abord répondre à cette question: Envisagez-vous d'accueillir d'autres utilisateurs que vous ? Si non, vous pouvez envisager le mode "SingleUser". Dans le cas contraire, ou dans le doute, abstenez-vous.
En théorie, il est possible de changer la mnière dont StatusNet va gérer les URLs. Dans la pratique, il vaut mieux éviter. En effet, toute mise à jour de votre profil (et le changement d'URL en est une) est propagée par le protocole oStatus. Cependant, il existe visiblement des effets de bord.
Préparation
Il s'agit donc d'installer une instance StatusNet sur son serveur web. En l'occurence, celui-ci utilise Nginx et PHP-FPM.
Dans cet exemple, nous allons paramétrer un pool applicatif. Cela veut dire que StatusNet sera potentiellement disponible pour plusieurs domaines et bien sûr plusieurs utilisateurs.
D'abord, il faut créer l'arborescence sur le disque dur:
Une fois l'environnement créé, il faut préparer la configuration de PHP-FPM.
Configuration de PHP-FPM
StatusNet nécessite quelques extensions PHP pour fonctionner.
Voilà pour la configuration de PHP-FPM. Passons à la configuration de NGinx.
Configuration du pool applicatif NGinx
Nous allons paramétrer un pool applicatif pour NGinx, comme décrit dans mes précédentes publications.
Si la requête concerne un fichier statique dont l'extension est listée, il sera servi depuis la première directive location. Dans le cas contraire, nous considérons qu'il s'agit d'une URL réécrite. Il faut alors passer la requète à PHP via le second bloc location.
L'inconvénient de cette méthode, c'est que vous ne pourrez pas utiliser le script d'installation web puisque toutes les requètes ne concernant pas des fichiers statiques sont réécrites en /index.php/$uri et transférées à PHP. L'avantage, c'est qu'aucun appel direct à un fichier PHP, tel que config.php, n'est possible, ce qui est toujours une bonne chose.
Dans la mesure où StatusNet dispose d'un point d'entrée unique index.php et que nous avons la possibilité d'installer l'instance en ligne de commande, ce n'est pas dramatique de ne pas pouvoir utiliser l'installeur web.
Paramétrage de MySQL
Enfin, préparons MySQL:
Notez bien ces informations, vous en aurez besoin pour créer votre instance.
Installation de StatusNet
Il ne reste plus qu'à récupérer l'archive contenant le code de StatusNet et à mettre en place tout ça.
La dernière commande est importante: StatusNet a besoin de pouvoir écrire dans ces répertoires. Ils servent à stocker les éléments de personnalisation des utilisateurs.
Initialisation de l'instance
Il est maintenant temps de créer votre instance. Pour cela, nous allons exécuter une commande "magique":
Simple, mais efficace. Naturellement, vous veillerez à remplacer les valeurs en gras par les valeurs adaptées à votre environnement.
Vous pouvez maintenant prendre part au réseau StatusNet. Abonnez-vous à d'autres utilisateurs, sur identi.ca ou non. Bien entendu, vous pouvez également communiquer votre nom d'utilisateur: your_nickname@status.domain.tld ou votre URL StatusNet: http://status.domain.tld/your_nickname.
SingleUser mode
Vous vous souvenez de l'introduction ? Si vous pensez toujours être le seul utilisateur de votre instance, vous pouvez activer le mode SingleUser en modifiant le fichier de configuration de StatusNet:
Une fois la modification effectuée, il faut mettre à jour toutes les URL de profils. Vous pouvez le faire directement dans la base de données, mais le mieux est encore d'utiliser le script prévu pour:
Dans ce cas de figure, votre ID StatusNet est toujours your_nickname@status.domain.tld mais l'URL est plus simple: http://status.domain.tld/
À bientôt, pour d'autres aventures avec StatusNet. Nous verrons notamment comment optimiser votre instance, comment la sécuriser et comment la connecter à Twitter et bien d'autres choses.
Stay tuned and have fun !
Sources et références
StatusNet
- StatusNet
- http://status.net/open-source/
- http://status.net/wiki/
- Installation
- http://status.net/wiki/Installation
- Getting started
- http://status.net/wiki/Take_a_tour
- http://status.net/wiki/NoticeSymbols
NGinx
- Official website
- http://www.nginx.org/
- http://http://wiki.nginx.org/
PHP-FPM
- Official website
- http://www.php-fpm.org
- http://fr2.php.net/manual/en/install.fpm.php
