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
Prochaine révision Les deux révisions suivantes
lamp [Le 21/11/2017, 17:09]
krodelabestiole [Plusieurs version de PHP installées simultanément]
lamp [Le 17/07/2018, 10:53]
krodelabestiole correction lien apache
Ligne 1: Ligne 1:
 {{tag>​serveur }} {{tag>​serveur }}
 ---- ----
-====== Serveur ​Web - LAMP =======+====== Serveur ​web - LAMP =======
  
-Un serveur **[[wpfr>​LAMP]]** est un serveur Web. Historiquement,​ l'acronyme ​« LAMP » fait référence aux quatre composantes d'un tel 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]].
-  * **L**inux ​: le système d'​exploitation constituant la base du système. Iciil s'agit d'​[[:​ubuntu_distribution |Ubuntu]]. +
-  * **A**pache ​: le serveur HTTP qui gère la communication avec le client. +
-  * **M**ySQL ​le système de gestion de base de données+
-  * **P**HP/​Python/​Perl : le langage de programmation ​associé  +
-<note >Les serveurs Linux/​Apache/​MySQL associés à [[:Python]] ou [[http://​fr.wikipedia.org/​wiki/​Perl_%28langage%29|Perl]] au lieu de PHP sont également appelés serveur « LAMP ». Cependantpour des soucis ​de simplicité,​ seul le cas (majoritaire) où PHP est utilisé comme langage de script est présenté ici. Vous pouvez obtenir des informations sur [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=395008|l'​installation de Python dans Apache sur le forum]]</​note>​+
  
-===== Installation =====+  * **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]]).
  
-Le prérequis pour un serveur "​LAMP"​ est d'​avoir ​un système d'​exploitation GNU/LinuxLa première étape est donc d'[[:installation ​|installer Ubuntu]] (ou une de ses [[:​variantes]]). La variante ​[[:ubuntu_server|Ubuntu server]] est particulièrement adaptée dans le cas d'un serveur de production contrôlable à distance ​(par [[:ssh]] notammentet ne nécessitant pas d'​interface graphique+Un exemple type : un internaute veut afficher son profil sur un site webAu 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 (HTMLqui est envoyée au navigateur web. 
 + 
 +===== Installation =====
  
-==== Méthode recommandée ​Installation des paquets ====+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). ​
  
-<note warning>​À partir d'​Ubuntu 16.04 les paquets ​doivent être installés par le biais d'un terminal pour fonctionner correctement (voir note ci-dessous).</​note>​+==== 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 :\\ 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 mysql-server ​libapache2-mod-php php-mysql</​code>​+<code bash>​sudo apt install 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 ​apache2 php mariadb-server ​libapache2-mod-php php-mysql</​code>​+<code bash>​sudo apt install libapache2-mod-php ​mariadb-server ​php-mysql</​code>​
  
  
-Le stack LAMP est alors installé. Cependant la plupart des scripts PHP (CMS, forums, applications web en tout genre) utilisent des 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.\\
 Voici comment installer les modules les plus courants : Voici comment installer les modules les plus courants :
-<code bash>​sudo apt install php-curl php-gd php-intl php-json php-mbstring ​php-mcrypt ​php-xml php-zip</​code>​+<code bash>​sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip</​code>​
  
 Description des paquets : Description des paquets :
-  * Le paquet [[apt>​apache2|apache2]] installe le serveur HTTP [[:apache2 |Apache 2]].   +  * 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]] ​installe le logiciel ​permettant d'interpreter le langage ​[[:php |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-php5|libapache2-mod-php]] ​permet d'​utiliser PHP en tant que 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 bases 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 ​le module permettant d'​utiliser MySQL ou MariaDB avec PHP. +  * Le paquet [[apt>​php-mysql|php-mysql]] installe ​les module permettant d'​utiliser MySQL ou MariaDB avec PHP.
- +
-<note important>​L'​installation du paquet mysql-server en cliquant simplement sur un lien apt crée un problème à l'​installation ! L'​installeur ne demande pas le mot de passe pour mysql-server et l'​accès est dès lors compliqué à mysql. Installez bien ce paquet en utilisant le terminal et la commande <​code>​sudo apt install mysql-server</​code>​ comme indiqué juste au dessus. Vous pouvez consulter cette discussion [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=21588812#​p21588812]] +
-Pour ceux qui auraient le problème de connexion mysql sur la 16.04, voici la manip à faire pour régler le soucis. +
-> sudo mysql -u root +
-> DROP USER '​root'​@'​localhost';​ +
-> CREATE USER '​root'​@'​%'​ IDENTIFIED BY '';​ +
-> GRANT ALL PRIVILEGES ON *.* TO '​root'​@'​%';​ +
-> FLUSH PRIVILEGES;​ +
-</​note>​ +
  
 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 59: Ligne 49:
 </​note>​ </​note>​
  
-==== Alternative : Installation par tâches ​====+===== Personnalisation de l'​installation =====
  
-=== Méthode graphique ​===+==== Configuration d'​Apache 2 ====
  
-Préalable : installer ​[[apt>​tasksel]]+La configuration et les détails à propos d'​Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]].
  
-[[:​Synaptic]] permet d'​installer automatiquement tous les paquets correspondant à une tâche. La liste des tâches est accessible par le menu //​Édition/​Sélectionner paquets par tâches//. Il suffit ​de sélectionner « serveur LAMP » et de valider puis de cliquer sur le bouton « Appliquer » pour installer les paquets nécessaires.+==== Configuration ​de MySQL ====
  
-=== Méthode en lignes ​de code === +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]].
-[[:Tasksel]] permet également d'​installer automatiquement tous les paquets nécessaires sans avoir recours à une interface graphique. +
-Dans le cas d'un serveur "​LAMP",​ l'​installation complète se résume à l'​utilisation d'une seule [[:terminal ​|commande]] +
-  sudo tasksel install lamp-server+
  
-<note warning>​Si vous voulez désinstaller LAMP, ne faites surtout pas "sudo tasksel remove lamp-server"​. \\ +Il est courant d'​installer également [[:​PHPMyAdmin]] afin de gérer ​la base de donnée MySQL dans une interface Web écrite en PHP.\\ 
-__Tasksel ne doit jamais être utilisé pour la suppression ​de paquet__. \\ +On peut aussi utiliser ​[[https://www.adminer.org/|Adminer]] qui est plus simple à installer ​(il s'agit d'un simple fichier PHPet propose à peu près les mêmes fonctionnalités.
-Celui-ci supprime les paquets nécessaires au reste du système sans se poser de question.(([[https://help.ubuntu.com/community/​Tasksel|Tasksel sur Help Ubuntu]])) et (([[https://​launchpad.net/​bugs/​574287|tasksel:​ forcefully removes packages when tasks overlap]]))</​note>​ +
-<​note>​En fait, c'est le package lamp-server^ ​(avec l'accent circonflexequ'il ne faut pas désinstaller. Que ce soit via apt-get ou tasksel. En revanche,les autres packages peuvent être désinstallés via Tasksel tout comme via apt-get.</​note>​+
  
-ou sans passer par tasksel ​+==== Configuration du démarrage automatique de LAMP ====
  
-<​code>​sudo apt-get install lamp-server^</​code>​ +Par défaut, Apache et MySQL ou MariaDB démarrent automatiquement lorsque vous allumez votre ordinateur.
-//​**N'​oubliez pas** le caractère **^** en fin de ligne.//  +
-.+
  
-===== personnalisation ​de l'​installation =====+=== Empêcher LAMP de démarrer automatiquement  ​===
  
-==== Configuration d'​Apache 2 ====+Pour empêcher cela : 
 +<​code>​sudo systemctl disable apache2</​code>​
  
-==== Personnaliser Apache2 ====+Et pour mysql : 
 +<​code>​sudo systemctl disable mysql</​code>​
  
-La configuration et les détails à propos d'​Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]].+Vous pourrez donc ensuite ​les lancer manuellement.
  
-La configuration et les détails ​ pour permettre à chaque utilisateur d'​avoir son propre site dans public_html sont accessibles sur la page [[apache2#​mod_userdir_gerer_les_dossiers_utilisateur| Page dédiée ​<<​public_html>>]].+Pour Apache : 
 +<code>sudo systemctl start apache2</​code>
  
-Ceci est utile en toute circonstance avec un Debian ​et un Ubuntu. +et pour MySql 
-==== Configuration de MySQL ====+<​code>​sudo systemctl start mysql</​code>​
  
-La configuration ​et les détails à propos de MySQL sont accessibles sur la [[:mysql |page dédiée à ce serveur de base de données]]. +Les commandes disponibles sont //systemctl start//, //systemctl stop//, ​et //systemctl restart//.
-Il est courant d'​installer également [[:​PHPMyAdmin]] afin de gérer la base de donnée MySQL dans une interface Web écrite en PHP. +
-==== Configuration du répertoire de travail ====+
  
-La configuration du répertoire de travail est accessible sur cette [[tutoriel:​lamp_repertoires_de_travail |page]]+=== Réactiver le démarrage automatique ===
  
-==== Configuration du démarrage ​automatique de LAMP ====+Pour réactiver les services automatiquement au démarrage, c'est simple : 
 +<​code>​sudo systemctl enable apache2 
 +sudo systemctl enable mysql</​code>​
  
-=== Empêcher LAMP de démarrer automatiquement  ​==== +===== Utilisation =====
-Par défaut, apache démarre automatiquement lorsque vous allumez votre ordinateur. +
-Pour empêcher cela : +
-<​code>​sudo update-rc.d -f apache2 disable</​code>​+
  
-Et pour 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ée MySQL]].
-<​code>​sudo sh -c "echo manual >> /etc/init/mysql.override."</​code>​+
  
-Vous pourrez donc ensuite les lancer manuellement:​ +==== Création ​d'un hôte virtuel ====
-Pour Apache: +
-<​code>/​etc/​init.d/apache2 start</​code>​+
  
-et pour 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 ​:
-<​code>​mysql -u root -p -hlocalhost</​code>​ +
-===== Utilisation et accès au serveur ===== +
-Une fois l'installation effectuéele serveur est accessible (via un navigateur internet) à l'une des URL (locales) suivantes:​ +
-  * http://127.0.0.1 +
-  * http://localhost +
-  * http://hostname ("​hostname"​ étant le nom de votre ordinateur)+
  
-Il existe des interfaces graphiques pour utiliser Apache et MySQLDe la plus simple à la plus complète : [[http://websyys.olympe.in/localserver-indicator-raccourcis-pour-serveur-local-ubuntu-13-10.html|localserver-indicator]] FIXME [lien cassé]+<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>​
  
- ​[[https:​//launchpad.net/localhost-indicator|localhost-indicator]],​ [[https://launchpad.net/rapache|rapache]] et [[webmin]] (à utiliser avec prudence).+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>​
  
-===== Problèmes courants =====+Pour plus de détails, consultez la documentation //​[[:​apache2#​creation_d_hotes_virtuels|création d'​hôtes virtuels]]//​.
  
-==== Plusieurs version ​de PHP installées simultanément ​====+==== Création d'une base de donnée et d'un utilisateur associé ​====
  
-Il est possible que plusieurs versions de PHP soient installées simultanément,​ par 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]]).\\ +On se connecte ensuite au serveur MySQL (en ajoutant //​-p// ​si on a spécifié ​un mot de passe pour //​root//​) ​
-Cela peut par ex. rendre des modules de PHP inaccessibles alors qu'ils semblent bien installés.+<​code>​sudo mysql</​code>​
  
-Vous pouvez vérifier cela avec cette commande ​+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>​apt list php| grep install</​code>​ +<​code ​mysql>CREATE DATABASE example; 
-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).+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 ==== ==== Conflit entre MySQL et MariaDB ====
Ligne 153: Ligne 169:
 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 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 !
  
-<​code>​sudo apt autoremove --purge mysql* mariadb* +<​code>​sudo apt autoremove --purge mysql-server\* mariadb-server\*
-sudo apt clean+
 sudo mv /​var/​lib/​mysql /​var/​lib/​mysql_bak sudo mv /​var/​lib/​mysql /​var/​lib/​mysql_bak
 sudo mv /etc/mysql /​etc/​mysql_bak sudo mv /etc/mysql /​etc/​mysql_bak
-sudo apt install mysql-server</​code>​+sudo mkdir /etc/mysql /​etc/​mysql/​conf.d 
 +sudo apt clean</​code>​ 
 +Vous pouvez ensuite choisir d'​installer [[:MySQL]] ou [[:​MariaDB]] : 
 +<​code>​sudo apt install mysql-server</​code>​ 
 +**__ou__** 
 +<​code>​sudo apt install mariadb-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)** 
-  * [[xampp]] Une version de LAMP simplifiée,​ servant pour le développement (seulement). 
  
-//​Contributeurs : [[utilisateurs:​oxossi]],​ [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].+  * [[:​apache2|Apache]] 
 +  * [[:PHP]] 
 +  * [[:​MySQL]] 
 +  * [[:​MariaDB]] 
 + 
 +//​Contributeurs : [[utilisateurs:​krodelabestiole]], ​[[utilisateurs:​oxossi]],​ [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].//
  • lamp.txt
  • Dernière modification: Le 18/01/2024, 17:20
  • par lyondif02