Comment exécuter plusieurs sites Web avec différentes versions PHP dans Nginx

Comment exécuter plusieurs sites Web avec différentes versions PHP dans Nginx

Parfois, les développeurs de PHP souhaitent créer et exécuter différents sites Web / applications en utilisant différentes versions de PHP sur le même serveur Web. En tant qu'administrateur système Linux, vous devez configurer un environnement où vous pouvez exécuter plusieurs sites Web en utilisant différentes versions PHP sur un seul serveur Web I.e. Nginx.

Dans ce tutoriel, nous vous expliquerons comment installer plusieurs versions de Php et configurer le serveur Web Nginx pour travailler avec eux via les blocs de serveur (hôtes virtuels en apache) dans Centos / Rhel 7 Distributions utilisant Lemp empiler.

Lire aussi: PYENV - Installez plusieurs versions Python pour un projet spécifique

Nginx les usages Php-fpm (représente FastCGI Process Manager), qui est une alternative Php fastcgi implémentation avec des fonctionnalités supplémentaires et utiles pour les sites Web fortement chargés.

Configuration de l'environnement de test

  1. Un serveur CentOS 7 ou Rhel 7 avec une installation minimale.
  2. Serveur nginx http.
  3. Php 7.1 (à utiliser comme version par défaut) et 5.6.
  4. Serveur de base de données MARIADB.
  5. Adresse IP du serveur: 192.168.56.dix.
  6. Sites Internet: Exemple 1.com et exemple2.com.

Étape 1: Installation et activation du référentiel EPEL et REMI

1. Commencez d'abord par installer et activer le Epel et Remi référentiel, qui propose les dernières versions de la Php pile Centos / Rhel 7 distribution.

# yum install https: // dl.fedoraproject.org / pub / epel / epel-libérer-LATEST-7.noarch.RPM # yum install http: // RPM.remirepo.Net / Enterprise / REMI-Release-7.RPM 

2. Installez ensuite le mium-utils package, qui étend les fonctionnalités natives de Yum et fournit Yum-Config-Manager Commande, qui est utilisée pour activer ou désactiver les référentiels YUM sur le système.

# yum install yum-utils 

Note: Sur Rhel 7 Vous pouvez activer le canal facultatif pour certaines dépendances en utilisant la commande suivante.

# abonnement-manager Repos --enable = rhel-7-server-optional-RPMS 

Étape 2: Installation du serveur Web Nginx

3. Pour installer la dernière version de Nginx, nous devons ajouter le référentiel Nginx officiel, créer un fichier nommé / etc / yum.se soustraire.d / nginx.repo.

# vi / etc / yum.se soustraire.d / nginx.repo 

Ajoutez les lignes suivantes pour déposer selon votre distribution.

--------------- Sur Centos 7 --------------- [nginx] name = nginx repo substanl = http: // nginx.org / packages / centos / 7 / $ basearch / gpgcheck = 0 activé = 1 --------------- Sur rhel 7 --------------- [nginx] name = nginx repo substanl = http: // nginx.org / packages / rhel / 7.x / $ basearch / gpgcheck = 0 activé = 1 

4. Une fois Nginx Repo ajouté, vous pouvez installer Nginx à l'aide de l'outil YUM Package Manager comme indiqué.

# yum install nginx 

Étape 3: Installation du serveur de base de données MARIADB

5. Pour installer la dernière version de MariaDB, nous devons ajouter le référentiel officiel MariADB, créer un fichier nommé / etc / yum.se soustraire.D / Mariadb.repo.

# vi / etc / yum.se soustraire.D / Mariadb.repo 

Ajoutez les lignes suivantes pour déposer selon votre distribution.

--------------- Sur Centos 7 --------------- [MariaDb] Nom = Mariadb Bustanl = http: // yum.mariadb.org / 10.2 / Centos7-AMD64 gpgkey = https: // yum.mariadb.org / rpm-gpg-key-mariadb gpgcheck = 1 --------------- Sur rhel 7 --------------- [MariaDb] Nom = Mariadb Bustanl = http: // yum.mariadb.org / 10.2 / rhel7-amd64 gpgkey = https: // yum.mariadb.org / rpm-gpg-key-mariadb gpgcheck = 1 

6. Une fois MariaDB Repo ajouté, vous pouvez installer MariADB à l'aide de l'outil YUM Package Manager comme indiqué.

# yum installer MariaDB-Client MariaDB-Server 

7. Ensuite, sécurisez l'installation du serveur de base de données à l'aide du script ci-dessous. Définir un mot de passe racine et une réponse y et presser [Entrer] Pour le reste des questions ultérieures pour désactiver la connexion de l'utilisateur racine à distance, supprimez les comptes de l'utilisateur anonyme et la base de données de tests qui, par défaut, peuvent être accessibles par tous les utilisateurs, même les utilisateurs anonymes.

# mysql_secure_installation 

Lire aussi: 12 meilleures pratiques de sécurité MySQL / MARIADB pour Linux

Étape 4: Installation de plusieurs versions de PHP

8. Pour installer différentes versions de PHP pour vos projets, utilisez Yum-Config-Manager commande pour installer plusieurs versions de PHP ainsi que la plupart des modules requis comme indiqué.

Installer php 7.1 version

# YUM-Config-Manager --Enable remi-php71 [par défaut] # yum install php php-commun php-fpm # yum install php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypty php-xml php-pecl-APC php-Cli php-pear php-pDo 

Installer php 5.6 version

# yum install php56 php56-php-common php56-php-fpm # yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbsstring php56-php- MCRYPT PHP56-PHP-XML PHP56-PHP-PECL-APC PHP56-PHP-CLI PHP56-PHP-PEAR PHP56-PHP-PDO 

9. Une fois installé PHP, vous pouvez utiliser la commande suivante pour vérifier la version par défaut de PHP utilisée sur votre serveur.

# php -v 
Vérifier la version PHP par défaut

Étape 5: Configuration de PHP-FPM et PHP56-PHP-FPM

dix. C'est la partie la plus intéressante de ce tutoriel, il explique comment vous pouvez réellement exécuter plusieurs versions PHP sur votre serveur. Ici, vous allez configurer les différentes versions de php-fpm que Nginx fonctionnera avec. Vous devez définir l'utilisateur / groupe des processus fastcgi ainsi que les ports sur lesquels ils écouteront.

Ce sont les deux fichiers de configuration suivants que vous allez modifier.

  • php-fpm (par défaut 7.1) - / etc / php-fpm.d / www.confli
  • php56-php-fpm - / opt / remi / php56 / root / etc / php-fpm.d / www.confli

Ouvrez les fichiers ci-dessus, définissez l'utilisateur / groupe de processus FastCGI.

# vi / etc / php-fpm.d / www.conf [php 7.1] # vi / opt / remi / php56 / root / etc / php-fpm.d / www.conf [php 5.6] 

Les valeurs par défaut doivent être apache, Changez-les en nginx comme montré.

utilisateur = groupe nginx = nginx 

11. Ensuite, trouvez les paramètres d'écoute et définissez le Adresse: port sur lequel les demandes de FastCGI seront reçues.

Écouter = 127.0.0.1: 9000 [php-fpm] écouter = 127.0.0.1: 9001 [php56-php-fpm] 

12. Une fois toute la configuration ci-dessus effectuée, vous devez démarrer et activer Nginx, Mariadb et Php-fpm pour démarrer automatiquement au démarrage du système.

# systemCTL Activer nginx # systemctl start nginx # systemctl activer mariaDB # systemctl start mariaDB ---------------- Php 7.1 ---------------- # SystemCTL Activer PHP-FPM # SystemCTL Start PHP-FPM ---------------- Php 5.6 ---------------- # SystemCTL Activer PHP56-PHP-FPM # SystemCTL Démarrer PHP56-PhP-FPM 

Attention: Au cas où vous obtenez des erreurs tout en démarrant la deuxième instance de PHP, php56-php-fpm, Une politique de Selinux pourrait le bloquer depuis le démarrage. Si SELINUX est dans mode d'application, Réglez-le sur mode permissif, Ensuite, essayez de recommencer le service.

# getenforce # setenforce 0 

Étape 6: Configuration des sites Web avec autorisations

13. À ce stade, vous pouvez désormais créer les répertoires nécessaires pour vos sites Web sous / var / www / html /. Vous devez également créer des répertoires pour stocker des journaux comme suit:

---------------- Site Web 1 ---------------- # mkdir -p / var / www / html / example1.com / # mkdir -p / var / log / nginx / example1.com / ---------------- Site Web 2 ---------------- # mkdir -p / var / www / html / example2.com / # mkdir -p / var / log / nginx / example2.com / 

14. Définissez les autorisations de propriété appropriées sur tous les répertoires.

---------------- Site Web 1 ---------------- # chown -r racine: nginx / var / www / html / example1.com / # chmod -r 755 / var / www / html / example1.com / # chown -r root: nginx / var / log / nginx / example1.com / # chmod -r 660 / var / log / nginx / example1.com / ---------------- Site Web 2 ---------------- # chown -r root: nginx / var / www / html / example2.com / # chmod -r 755 / var / www / html / example2.com / # chown -r root: nginx / var / log / nginx / example2.com / # chmod -r 660 / var / log / nginx / example2.com / 

Étape 7: Configuration des blocs de serveur Nginx pour les sites Web

15. Configurez maintenant comment Nginx traitera les demandes de vos sites Web à l'aide des fichiers de configuration de bloc de serveur qui devraient être situés dans / etc / nginx / confre.d/.

Créez les fichiers de configuration pour vos sites Web se terminant par .confli extension.

# vi / etc / nginx / confr.D / Exemple1.com.conf # vi / etc / nginx / confr.d / example2.com.confli 

Collez ensuite les configurations de blocs du serveur suivant dans les fichiers respectifs.

Site Web 1

Configuration par exemple1.com
Server écouter 80; SERVER_NAME Exemple1.com www.Exemple 1.com; root / var / www / html / example1.com /; Index index.index PHP.index html.htm; #Charset KOI8-R; Access_log / var / log / nginx / example1.com / example1_access_log; error_log / var / log / nginx / example1.com / example1_error_log error; Emplacement / try_files $ uri $ uri / / index.php?$ query_string;  # Passez les scripts PHP à FastCGI Server écoutant sur 127.0.0.1: 9000 Localisation ~ \.php $ root / var / www / html / example1.com /; fastcgi_pass 127.0.0.1: 9000; Port #set pour PHP-FPM à écouter sur l'index FastCGI_INDEX.PHP; fastcgi_param script_filename $ document_root $ fastcgi_script_name; Inclure FastCGI_PARAMS; include / etc / nginx / fastcgi_params;  

Site Web 2

Configuration par exemple2.com
Server écouter 80; Server_name Exemple2.com www.exemple2.com; root / var / www / html / example2.com /; Index index.index PHP.index html.htm; #Charset KOI8-R; Access_log / var / log / nginx / example2.com / example2_access_log; error_log / var / log / nginx / example2.com / example2_error_log error; Emplacement / try_files $ uri $ uri / / index.php?$ query_string;  # Passez les scripts PHP à FastCGI Server écoutant sur 127.0.0.1: 9000 Localisation ~ \.php $ root / var / www / html / example2.com /; fastcgi_pass 127.0.0.1: 9001; Port #set pour php56-php-fpm pour écouter sur index rapide.PHP; fastcgi_param script_filename $ document_root $ fastcgi_script_name; Inclure FastCGI_PARAMS; include / etc / nginx / fastcgi_params;  

16. Assurez-vous que vous avez la ligne suivante dans la partie de clôture du bloc HTTP dans / etc / nginx / nginx.confli. Il aide à inclure tous les fichiers de configuration à l'intérieur du / etc / nginx / confre.d/ Répertoire lorsque Nginx est en cours d'exécution.

inclure / etc / nginx / confre.d/*.conf; 

Étape 8: tester différentes versions PHP

17. Enfin, vous devez tester que votre serveur utilise les deux versions de PHP. Vous pouvez créer un très basique Info.php script dans les répertoires racine du document de vos sites Web comme indiqué.

# echo ""> / var / www / html / example1.com / info.php # echo ""> / var / www / html / example2.com / info.php 

18. Pour appliquer toutes les modifications que vous avez apportées ci-dessus, vous devez redémarrer Nginx, php-fpm et php56-php-fpm. Mais vous pouvez d'abord vérifier que les fichiers de configuration Nginx pour toutes les erreurs de syntaxe avant de le faire.

# nginx -t # systemctl redémarrer nginx php-fpm php56-php-fpm 
Vérifiez la configuration de Nginx

19. Il y a une autre dernière chose à faire, surtout si vous exécutez votre serveur localement, vous devez configurer les DN locaux en utilisant / etc / hôtes fichier comme indiqué dans la capture d'écran ci-dessous.

192.168.56.10 Exemple1.com exemple1 192.168.56.10 Exemple2.com exemple2 
Ajouter un fichier de sites Web

20. Enfin, ouvrez un navigateur Web et saisissez les adresses suivantes pour vérifier les versions de PHP installées sur le système.

http: // exemple1.com / index.php http: // exemple2.com / index.php 
Vérifiez PHP 7.1 version Vérifiez PHP 5.6 version

C'est ça! Vous pouvez maintenant déployer des fichiers et tester des sites Web avec différentes versions PHP. Si vous avez des ajouts à faire ou des questions à poser, utilisez le formulaire de commentaire ci-dessous.