Je migre un très vieux serveur (Debian etch) vers Debian Stretch et chaque application développée a des problèmes PHP, c'était prévu. Certains peuvent être corrigés, d'autres non (comme plusieurs sites drupal 6). À l'avenir, une seule application sera servie sous PHP7.0 mais jusqu'à ce jour, j'ai besoin de PHP5.3 pour les servir.
Je sais que Debian stretch a une sorte de support "natif" pour les versions PHP co-installables mais tous les exemples que j'ai trouvés sont avec PHP5.6 (version de Jessie): https://pehapkari.cz/blog/2017/03/27 / plusieurs-versions-php-the-easy-way /
J'ai également trouvé quelques exemples de PHP5.3 et PHP5.4 ou PHP5.6 fonctionnant ensemble sur Debian Jessie, Wheezy, etc. mais pas pour Debian Stretch (PHP7.0): /superuser/913792 / php-5-3-10-sur-debian-jessie
Donc, tout d'abord, j'ai besoin de savoir s'il est possible que PHP7.0 et PHP5.3 travaillent ensemble sur apache2 sur Debian Stretch.
Deuxièmement, j'ai besoin de comprendre comment cela peut être fait .
Je ne suis pas administrateur système, donc mes connaissances Debian grandissent de jour en jour à partir de zéro.
Je vous remercie.
Réponses:
Je suis tombé sur un problème similaire et j'ai réussi à le faire fonctionner.
J'ai dû installer un serveur avec debian 9 / nginx / php5.4, donc même s'il ne correspond pas exactement à vos prérequis, je suppose que la solution est similaire. Je vais énumérer les mesures que j'ai prises qui l'ont résolu pour moi.
Fondamentalement, vous devez installer php à partir des sources, et cela pose un problème si vous avez besoin du support openssl (--with-openssl), car les anciennes versions de PHP (<7.0) ne supportent pas openssl> = 1.1.0, ce qui est la valeur par défaut dans debian 9. Vous devez donc construire une ancienne version openssl (j'ai pris 1.0.1u).
Mais installons d'abord quelques dépendances.
Ensuite, nous construirons openssl.
En guise de réaction en chaîne, vous devrez construire libcurl et libc-client (pour le support imap) avec votre openssl fraîchement construit. Nous allons commencer par libcurl.
Ensuite, libc-client. J'ai en fait utilisé les sources de debian 8, car il comprenait des correctifs. La construction elle-même a échoué mais a quand même produit c-client.a, ce qui est tout ce dont j'avais besoin.
Avec cela, j'avais tout ce dont j'avais besoin pour construire PHP5.4. Veuillez noter que j'avais un avertissement pour les liaisons postgresql lors de la compilation (en raison de l'inadéquation de la version locale vs système openssl), donc je pense que vous devrez créer votre propre libpq si vous souhaitez les utiliser.
Les seules choses qui restent sont la création de fichiers php.ini et php-fpm.conf, qui sont à la fois triviaux, la configuration de la socket php-fpm et la création d'un initscript (il y a beaucoup d'exemples en ligne, je ne peux pas poster le fichier complet ici), et la configuration de votre serveur web (fastcgi sur socket).
la source
/usr/local/imap-2007f/ipopd/ipop2d.c
Une semaine plus tard, j'ai réussi à le faire fonctionner mais d'une manière différente. J'ai arrêté de jouer avec l'hôte et j'ai commencé à apprendre comment Docker peut me sauver la vie.
Ce message m'a donné la clé: Docker - Exécuter Apache sur l'hôte et le conteneur pour différents sites Web
Ma lecture iniciatique sur Docker était celle-ci: Développement Web PHP avec Docker
En résumé, je n'ai pas besoin d'installer apache2.2 et PHP5.3 sur mon serveur hôte, je peux avoir un conteneur isolé où je peux installer tout ce dont j'ai besoin (généralement un service) et oublier les incompatibilités possibles avec la version du système d'exploitation hôte. Docker gère tout cela. Je peux donc avoir un conteneur avec apache 2.2 + PHP 5.3 comme ce serait dans un OS Debian Squeeze. Un autre conteneur avec apache 2.2 + PHP 5.4 comme ce serait dans un Wheezy, un autre avec apache 2.4 + PHP7.0 comme dans Stretch et ainsi de suite. Tous travaillent en même temps et desservent différents domaines. Pour atteindre ce dernier, faites apache / nginx sur l'hôte pour fonctionner comme proxy inverse en redirigeant chaque domaine vers un conteneur apache-php différent grâce au mappage de port docker. Vous n'avez même pas besoin d'avoir apache / nginx sur l'hôte, il peut également être dans un conteneur.
La méthode docker consiste à avoir chaque (micro) service dans un conteneur, afin que vous puissiez avoir mariaDB dans un autre conteneur, etc.
Mes étapes (résumées): ( je ne peux pas poster plus que sur des liens, quand j'aurai assez de réputation je les éditerai et les ajouterai )
0 - Lisez à propos de docker (le plus sera le mieux): comment créer des images avec le Dockerfile , les meilleures pratiques , la mise en réseau au sein du docker, ...
1 - Installez Docker: suivez toujours le guide officiel .
2 - Créez un répertoire avec votre futur nom d'image (/ home / user / docker / images / apache22php53 par exemple), à l'intérieur créez votre Dockerfile et configs (virtualhost conf dans ce cas) mon Dockerfile était:
Dans le répertoire, placez votre fichier de configuration virtualhost dans le chemin: conf / apache / virtualhosts /
3 - construire l'image avec (cd précédent dans le répertoire):
4 - lancez le conteneur avec:
Docker mappera (-p) le port hôte 2253 au port de conteneur 80. Nous montons (-v) également notre racine de document hôte (/ var / www / html) dans la racine du document apache-container (dans squeeze est / var / www). Ils définissent également le nom du conteneur (--name).
5 - ssh to container avec:
et lancez apache si nécessaire (comme dans mon cas). "exit" pour revenir à l'hôte cli.
6 - accédez à ... votredomaine.com: 2253 et vous devriez voir votre apache fonctionner avec PHP5.3 chargé.
Ce sont les bases. Après cela, vous apprendrez comment monter des données d'hôte (www, bases de données, etc.) à l'intérieur de conteneurs, comment les conteneurs peuvent communiquer entre eux et avec l'hôte (adresses IP privées dans le réseau de docker), comment utiliser docker-compose pour configurer plusieurs conteneurs à la fois (Web, base de données, etc.), proxy inverse pour plusieurs serveurs Web de conteneurs, etc.
la source