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.