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 26/09/2017, 15:58]
80.15.80.55
lamp [Le 06/01/2019, 13:44] (Version actuelle)
krodelabestiole [Conflit entre MySQL et MariaDB] déplacement de la procédure de réinstallation sur la page mysql
Ligne 1: Ligne 1:
-ubuntu c'est pour le PD on vous baise+{{tag>​serveur }} 
 +---- 
 +====== Serveur web - LAMP =======
  
-tg c'​est ​toi le pd+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]].
  
-nique ta mère vient sur windows+  * **Linux** : le système d'​exploitation,​ on peut déployer la pile LAMP sur la plupart des distributions GNU/Linux ; 
 +  * **[[:​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 performant, et 100% compatible 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]]).
  
-non c'est de la merde+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. 
 + 
 +===== 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).  
 + 
 +==== Méthode recommandée : installation des paquets ==== 
 + 
 +Cette méthode consiste à [[:​tutoriel:​comment_installer_un_paquet|installer]] les paquets nécessaires pour Apache, PHP et MySQL :\\ 
 + 
 +<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 : 
 +<code bash>​sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql</​code>​ 
 + 
 +(attention le paquet php installe directement la dernière version de php) 
 + 
 +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.\\ 
 +Voici comment installer les modules les plus courants : 
 +<code bash>​sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip</​code>​ 
 + 
 +Description des paquets : 
 +  * 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>​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>​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. 
 + 
 +Une fois les paquets installés, ouvrez un des liens suivants dans votre navigateur : 
 +  * [[http://​127.0.0.1/​]] 
 +  * [[http://​localhost]] 
 + 
 +Si le message << **It works!** >> s'​affiche,​ votre serveur Lamp est correctement installé. 
 + 
 +Selon la version installée, vous pouvez aussi avoir une page intitulée « Apache2 Ubuntu Default Page ». 
 + 
 +<​note>​ 
 +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>​ 
 + 
 +===== Personnalisation de l'​installation ===== 
 + 
 +==== Configuration d'​Apache 2 ==== 
 + 
 +La configuration et les détails à propos d'​Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]]. 
 + 
 +==== Configuration de MySQL ==== 
 + 
 +La configuration et les détails à propos du serveur de base de données sont accessibles sur la [[:mysql |page dédiée à MySQL]] ou [[:​mariadb|celle dédiée à MariaDB]]. 
 + 
 +Il est courant d'​installer également [[:​PHPMyAdmin]] afin de gérer la base de donnée MySQL dans une interface Web écrite en PHP.\\ 
 +On peut aussi utiliser [[https://​www.adminer.org/​|Adminer]] qui est plus simple à installer (il s'agit d'un simple fichier PHP) et propose à peu près les mêmes fonctionnalités. 
 + 
 +==== Configuration du démarrage automatique de LAMP ==== 
 + 
 +Par défaut, Apache et MySQL ou MariaDB démarrent automatiquement lorsque vous allumez votre ordinateur. 
 + 
 +=== Empêcher LAMP de démarrer automatiquement ​ === 
 + 
 +Pour empêcher cela : 
 +<​code>​sudo systemctl disable apache2</​code>​ 
 + 
 +Et pour mysql : 
 +<​code>​sudo systemctl disable mysql</​code>​ 
 + 
 +Vous pourrez donc ensuite les lancer manuellement. 
 + 
 +Pour Apache : 
 +<​code>​sudo systemctl start apache2</​code>​ 
 + 
 +et pour MySql 
 +<​code>​sudo systemctl start mysql</​code>​ 
 + 
 +Les commandes disponibles sont //systemctl start//, //systemctl stop//, et //systemctl restart//​. 
 + 
 +=== Réactiver le démarrage automatique === 
 + 
 +Pour réactiver les services automatiquement au démarrage, c'est simple : 
 +<​code>​sudo systemctl enable apache2 
 +sudo systemctl enable mysql</​code>​ 
 + 
 +===== 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]]. 
 + 
 +==== 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//,​ en créera un fichier ///​etc/​apache2/​sites-available/​example.com.conf//​ contenant : 
 + 
 +<file - example.com.conf><​VirtualHost *:80> 
 + ServerName example.com 
 + ServerAlias www.example.com 
 + DocumentRoot "/​var/​www/​example"​ 
 + <​Directory "/​var/​www/​example">​ 
 + Options FollowSymLinks 
 + AllowOverride all 
 + Require all granted 
 + </​Directory>​ 
 + ErrorLog /​var/​log/​apache2/​error.example.com.log 
 + CustomLog /​var/​log/​apache2/​access.example.com.log combined 
 +</​VirtualHost></​file>​ 
 + 
 +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 : 
 +<​code>​sudo a2ensite example.com 
 +sudo systemctl reload apache2</​code>​ 
 + 
 +<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>​ 
 + 
 +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; 
 +GRANT ALL PRIVILEGES ON example.* TO '​userExample'​@'​localhost'​ IDENTIFIED BY '​mot_de_passe';​ 
 +FLUSH PRIVILEGES;​ 
 +QUIT;</​code>​ 
 + 
 +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 la documentation //​[[:​mysql#​base_de_donnee|création de bases de données]]//​. 
 + 
 +===== Envoi de courriel ===== 
 + 
 +Sans configuration préalable votre serveur (et donc PHP) est incapable d'​envoyer un courriel.\\ 
 +Il existe plusieurs solutions. 
 + 
 +La plus évidente serait de monter un [[:​serveurs_messagerie|serveur de messagerie]] sur sa machine (avec **[[:​Postfix]]** ou **[[:​Exim]]** par ex.). Cependant cette solution n'est pas adaptée à la plupart des situations. Elle est très lourde logistiquement,​ compliquée à mettre en place, et demande un gros investissement de maintenance. 
 + 
 +[[wpfr>​Simple_Mail_Transfer_Protocol|SMTP]] est le nom du protocole qui permet de transférer des courriels. Donc un serveur SMTP, on dit aussi [[wpfr>​Mail_Transfer_Agent|MTA]] (pour //Mail Transfert Agent//), reçoit ou envoie des courriels.\\ 
 +Tous les fournisseurs de messagerie donnent accès à un serveur SMTP, dont on doit habituellement indiquer les informations de connexion dans un [[:​courriel#​principaux_clients_de_messagerie|client]] tel que [[:​Thunderbird]] pour qu'il envoie nos messages.\\ 
 +[[:​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.\\ 
 +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//​. 
 +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 : 
 +<​code>​ls -al /​usr/​sbin/​sendmail 
 +lrwxrwxrwx 1 root root 5 Jul 15  2014 /​usr/​sbin/​sendmail -> ssmtp</​code>​ 
 + 
 +===== Problèmes courants ===== 
 + 
 +<note tip>En fonction du problème que vous rencontrez, consultez é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>​ 
 + 
 +==== Conflit entre MySQL et MariaDB ==== 
 + 
 +Si vous avez installé MariaDB et que vous cherchez à passer sur MySQL, il est possible que vous rencontriez une erreur de ce type lors de l'​installation de votre paquet : 
 +<​code>​Aborting downgrade from (at least) 10.0 to 5.7. 
 +If are sure you want to downgrade to 5.7, remove the file 
 +/​var/​lib/​mysql/​debian-*.flag and try installing again.</​code>​ 
 +ou encore : 
 +<​code>​mysql_upgrade:​ Got error: 1524: Plugin '​unix_socket'​ is not loaded while connecting to the MySQL server 
 +Upgrade process encountered error and will not continue.</​code>​ 
 + 
 +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]]. 
 +===== Voir aussi ===== 
 + 
 +  * [[:​apache2|Apache]] 
 +  * [[:PHP]] 
 +  * [[:​MySQL]] 
 +  * [[:​MariaDB]] 
 + 
 +//​Contributeurs : [[utilisateurs:​krodelabestiole]],​ [[utilisateurs:​oxossi]],​ [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].//​
  • lamp.1506434316.txt.gz
  • Dernière modification: Le 26/09/2017, 15:58
  • par 80.15.80.55