PHP avec le serveur d'applications NGINX unit
+
Par Remi le lundi 14 janvier 2019, 13:43 - HowTo - Lien permanent
Site officiel : NGINX Unit
Le dépôt officiel, pour RHEL et CentOS, fournit le module PHP pour la version de PHP dans les dépôts officiels (5.3 / 5.4).
Mon dépôt fournit les différentes versions du module, en paquet de base (unit-php) et en Software Collection (php##-unit-php).
Voici un petit tutoriel de test, permettant de créer 1 applications PHP par version disponible.
1. Installation du dépôt officiel
Pour créer le fichier de configuration du dépôt, voir CentOS Packages dans la documentation officielle.
Actuellement, les paquets sont uniquement disponible pour CentOS / RHEL 6 et 7.
Corrigé: le paquet unit est désormais aussi disponible dans mon dépôt, donc l'utilisation du dépôt officiel n'est plus obligatoire. Il intègre les changements des PR #212 et #215 en cours de revue.
2. Installation du dépôt remi
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
3. Installation du serveur et des modules
Installation du seveur NGINX unit et des différents modules PHP. Le paquet unit-php fournissant le module pour le php par défaut du système.
# yum install unit unit-php php56-unit-php php71-unit-php php72-unit-php php73-unit-php
4. Configuration de test
4.1 Préparation de la configuration
Cette configuration de test crée un listener pour chaque version de PHP, écoutant sur un port différent (8300, 8356, ...) et une application servant le dossier habituel des applications web.
Télécharger le fichier unit.config :
{ "applications": { "exphp": { "type": "php", "user": "nobody", "processes": 2, "root": "/var/www/html", "index": "index.php" }, "exphp56": { "type": "php 5.6", "user": "nobody", "processes": 2, "root": "/var/www/html", "index": "index.php" }, "exphp71": { "type": "php 7.1", "user": "nobody", "processes": 2, "root": "/var/www/html", "index": "index.php" }, "exphp72": { "type": "php 7.2", "user": "nobody", "processes": 2, "root": "/var/www/html", "index": "index.php" }, "exphp73": { "type": "php 7.3", "user": "nobody", "processes": 2, "root": "/var/www/html", "index": "index.php" } }, "listeners": { "*:8300": { "application": "exphp" }, "*:8356": { "application": "exphp56" }, "*:8371": { "application": "exphp71" }, "*:8372": { "application": "exphp72" }, "*:8373": { "application": "exphp73" } } }
4.2 Démarrage du service:
# systemctl start unit
4.3 Mise en place de la configuration
Le configuration se fait à travers d'une API REST :
# curl -X PUT --data-binary @unit.config --unix-socket /var/run/unit/control.sock http://localhost/config { "success": "Reconfiguration done." }
Et pour vérification de la configuration en place :
# curl --unix-socket /var/run/unit/control.sock http://localhost/config
5 Utilisation
Il désormais possible d'accéder à l'application sur les nouveau ports :
- http://localhost:8300/ pour le PHP par défaut
- http://localhost:8356/ pour le PHP version 5.6
- http://localhost:8372/ pour le PHP version 7.2
- etc
La page phpinfo affichera alors les informations, à noter: dans ce cas, le Serveur API est unit.
6. Conclusion
Comme il s'agit d'un serveur applicatif, on le placera derrière un frontal web (Apache HHTP server ou NGINX).
Le projet semble intéressant, mais est encore assez jeune (la première version 1.2 disponible sur github date de Juin 2018); on verra l'accueil fait par les utilisateurs.
Corrigé : il me semble que cet outil est particulièrement intéressant pour gérer plusieurs langages et plusieurs versions, donc idéal avec les Software Collections.
Commentaires
Billet corrigé : les RPM sont désormais aussi disponibles pour Fedora.
Lire : NGINX Unit 1.8.0 Is Now Available, Introduces Internal Routing