logo site
SpipFactory.fr
Slogan du site

C’est une plateforme d’hébergement autogéré en association de loi 1901. Propulsée par la mutualisation de Spip, sous habillage Escal

logo article ou rubrique
LAMP ; Installation,configuration avec différentes versions PHP

Introduction

Qu’est ce qu’un serveur LAMP ?
- L’acronyme "LAMP"’

  • L : pour Linux, le système d’exploitation du serveur (GNU/Linux)
  • A : pour Apache, le serveur web permettant d’exécuter les applications et sites web
  • M : pour MySQL ou MariaDB, le serveur de base de données qui hébergera les données de vos applications et sites
  • P : pour PHP, Perl ou Python, les langages de développement utilisés au sein de vos applications et sites

Un serveur LAMP s’exécute sous système d’exploitation Linux, et permet, grâce à un serveur Apache, d’exécuter des applications et sites webs développés généralement grâce au langage de développement PHP et dont les données peuvent être stockées en local grâce aux serveurs de base de données MySQL ou MariaDB .

Rappel :

  • Wamp n’existe pas sous Linux car Wamp veut dire : « Windows Apache Mysql PHP » C’est donc pour Windows, sous Linux on a donc le droit a Lamp « Linux Apache Mysql PHP ».

Prérequis

  • Avoir très peu de connaissance de base Linux et le shell (console de commande)
  • Disposer d’une machine avec un système d’exploitation linux

"Nettoyer" & "Mettre a jour" sa machine au cas ou

- Supprimer un LAMP qui trainerais
sudo apt remove --purge apache* mysql-server* php*

  • Supprimer le cache des paquets périmés :
       sudo apt-get autoclean
  • Supprimer tout le cache :
       sudo apt-get clean
  • Supprimer les paquets installés comme dépendances et devenus inutiles :
       sudo apt-get autoremove
  • Les résidus des logiciels supprimés
    Depuis un terminal avec la commande suivante
    [[ $(dpkg -l | grep ^rc) ]] && sudo dpkg -P $(dpkg -l | awk '/^rc/{print $2}') || echo "pas de paquets à purger"

- mise à jour proprement dite (toutes les mises à jour disponibles seront faites, d’où la mention full-upgrade) :
sudo apt full-upgrade

il est bon a savoir que pour sudo a la demande de mot de passe, il s’agit du mot de passe root.

Comment installer Apache, MySQL, PHP (AMP) avec PhpMyAdmin

- Grâce aux dépendances des paquets, cette opération peut se faire en une seule fois :

  • Remarque : Vérifiez que la case "Traiter les paquets recommandés comme des dépendances" soit cochée dans Synaptic, configuration, préférences.

Exécutez :
sudo apt-get install phpmyadmin mysql-server

vous constatez que c’est les version les plus récentes qui s’intallerons

Pour les écrans qui vont suivre rappel de quelques commande :

  • Tab , permet de déplacer le curseur
  • barre d’espace de sélectionner
  • Entré pour valider.

Pour finaliser votre serveur, il vous faudra créer un nouvel utilisateur et lui attribuer tous les privilèges, pour l’accès global aux bases de données

sudo mysql

Puis dans la console MySQL :

GRANT ALL ON *.* TO 'nom_utilisateur_choisi'@'localhost' IDENTIFIED BY 'mot_de_passe_solide' WITH GRANT OPTION;
FLUSH PRIVILEGES;
QUIT;

En remplaçant évidemment nom_utilisateur_choisi et mot_de_passe_solide dans cette requête.

Notre serveur LAMP est opérationnel

VÉRIFICATION D’USAGE

APACHE
apache2 : le paquet permettant l’installation du serveur Apache permettant d’héberger et exécuter vos applications web,ainsi que sa documentation

vous pouvez vérifier en vous rendant sur votre page d’accueil en accédant au lien :

http://localhost

Il est possible de vérifier que le service Apache fonctionne correctement en console en utilisant la commande suivante :
sudo service apache2 status

La mention active (running) doit apparaître.

● apache2.service - The Apache HTTP Server
Loaded : loaded (/lib/systemd/system/apache2.service ; enabled ; vendor preset : enabled)
Drop-In : /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active : active (running) since Thu 2019-06-06 19:49:21 CEST ; 17min ago
Main PID : 15438 (apache2)
Tasks : 7 (limit : 4545)
CGroup : /system.slice/apache2.service
├─15438 /usr/sbin/apache2 -k start
├─16055 /usr/sbin/apache2 -k start
├─16056 /usr/sbin/apache2 -k start
├─16057 /usr/sbin/apache2 -k start
├─16058 /usr/sbin/apache2 -k start
├─16059 /usr/sbin/apache2 -k start
└─16209 /usr/sbin/apache2 -k start

Apache peut se gérer comme suit :

service apache2 start => permet de démarrer le service
service apache2 stop => permet d’arrêter le service
service apache2 restart => permet de relancer ou recharger le service

MYSQL
mysql-server : comme son nom l’indique, ce paquet permet l’installation du serveur de base de données MySQL

Pour tester l’accès à votre base de données, voici la commande à utiliser dans votre terminal :

mysql -u root -p

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
bla bla bla ...
mysql>

pour sortir
exit

PHP
php : le paquet permettant l’installation de PHP sur votre système. Il est important de noter que sans version renseignée c’est la plus récente et la plus stable de PHP qui sera installée.

Pour tester l’installation, dans le répertoire /var/www/html,
cd /var/www/html

créez le fichier test.php avec le contenu suivant :
sudo nano test.php

Insérez dedans :

<?php
phpinfo();
?>

Enregistrer (ctrl+x, Oui et entré)
Accédez ensuite au fichier via le navigateur : http://localhost/test.php.

PHPMYADMIN
permettre d’avoir une vision sur nos bases de données directement depuis un navigateur internet.

Féliciations ! Vous pouvez dorénavant accéder à phpMyAdmin via l’url :

http://localhost/phpmyadmin

configuration avec différentes versions PHP

  • Un module d’apache nécessaire à ce type de conf "cgi"
    il faudra utiliser l’un ou l’autre en fonction de votre version linux

sudo apt install apache2 libapache2-mod-fastcgi
Lecture des listes de paquets... Fait
Construction de l’arbre des dépendances
Lecture des informations d’état... Fait
Aucune version du paquet libapache2-mod-fastcgi n’est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu’il est devenu obsolète
ou qu’il n’est disponible que sur une autre source

E : Le paquet « libapache2-mod-fastcgi » n’a pas de version susceptible d’être installée

ok alors on passe par
sudo apt install apache2 libapache2-mod-fcgid
Les NOUVEAUX paquets suivants seront installés :
libapache2-mod-fcgid
Dépaquetage de libapache2-mod-fcgid (1:2.3.9-1) ...
Paramétrage de libapache2-mod-fcgid (1:2.3.9-1) ...
apache2_invoke : Enable module fcgid

  • Activer les modules d’apache :
    sudo a2enmod actions fcgid alias proxy_fcgi
  • L’install php des versions dont j’ai besoin
    me permettre de dépanner, testerle CMS "SPIP" toute versions
    sudo apt install php5.6 php5.6-fpm
    sudo apt install php7.1 php7.1-fpm
    sudo apt install php7.2 php7.2-fpm
  • Vérifier l’installation
    sudo systemctl status php5.6-fpm

    ● php5.6-fpm.service - The PHP 5.6 FastCGI Process Manager
    Loaded : loaded (/lib/systemd/system/php5.6-fpm.service ; enabled ; vendor preset : enabled)
    Active : active (running) since Mon 2019-06-10 23:15:01 CEST ; 16s ago
    Docs : man:php-fpm5.6(8)
    Main PID : 3082 (php-fpm5.6)
    Status : "Processes active : 0, idle : 2, Requests : 0, slow : 0, Traffic : 0req/sec"
    Tasks : 3 (limit : 4545)
    CGroup : /system.slice/php5.6-fpm.service
    ├─3082 php-fpm : master process (/etc/php/5.6/fpm/php-fpm.conf)
    ├─3083 php-fpm : pool www
    └─3084 php-fpm : pool www

    sudo systemctl status php7.1-fpm

    ● php7.1-fpm.service - The PHP 7.1 FastCGI Process Manager
    Loaded : loaded (/lib/systemd/system/php7.1-fpm.service ; enabled ; vendor preset : enabled)
    Active : active (running) since Tue 2019-06-11 08:11:37 CEST ; 2min 0s ago
    Docs : man:php-fpm7.1(8)
    Main PID : 16484 (php-fpm7.1)
    Status : "Processes active : 0, idle : 2, Requests : 0, slow : 0, Traffic : 0req/sec"
    Tasks : 3 (limit : 4545)
    CGroup : /system.slice/php7.1-fpm.service
    ├─16484 php-fpm : master process (/etc/php/7.1/fpm/php-fpm.conf)
    ├─16507 php-fpm : pool www
    └─16508 php-fpm : pool www

    sudo systemctl status php7.2-fpm

    ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
    Loaded : loaded (/lib/systemd/system/php7.2-fpm.service ; enabled ; vendor preset : enabled)
    Active : active (running) since Tue 2019-06-11 08:12:56 CEST ; 1min 43s ago
    Docs : man:php-fpm7.2(8)
    Main PID : 23722 (php-fpm7.2)
    Status : "Processes active : 0, idle : 2, Requests : 0, slow : 0, Traffic : 0req/sec"
    Tasks : 3 (limit : 4545)
    CGroup : /system.slice/php7.2-fpm.service
    ├─23722 php-fpm : master process (/etc/php/7.2/fpm/php-fpm.conf)
    ├─23723 php-fpm : pool www
    └─23724 php-fpm : pool www

on active le module
sudo a2enmod fcgid alias proxy_fcgi

Module fcgid already enabled
Module alias already enabled
Considering dependency proxy for proxy_fcgi :
Enabling module proxy.
Enabling module proxy_fcgi.
To activate the new configuration, you need to run :
systemctl restart apache2

On crée les répertoires recevant les versions php , ainsi que le fichier index.php (contenant la fonction phpinfo ,  <? phpinfo(); ?> )

dans : /var/www

  • php 5.6
    sudo mkdir /var/www/php56
  • php7.1
    sudo mkdir /var/www/php71
  • php 7.2
    sudo mkdir /var/www/php72

donc :
/var/www$ ls
html php56 php71 php72

  • création des VirtualHost
    /etc/apache2/sites-available/

il faut creer les fichiers :
- php56.example.com.conf
on ajoute :

<VirtualHost *:80>
   ServerName php56.example.com
   DocumentRoot /var/www/php56
   <Directory /var/www/php56>
       Options -Indexes +FollowSymLinks +MultiViews
       AllowOverride All
       Require all granted
   </Directory>
   <FilesMatch \.php$>
       # Apache 2.4.10+ can proxy to unix socket
       SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

- php71.example.com.conf
on ajoute :

<VirtualHost *:80>
   ServerName php71.example.com
   DocumentRoot /var/www/php71
   <Directory /var/www/php71>
       Options -Indexes +FollowSymLinks +MultiViews
       AllowOverride All
       Require all granted
   </Directory>
   <FilesMatch \.php$>
       # Apache 2.4.10+ can proxy to unix socket
       SetHandler "proxy:unix:/var/run/php/php7.1-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

- php72.example.com.conf

on ajoute :

<VirtualHost *:80>
   ServerName php72.example.com
   DocumentRoot /var/www/php72
   <Directory /var/www/php72>
       Options -Indexes +FollowSymLinks +MultiViews
       AllowOverride All
       Require all granted
   </Directory>
   <FilesMatch \.php$>
       # Apache 2.4.10+ can proxy to unix socket
       SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>
  • on active les sites
    sudo a2ensite php56.example.com
    Enabling site php56.example.com.
    To activate the new configuration, you need to run:
     systemctl reload apache2
sudo a2ensite php71.example.com
Enabling site php71.example.com.
To activate the new configuration, you need to run:
 systemctl reload apache2
sudo a2ensite php72.example.com
Enabling site php72.example.com.
To activate the new configuration, you need to run:
 systemctl reload apache2
  • on redemarre apache
    sudo systemctl reload apache2
  • on ouvre le fichier hosts
    /etc
    et on rajoute les lignes suivante
    127.0.0.1 php56.example.com
    127.0.0.1 php71.example.com
    127.0.0.1 php72.example.com

En ouvrant dans son navigateur

  • php56.example.com
  • php71.example.com
  • php72.example.com
  • localhost ou 127.0.0.1 aura la version php 7.3 dans le repertoire /html

On a bien un répertoire tournant avec la version PHP spécifié.


Soutenir par un don