Maison >développement back-end >tutoriel php >Comment exécuter plusieurs versions de PHP sur un serveur
Dans cet article particulier, nous ferons la démonstration d'une solution pour installer plusieurs versions de PhalCon et PHP et les exécuterons sur un seul serveur Web. PHP 5.5.x et 5.6.x seront utilisés ici, mais vous pouvez les remplacer par d'autres versions. Tous les serveurs qui prennent en charge PHP-FPM devraient être suffisants, mais nous vous recommandons d'utiliser Nginx. L'environnement utilisé dans ce tutoriel est Fedora OS - un système Linux, mais les instructions sont presque identiques pour tout autre * Nix OS.
Ce tutoriel couvrira l'installation de PHP 5.5.x avec Phalcon 1.3.x et PHP 5.6.x avec Phalcon 2.0.0. Nous allons également créer des extensions de PHP supplémentaires telles que APC, Memcache, Memcached et Ioncube.
nginx est un package disponible dans Fedora OS que nous pouvons installer comme suit:
sudo yum install nginx
Ensuite, nous créons les liens de démarrage système pour nginx et le commençons
sudo chkconfig nginx on sudo service nginx start
Avant de commencer par PHP, nous devons installer les conditions préalables à la construction de PHP5:
Sur CentOS / Fedora, vous pouvez installer tous ces éléments avec la commande suivante:
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
Ensuite, nous devons obtenir son code source. Il existe deux façons de le faire: vous pouvez soit télécharger une archive à partir de la page de téléchargement de PHP, soit cloner le référentiel Git de GitHub.
Nous vous recommandons de consulter le code source de GIT, car il vous fournit un moyen facile de garder votre installation à jour et d'essayer votre code avec différentes versions. Un paiement GIT est également requis si vous souhaitez soumettre des correctifs ou des demandes de tir pour PHP.
Pour cloner le référentiel, exécutez les commandes suivantes dans votre terminal:
sudo yum install nginx
Par défaut, vous serez sur la branche maître, donc si vous souhaitez passer à une version de développement, vous devez consulter la branche stable. Par exemple.
sudo chkconfig nginx on sudo service nginx start
Avant d'aller aux étapes de construction individuelles, nous devons exécuter certaines commandes pour une version PHP «par défaut». Ceci n'est nécessaire que pour les constructions à partir de git.
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
./ buildConf génère le script de configuration. Cela peut prendre plusieurs minutes.
À mon avis, le stockage de l'ensemble du serveur Web dans un seul répertoire est le meilleur, donc j'utilise / opt ici. Ouvrez le terminal et tapez la commande suivante.
sudo mkdir /opt/source && cd /opt/source git clone git@github.com:php/php-src.git && cd php-src
Une fois le script ./configure généré via l'étape ci-dessus, vous pouvez l'utiliser pour personnaliser votre version PHP. Vous pouvez répertorier toutes les options prises en charge en utilisant –Help:
<span> PHP 5.3: git checkout PHP-5.3 </span><span> PHP 5.4: git checkout PHP-5.4 </span><span> PHP 5.6: git checkout PHP-5.6 </span><span> PHP HEAD: git checkout master </span>
La commande ci-dessus répertorie diverses options génériques, qui sont prises en charge par tous les scripts de configuration basés sur AutoCONF. L'un d'eux est déjà mentionné –prefix = dir, qui modifie le répertoire d'installation utilisé par Make Installer. Une autre option utile est -C, qui mettra en cache le résultat de divers tests dans le fichier config.cache et accélérera les appels ./configure. L'utilisation de cette option n'a de sens qu'une fois que vous avez déjà une version de travail et que vous souhaitez changer rapidement entre différentes configurations.
Voici quelques paramètres utiles:
sudo ./buildconf
Après avoir terminé la préparation, nous installons la version PHP 5.6. Exécutez ce qui suit:
sudo mkdir -p /opt/php-5.6 sudo mkdir -p /opt/php-5.5
Le dernier commutateur (–Enable-FPM) fait fonctionner cette version PHP avec PHP-FPM. Si vous souhaitez utiliser cette version PHP-FPM avec Apache, veuillez utiliser --with-fpm-user = apache et --with-fpm-group = apache. D'un autre côté, si vous souhaitez utiliser cette version php-fpm avec nginx, veuillez utiliser --with-fpm-user = nginx et --with-fpm-group = nginx.
Un message réussi doit être imprimé dans le terminal comme SO:
./configure --help
Maintenant, vous pouvez utiliser Make pour effectuer la compilation réelle:
[...] Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] [...]
Le résultat principal de cette opération sera les binaires PHP pour les SAPIS activés (par défaut SAPI / CLI / PHP et SAPI / CGI / PHP-CGI), ainsi que des extensions partagées dans les modules / répertoire.
Maintenant, vous pouvez exécuter «Faire installer» pour installer PHP dans / usr / local (par défaut) ou d'autres répertoires en utilisant la configuration - préfixe. Dans ce cas, c'est /opt/php-5.6
./configure \ --prefix=/opt/php-5.6 \ --with-pdo-pgsql \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --with-pgsql \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libdir=lib64 \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib/ --enable-fpm
Veuillez noter que la création de l'installation ne créera pas de fichier INI.
[...] creating libtool appending configuration tag "CXX" to libtool Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands
Copier Php.ini et PHP-FPM.Conf dans le répertoire correct:
make
nous vérifions et vérifions la version PHP une fois de plus.
sudo yum install nginx
ouvrir /opt/php-5.6/etc/php-fpm.conf et ajuster les paramètres dans la ligne d'écoute. Vous devez passer à un port inutilisé (par exemple 9001; le port 9000 peut être utilisé par Fedora)
sudo chkconfig nginx on sudo service nginx start
sudo yum install gcc libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel bison gcc make
Vous voudrez probablement créer un script init pour votre nouveau PHP-FPM. Heureusement, PHP 5.3 le fournit déjà pour vous, copiez simplement le script init dans votre répertoire et modifiez les autorisations:
sudo mkdir /opt/source && cd /opt/source git clone git@github.com:php/php-src.git && cd php-src
Votre script init est prêt. Maintenant, vous pouvez démarrer, arrêter et recharger PHP-FPM:
<span> PHP 5.3: git checkout PHP-5.3 </span><span> PHP 5.4: git checkout PHP-5.4 </span><span> PHP 5.6: git checkout PHP-5.6 </span><span> PHP HEAD: git checkout master </span>
Nous ouvrons le terminal et tapons la commande suivante.
sudo ./buildconf
Pour installer plusieurs versions de PhalCon, y compris Phalcon 2.0, nous devons installer Zephir
sudo mkdir -p /opt/php-5.6 sudo mkdir -p /opt/php-5.5
Il existe de nombreuses façons d'installer des extensions de PHP. Nous utiliserons Phpize Build It.
phpize joue un rôle similaire à celle du script ./BuildConf utilisé pour les builds PHP: d'abord, il importera le système de build PHP dans votre extension en copiant des fichiers à partir de $ prefix / lib / php / build. Parmi ces fichiers figurent Acinclude.M4 (PHP M4 Macros), phpize.m4 (qui sera renommé configurer.in dans votre extension et contient les instructions de construction principales) et les tests de runs.php.
Ensuite, Phpize invoquera AutoConf pour générer un fichier ./configure, qui peut être utilisé pour personnaliser la construction d'extension. Comme l'installation memcached, vous devez ajouter --enable-memcache.
Rappelez-vous! Vous devez spécifier l'option --with-php-config lors de la création des extensions (sauf si vous n'avez qu'une seule installation globale de PHP). Sinon ./configure ne pourra pas déterminer correctement la version PHP et les indicateurs. De plus, le script PHP-Config garantit également que la commande «Making Installer» déplacera le fichier * .so généré vers le répertoire d'extension de droite.
./configure --help
Veuillez vérifier s'il réussit ou non
[...] Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] [...]
Une fois l'extension installée. Vous devez toujours l'activer en l'incluant dans le fichier php.ini.
./configure \ --prefix=/opt/php-5.6 \ --with-pdo-pgsql \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --with-pgsql \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-mysql \ --with-pdo-mysql \ --with-mysqli \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libdir=lib64 \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib/ --enable-fpm
[...] creating libtool appending configuration tag "CXX" to libtool Generating files configure: creating ./config.status creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. config.status: creating php5.spec config.status: creating main/build-defs.h config.status: creating scripts/phpize config.status: creating scripts/man1/phpize.1 config.status: creating scripts/php-config config.status: creating scripts/man1/php-config.1 config.status: creating sapi/cli/php.1 config.status: creating sapi/fpm/php-fpm.conf config.status: creating sapi/fpm/init.d.php-fpm config.status: creating sapi/fpm/php-fpm.service config.status: creating sapi/fpm/php-fpm.8 config.status: creating sapi/fpm/status.html config.status: creating sapi/cgi/php-cgi.1 config.status: creating ext/phar/phar.1 config.status: creating ext/phar/phar.phar.1 config.status: creating main/php_config.h config.status: executing default commands
Nous vérifions à nouveau pour nous assurer que l'installation est réussie
make
sudo make install
La configuration suivante créera deux serveurs: le phalcon-prd.localhost s'exécute sur PHP 5.5.x et Phalcon-Dev.LocalHost fonctionne avec PHP 5.6.x. Ceci est un exemple, vous pouvez le personnaliser à tout ce que vous voulez, voir la documentation Nginx
/opt/php-5.6/bin/php --ini Configuration File (php.ini) Path: /opt/php-5.6/lib Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none)
Si vous utilisez un système Linux, vous pouvez modifier le fichier hôte:
sudo cp <span>/opt/source/php-src/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf </span>sudo cp <span>/opt/source/php-src/php.ini-production /opt/php-5.6/lib/php.ini</span>
Le nouveau fichier hôte ressemblera.
/opt/php-5.6/bin/php --ini Configuration File (php.ini) Path: /opt/php-5.6/lib Loaded Configuration File: /opt/php-5.6/lib/php.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) ### Checking php /opt/php-5.6/bin/php --version PHP 5.6.2-dev (cli) (built: Oct 2 2014 17:20:23) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
Celui-ci intercepte toutes les demandes de phalcon-dev.localhost et phalcon-pd.localhost les envoie ensuite à votre serveur.
Pour les tests, nous créons un nouveau fichier appelé test.php et le mettons dans le dossier correspondant à la configuration ci-dessus de Nginx. Dans chaque fichier, nous ajoutons la commande suivante.
sudo yum install nginx
Maintenant, exécutant le fichier test.php dans chaque serveur, nous voyons un phalcon 1.3.x phpinfo () sur http: //phancon-pd.localhost/test.php pendant http: //phancon-dev.localhost /test.php Il devrait y avoir phpinfo () de phalcon 2.0.x.
Dans ce tutoriel, nous avons appris comment nous pouvons facilement avoir plusieurs versions exécutées activement de PHP sur notre serveur, chacune avec son propre ensemble d'extensions différentes si nécessaire. Cela peut être utile si vous effectuez un hébergement partagé, ou si vous devez prendre en charge les applications héritées anciennes tout en étant en mesure de développer et de se déployer sur des versions de pointe, par exemple.
Laissez vos commentaires dans les commentaires ci-dessous et, comme toujours, partagez cet article si vous l'avez aimé!
Pour exécuter plusieurs versions PHP sur un serveur en utilisant Apache et PHP-FPM sur Ubuntu 18.04, vous devez Installez les versions PHP requises et Apache. Ensuite, vous devez configurer Apache pour utiliser la version PHP-FPM pour chaque site. Vous pouvez le faire en modifiant le fichier de configuration Apache pour chaque site et en définissant la directive ProxyPassMatch pour utiliser le pool PHP-FPM correct. Après cela, vous devez créer un pool PHP-FPM pour chaque version PHP. Enfin, redémarrez Apache et PHP-FPM pour appliquer les modifications.
Vous pouvez basculer entre différentes versions PHP sur votre serveur à l'aide du A2ENMOD et les commandes A2Dismod. La commande A2ENMOD permet un module et la commande A2Dismod désactive un module. Pour passer à une version PHP différente, vous devez désactiver la version PHP actuelle et activer la version PHP souhaitée. Après cela, vous devez redémarrer Apache pour appliquer les modifications.
Pour exécuter différents sites Web avec différentes versions de PHP, vous devez Configurez chaque site Web pour utiliser une version PHP différente. Vous pouvez le faire en modifiant le fichier de configuration Apache pour chaque site Web et en définissant la directive ProxyPassMatch pour utiliser le pool PHP-FPM correct. Après cela, vous devez créer un pool PHP-FPM pour chaque version PHP. Enfin, redémarrez Apache et PHP-FPM pour appliquer les modifications.
Pour installer plusieurs versions PHP sur Fedora 35 en utilisant Apache et PHP-FPM, vous devez installer les versions PHP requises et Apache. Ensuite, vous devez configurer Apache pour utiliser la version PHP-FPM pour chaque site. Vous pouvez le faire en modifiant le fichier de configuration Apache pour chaque site et en définissant la directive ProxyPassMatch pour utiliser le pool PHP-FPM correct. Après cela, vous devez créer un pool PHP-FPM pour chaque version PHP. Enfin, redémarrez Apache et PHP-FPM pour appliquer les modifications.
Vous pouvez utiliser PHPENV pour gérer plusieurs versions PHP en installant PHPENV et le Versions PHP requises. Ensuite, vous pouvez utiliser la commande phPENV pour basculer entre différentes versions PHP. Vous pouvez également utiliser la commande PHPENV Global pour définir la version globale PHP, et la commande locale PHPENV pour définir la version PHP locale pour un répertoire spécifique.
Vous pouvez vérifier la version PHP actuelle sur votre serveur en exécutant la commande php -v dans le terminal. Cette commande affichera la version PHP actuelle et d'autres informations sur l'installation PHP.
Vous pouvez installer une version PHP spécifique sur votre serveur En utilisant la commande APT-Get Installer suivie du nom du package pour la version PHP souhaitée. Par exemple, pour installer PHP 7.2, vous exécuteriez la commande apt-get installer php7.2.
Vous pouvez configurer Apache pour Utilisez une version PHP spécifique en modifiant le fichier de configuration Apache et en définissant la directive ProxyPassMatch pour utiliser le pool PHP-FPM correct. Après cela, vous devez redémarrer Apache pour appliquer les modifications.
Vous pouvez créer un pool PHP-FPM pour un Version PHP spécifique en créant un nouveau fichier de configuration de pool dans le répertoire /etc/php/7.2/fpm/pool.d/. Le fichier de configuration doit contenir les paramètres du pool PHP-FPM, tels que l'adresse d'écoute et le port, l'utilisateur et le groupe, ainsi un serveur?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!