Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
lamp [Le 17/06/2018, 00:49]
krodelabestiole [Utilisation] + mysql_native_password
lamp [Le 18/01/2024, 17:20] (Version actuelle)
lyondif02 [Méthodes alternatives] typo.
Ligne 1: Ligne 1:
 {{tag>​serveur }} {{tag>​serveur }}
-----+
 ====== Serveur web - LAMP ======= ====== Serveur web - LAMP =======
  
 LAMP est un acronyme pour **L**inux, **A**pache, **M**ySQL, **P**HP. ​ C'est une pile logicielle comprenant le système d'​exploitation,​ un serveur HTTP, un système de gestion de bases de données et un langage de programmation interprété,​ et qui permet de mettre en place un [[:​web#​serveurs|serveur web]]. LAMP est un acronyme pour **L**inux, **A**pache, **M**ySQL, **P**HP. ​ C'est une pile logicielle comprenant le système d'​exploitation,​ un serveur HTTP, un système de gestion de bases de données et un langage de programmation interprété,​ et qui permet de mettre en place un [[:​web#​serveurs|serveur web]].
  
-  * **Linux** : le système d'​exploitation, on peut déployer la pile LAMP sur la plupart des distributions GNU/Linux ; +  * **Linux** : le système d'​exploitation. On peut déployer la pile LAMP sur la plupart des distributions GNU/Linux ; 
-  * **[[:​Apache]]** : le serveur HTTP, il permet au serveur de communiquer avec le navigateur en utilisant le protocole HTTP(S) ; +  * **[[:apache2|Apache]]** : le serveur HTTP. Il permet au serveur de communiquer avec le navigateur en utilisant le protocole HTTP(S) ; 
-  * **MySQL** : il s'agit d'un serveur de bases de données. Il sert à stocker, à manipuler ​ et à accéder à des listes de données organisées en tableaux. Ce service peut être fournit ​par le logiciel [[:MySQL]] ou par [[:​MariaDB]] (fork plus ouvert, plus performantet 100% compatible MySQL). +  * **MySQL** : il s'agit d'un serveur de bases de données. Il sert à stocker, à manipuler et à accéder à des listes de données organisées en tableaux. Ce service peut être fourni ​par le logiciel [[:MySQL]] ou par [[:​MariaDB]] (fork plus ouvert, plus performant et 100 % compatible ​avec MySQL) ; 
-  * **[[:​PHP]]** : PHP est un langage de programmation interprété qui permet de générer du contenu web dynamiquement. Il s'agit la plupart du temps de pages [[wpfr>​HTML]]).+  * **[[:​PHP]]** : PHP est un langage de programmation interprété qui permet de générer du contenu web dynamiquement. Il s'agit la plupart du temps de pages [[wpfr>​HTML]].
  
-Un exemple type : un internaute veut afficher son profil sur un site web. Au moyen de son navigateur il effectue une requête sur un [[:​web#​serveurs|serveur web]] en appelant une [[:​web#​url|URL]] sur le domaine du serveur. Le module PHP d'​Apache va interpréter un script qui envoie une requête au serveur MySQL en lui demandant les informations de l'​utilisateur. Une fois ces informations récupérées,​ le script PHP met en forme le résultat sous forme de page web (HTML) qui est envoyée au navigateur web.+Voici un exemple typique d’utilisation. Un internaute veut afficher son profil sur un site web. Au moyen de son navigateuril effectue une requête sur un [[:​web#​serveurs|serveur web]] en appelant une [[:​web#​url|URL]] sur le domaine du serveur. Le module PHP d'​Apache va interpréter un script qui envoie une requête au serveur MySQL en lui demandant les informations de l'​utilisateur. Une fois ces informations récupérées,​ le script PHP met en forme le résultat sous forme de page web (HTML) qui est envoyée au navigateur web.
  
 ===== Installation ===== ===== Installation =====
  
-On peut déployer la pile LAMP sur n'​importe quelle version ou [[:​variantes|variante]] d'​Ubuntu. La variante [[:​ubuntu_server|Ubuntu server]] est particulièrement adaptée dans le cas d'un serveur "​headless"​ (sans interface graphique) contrôlable à distance (par [[:ssh]] notamment). ​+On peut déployer la pile LAMP sur n'​importe quelle version ou [[:​variantes|variante]] d'​Ubuntu ​(le système d'​explotation que vous utilisez). La variante [[:​ubuntu_server|Ubuntu server]] est particulièrement adaptée dans le cas d'un serveur "​headless"​ (sans interface graphique) contrôlable à distance (par [[:ssh]] notamment). ​
  
 ==== Méthode recommandée : installation des paquets ==== ==== Méthode recommandée : installation des paquets ====
Ligne 20: Ligne 20:
 Cette méthode consiste à [[:​tutoriel:​comment_installer_un_paquet|installer]] les paquets nécessaires pour Apache, PHP et MySQL :\\ Cette méthode consiste à [[:​tutoriel:​comment_installer_un_paquet|installer]] les paquets nécessaires pour Apache, PHP et MySQL :\\
  
-<code bash>​sudo apt install libapache2-mod-php mysql-server php-mysql</​code>​+<code bash>​sudo apt install ​apache2 php libapache2-mod-php mysql-server php-mysql</​code>​
 ou si vous préférez opter pour [[:​mariadb|MariaDB]] au lieu de MySQL : ou si vous préférez opter pour [[:​mariadb|MariaDB]] au lieu de MySQL :
-<code bash>​sudo apt install libapache2-mod-php mariadb-server php-mysql</​code>​ +<code bash>​sudo apt install ​apache2 php libapache2-mod-php mariadb-server php-mysql</​code>​
  
 La pile LAMP est alors installée. Cependant la plupart des scripts [[:PHP]] ([[:CMS]], forums, applications web en tout genre) utilisent des [[php#​modules|modules de PHP]] pour bénéficier de certaines fonctionnalités.\\ La pile LAMP est alors installée. Cependant la plupart des scripts [[:PHP]] ([[:CMS]], forums, applications web en tout genre) utilisent des [[php#​modules|modules de PHP]] pour bénéficier de certaines fonctionnalités.\\
Ligne 32: Ligne 31:
   * Le paquet [[apt>​apache2|apache2]] installe le serveur HTTP [[:apache2 |Apache 2]] (c'est une dépendance de libapache2-mod-php).  ​   * Le paquet [[apt>​apache2|apache2]] installe le serveur HTTP [[:apache2 |Apache 2]] (c'est une dépendance de libapache2-mod-php).  ​
   * Le paquet [[apt>​php|php]] méta-paquet permettant d'​installer au moins un interpréteur [[:PHP]] (aussi installé ici en dépendance de libapache2-mod-php).   * Le paquet [[apt>​php|php]] méta-paquet permettant d'​installer au moins un interpréteur [[:PHP]] (aussi installé ici en dépendance de libapache2-mod-php).
-  * Le paquet [[apt>​libapache2-mod-php|libapache2-mod-php]] module d'​Apache (on peut aussi utiliser PHP en ligne de commande ou indépendamment en FastCGI, ce qui le rend plus performant mais plus compliqué à mettre en place)+  * Le paquet [[apt>​libapache2-mod-php|libapache2-mod-php]] module d'​Apache (on peut aussi utiliser PHP en ligne de commande ou indépendamment en FastCGI, ce qui le rend plus performant mais plus compliqué à mettre en place).
   * Le paquet [[apt>​mysql-server|mysql-server]] installe le serveur de bases données [[:mysql |MySQL]].   * Le paquet [[apt>​mysql-server|mysql-server]] installe le serveur de bases données [[:mysql |MySQL]].
   * Le paquet [[apt>​mariadb-server|mariadb-server]] installe le serveur de base données [[:​mariadb|MariaDB]].   * Le paquet [[apt>​mariadb-server|mariadb-server]] installe le serveur de base données [[:​mariadb|MariaDB]].
-  * Le paquet [[apt>​php-mysql|php-mysql]] installe les module ​permettant d'​utiliser MySQL ou MariaDB avec PHP.+  * Le paquet [[apt>​php-mysql|php-mysql]] installe les modules ​permettant d'​utiliser MySQL ou MariaDB avec PHP.
  
 Une fois les paquets installés, ouvrez un des liens suivants dans votre navigateur : Une fois les paquets installés, ouvrez un des liens suivants dans votre navigateur :
Ligne 48: Ligne 47:
 La méthode d'​installation décrite ici permet d'​obtenir un serveur LAMP pré-configuré et fonctionnel,​ affichant le contenu du répertoire **/​var/​www/​html** (par défaut les fichiers **index.html** ou **index.php**).\\ La méthode d'​installation décrite ici permet d'​obtenir un serveur LAMP pré-configuré et fonctionnel,​ affichant le contenu du répertoire **/​var/​www/​html** (par défaut les fichiers **index.html** ou **index.php**).\\
 </​note>​ </​note>​
 +
 +==== Méthodes alternatives ====
 +
 +Il existe d'​autres méthodes pour déployer un serveur LAMP : [[:​docker_lamp|docker]],​ [[:XAMPP]], virtualisation ou autre. Ces méthodes ne sont généralement pas recommandées,​ en particulier si vous êtes débutant, car elles ne fournissent pas la configuration par défaut sécurisée et standardisée pour [[:​debian_ubuntu_comparaison|Debian]] et Ubuntu documentée sur ce site.
 +
 +=== installation via Bitnami ===
 +
 +[[https://​bitnami.com/​|Bitnami]] est un fournisseur d'​applications web telles que Wordpress et Moodle. Celle qui nous intéresse est [[https://​bitnami.com/​stack/​lamp|LAMP]]. Il suffit de télécharger l'​exécutable correspondant,​ d’autoriser son exécution puis de l'​exécuter en suivant les instructions.
 +
 +<note important>​Si **[[apt>​libncurses5]]** n'est pas installé, installez-le avant de démarrer l'​installation de LAMP. Sinon vous allez rencontrer des erreurs.</​note>​
  
 ===== Personnalisation de l'​installation ===== ===== Personnalisation de l'​installation =====
Ligne 82: Ligne 91:
 <​code>​sudo systemctl start mysql</​code>​ <​code>​sudo systemctl start mysql</​code>​
  
-Les commandes disponibles sont //systemctl start////systemctl stop//, et //systemctl restart//.+Les commandes disponibles sont ''​systemctl start''​''​systemctl stop''​, et ''​systemctl restart''​.
  
 === Réactiver le démarrage automatique === === Réactiver le démarrage automatique ===
Ligne 92: Ligne 101:
 ===== Utilisation ===== ===== Utilisation =====
  
-La mise en place d'un site internet, [[:CMS]], ou autre application web se fait en général en [[:​apache2#​creation_d_hotes_virtuels|créant un hôte virtuel]] pour [[:​apache2|Apache]],​ et une [[:​mysql#​base_de_donnee|base de donnée ​MySQL]].+La mise en place d'un site internet, [[:CMS]], ou autre application web se fait en général en [[:​apache2#​creation_d_hotes_virtuels|créant un hôte virtuel]] pour [[:​apache2|Apache]],​ et une [[:​mysql#​base_de_donnee|base de données ​MySQL]].
  
-Par exemple pour mettre en place une solution qu'on appellera ici //example// sur un nom de domaine ​//example.com//en créera un fichier ​///​etc/​apache2/​sites-available/​example.com.conf// contenant :+==== Création d'un hôte virtuel ==== 
 + 
 +Par exemple pour mettre en place une solution qu'on appellera ici ''​example'' ​sur un nom de domaine ​''​example.com''​on créera un fichier ​''​/​etc/​apache2/​sites-available/​example.com.conf'' ​contenant :
  
 <file - example.com.conf><​VirtualHost *:80> <file - example.com.conf><​VirtualHost *:80>
Ligne 109: Ligne 120:
 </​VirtualHost></​file>​ </​VirtualHost></​file>​
  
-On déploiera ici les fichiers du site dans le répertoire ​///​var/​www/​example//.+On déploiera ici les fichiers du site dans le répertoire ​''​/​var/​www/​example''​.
  
 Puis on active l'​hôte virtuel et on recharge la configuration d'​Apache : Puis on active l'​hôte virtuel et on recharge la configuration d'​Apache :
Ligne 115: Ligne 126:
 sudo systemctl reload apache2</​code>​ sudo systemctl reload apache2</​code>​
  
-On se connecte ensuite au serveur MySQL (en ajoutant ​//-p// si on a spécifié un mot de passe pour //root//) :+<note tip>Pour plus de détails, consultez la documentation //​[[:​apache2#​creation_d_hotes_virtuels|Création d'​hôtes virtuels]]//,​ et pour des exemples pratiques consultez le tutoriel //​[[:​tutoriel:​lamp_repertoires_de_travail|Créer un/des répertoires de travail]]//​.</​note>​ 
 + 
 +==== Création d'une base de donnée et d'un utilisateur associé ==== 
 + 
 +On se connecte ensuite au serveur MySQL (en ajoutant ​''​-p'' ​si on a spécifié un mot de passe pour ''​root''​) :
 <​code>​sudo mysql</​code>​ <​code>​sudo mysql</​code>​
  
-Puis on créé une base de données ​//example// associée à un utilisateur ​//userExample// (en remplaçant ​//mot_de_passe// par un mot de passe complexe) :+Puis on créé une base de données ​''​example'' ​associée à un utilisateur ​''​userExample'' ​(en remplaçant ​''​mot_de_passe'' ​par un mot de passe complexe) :
 <code mysql>​CREATE DATABASE example; <code mysql>​CREATE DATABASE example;
-GRANT ALL PRIVILEGES ON example.* TO '​userExample'​@'​localhost' IDENTIFIED WITH mysql_native_password BY '​mot_de_passe';+CREATE USER '​userExample'​@'​localhost'​ IDENTIFIED BY '​mot_de_passe';​ 
 +GRANT ALL PRIVILEGES ON example.* TO '​userExample'​@'​localhost';​
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
 QUIT;</​code>​ QUIT;</​code>​
Ligne 126: Ligne 142:
 Il faudra finalement renseigner ces informations de connexion lors de l'​installation ou la configuration de la solution web. Il faudra finalement renseigner ces informations de connexion lors de l'​installation ou la configuration de la solution web.
  
-Pour plus de détails, consultez ​les documentations respectives : +Pour plus de détails, consultez ​la documentation //[[:​mysql#​base_de_donnee|création de bases de données]]//.
-  * [[:​apache2#​creation_d_hotes_virtuels|création d'​hôtes virtuels]] +
-  * [[:​mysql#​base_de_donnee|création de bases de données]]+
  
 ===== Envoi de courriel ===== ===== Envoi de courriel =====
Ligne 141: Ligne 155:
 [[:​Postfix]] et [[:Exim]] sont des serveurs SMTP, et demandent au minimum un gros travail de configuration. [[:​Postfix]] et [[:Exim]] sont des serveurs SMTP, et demandent au minimum un gros travail de configuration.
  
-Il existe un autre projet, **[[:sSMTP]]** qui n'est pas un serveur SMTP, plutôt un client SMTP. Il permet de se connecter à un serveur SMTP distant qui se charge de l'​envoi des messages. Sa configuration s'​apparente donc à celle d'un serveur d'​envoi dans Thunderbird.\\+Il existe un autre projet, **[[:msmtp]]** qui n'est pas un serveur SMTP, plutôt un client SMTP. Il permet de se connecter à un serveur SMTP distant qui se charge de l'​envoi des messages. Sa configuration s'​apparente donc à celle d'un serveur d'​envoi dans Thunderbird.\\
 Sa mise en place et son utilisation est donc incomparablement plus simple que celle d'un serveur de messagerie complet, et il ne requiert pas nécessairement l'​ouverture du port 25. Sa mise en place et son utilisation est donc incomparablement plus simple que celle d'un serveur de messagerie complet, et il ne requiert pas nécessairement l'​ouverture du port 25.
  
-Historiquement on utilisait **Sendmail** comme serveur SMTP sur GNU/Linux. Les logiciels sous Ubuntu tels que PHP font donc appel à la fonction ​///​usr/​sbin/​sendmail//+Historiquement on utilisait **Sendmail** comme serveur SMTP sur GNU/Linux. Les logiciels sous Ubuntu tels que PHP font donc appel à la fonction ​''​/​usr/​sbin/​sendmail''​
-Pour des raisons de simplicité lorsqu'​on installe une solution d'​envoi de courriel, que ce soit postfix, exim ou ssmtp///​usr/​sbin/​sendmail// est remplacé par un [[:​lien_physique_et_symbolique|lien symbolique]] vers cette solution. C'est ce qui permet au système d'​envoyer des courriels, et à la fonction //​[[http://​php.net/​manual/​fr/​function.mail.php|mail()]]//​ de PHP de fonctionner : +Pour des raisons de simplicité lorsqu'​on installe une solution d'​envoi de courriel, que ce soit postfix, exim ou msmtp''​/​usr/​sbin/​sendmail'' ​est remplacé par un [[:​lien_physique_et_symbolique|lien symbolique]] vers cette solution. C'est ce qui permet au système d'​envoyer des courriels, et à la fonction //​[[http://​php.net/​manual/​fr/​function.mail.php|mail()]]//​ de PHP de fonctionner : 
-<​code>​ls -al /​usr/​sbin/​sendmail +<​code>​ 
-lrwxrwxrwx 1 root root 5 Jul 15  2014 /​usr/​sbin/​sendmail -> ssmtp</​code>​+ls -al /​usr/​sbin/​sendmail 
 +lrwxrwxrwx 1 root root 12 nov.  28  2016 /​usr/​sbin/​sendmail -> ../​bin/​msmtp 
 +</​code>​ 
 + 
 +Pour mettre en place **msmtp**, n'​hésitez pas à consulter la [[:​msmtp|page de documentation dédiée]].
  
 ===== Problèmes courants ===== ===== Problèmes courants =====
  
-==== Conflits potentiels entre plusieurs versions de PHP ==== +<note tip>En fonction du problème ​que vous rencontrezconsultez également les problèmes courants spécifiques ​à [[:​apache2#​problemes_courants|Apache]],​ ceux de [[:​php#​problemes_courants|PHP]] ou ceux de [[:mysql#​problemes_courants|MySQL]].</note>
- +
-Il est possible ​que plusieurs versions de PHP soient installées simultanémentpar ex. après une mise à jour majeure d'​ubuntu si vous avez spécifié le numéro de version ​de PHP lors de l'​installation des paquets, ​ou si vous avez ajouté un PPA exotique pour installer une version spécifique ​de PHP (mauvaise idée, il vaut mieux dans ce cas utiliser ​[[:docker_lamp|docker]]).\\ +
-Cela peut par ex. rendre des modules de PHP inaccessibles alors qu'ils semblent bien installés. +
- +
-Vous pouvez vérifier cela avec cette commande : +
-<​code>​apt list php* | grep install</code> +
-Si vous voyez apparaître plusieurs versions de php, par ex. php7.0 php7.1 ou php5.6, vous avez un problème. Dans ce cas supprimez les versions de PHP qui ne correspondent pas à la version proposée par les dépôts officiels d'​ubuntu (php7.0 sur Xenial, php7.1 sur Artful) puis réinstallez les paquets absents si nécessaire (libapache2-mod-php,​ etc).+
  
 ==== Conflit entre MySQL et MariaDB ==== ==== Conflit entre MySQL et MariaDB ====
Ligne 170: Ligne 181:
 Upgrade process encountered error and will not continue.</​code>​ Upgrade process encountered error and will not continue.</​code>​
  
-Dans ce cas il faut supprimer les paquets ainsi que tous les fichiers de configuration de votre serveur de bases de données. ​Attention cela rendra les bases de données existantes inaccessibles ! +Dans ce cas le plus simple est de supprimer les paquets ainsi que tous les fichiers de configuration de votre serveur de bases de données ​en [[:​mysql#​reinstallation_complete|réinstallant complètement MySQL ou MariaDB]].
- +
-<​code>​sudo apt autoremove --purge mysql-server\* mariadb-server\* +
-sudo apt clean +
-sudo mv /​var/​lib/​mysql /​var/​lib/​mysql_bak +
-sudo mv /etc/mysql /​etc/​mysql_bak +
-sudo apt install mysql-server</​code>​ +
 ===== Voir aussi ===== ===== Voir aussi =====
  
-  * [[http://​www.it-connect.fr/​installer-un-serveur-lamp-linux-apache-mysql-php/​|Tutoriel ​Mise en place d'un serveur LAMP sur IT-Connect ​]] **(fr)** +  * [[:apache2|Apache]] 
-  * [[xampp]] Une version de LAMP simplifiée,​ servant pour le développement (seulement).+  * [[:PHP]] 
 +  ​[[:MySQL]] 
 +  * [[:MariaDB]] 
 +  * [[:​tutoriel:​lamp_repertoires_de_travail|Serveur ​LAMP - Créer un/des répertoires de travail]]
  
 //​Contributeurs : [[utilisateurs:​krodelabestiole]],​ [[utilisateurs:​oxossi]],​ [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].//​ //​Contributeurs : [[utilisateurs:​krodelabestiole]],​ [[utilisateurs:​oxossi]],​ [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].//​
  • lamp.1529189380.txt.gz
  • Dernière modification: Le 17/06/2018, 00:49
  • par krodelabestiole