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 24/01/2013, 10:06]
89.158.102.42 [Voir aussi]
lamp [Le 18/01/2024, 17:20] (Version actuelle)
lyondif02 [Méthodes alternatives] typo.
Ligne 1: Ligne 1:
-{{tag>Lucid Natty Oneiric ​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 évidemment d'​[[:​ubuntu_distribution |Ubuntu]]. +
-  * **A**pache: le serveur HTTP qui gère la communication avec le client. +
-  * **M**ySQLle système de gestion de base de données+
-  * **P**HP: le langage de script utilisé pour générer les pages dynamiques.+
  
-<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é ​serveur ​"​LAMP"​Cependantpour des soucis ​de simplicité,​ seul le cas (majoritaireoù PHP est utilisé comme langage de script est présenté iciVous pouvez obtenir des informations sur [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=395008|l'​installation ​de Python dans Apache ​sur le forum]]</​note>​+  * **Linux** : le système d'​exploitation. On peut déployer la pile LAMP sur la plupart des distributions GNU/Linux ; 
 +  * **[[:apache2|Apache]]** le serveur HTTPIl 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éesIl 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 dynamiquementIl s'agit la plupart du temps de pages [[wpfr>​HTML]]. 
 + 
 +Voici un exemple typique d’utilisationUn 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 (HTML) qui est envoyée au navigateur web.
  
 ===== Installation ===== ===== Installation =====
  
-Le prérequis pour un serveur "LAMP" est d'​avoir un système d'​exploitation GNU/Linux. La 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]] notamment) ​et ne nécessitant pas d'​interface graphique. +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). ​
-==== Alternative 1: Installation par tâches ====+
  
-=== Méthode ​graphique ​===+==== Méthode ​recommandée : installation des paquets ====
  
-Préalable : installer ​[[apt>​tasksel]]+Cette méthode consiste à [[:​tutoriel:​comment_installer_un_paquet|installer]] les paquets nécessaires pour Apache, PHP et MySQL :\\
  
-[[:Synaptic]] permet d'​installer automatiquement tous les paquets correspondants à 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.+<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>
  
-=== Méthode en lignes de 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.\\ 
-[[:Tasksel]] permet également d'​installer automatiquement tous les paquets nécessaires sans avoir recours à une interface graphique. +Voici comment installer les modules les plus courants ​
-Dans le cas d'un serveur "​LAMP",​ l'​installation complète se résume à l'​utilisation d'une seule [[:terminal ​|commande]]: +<code bash>sudo apt install ​php-curl php-gd php-intl php-json php-mbstring php-xml php-zip</​code>​
-  sudo tasksel ​install ​lamp-server+
  
-<note warning>Si vous voulez désinstaller lamp ne faites surtout pas "sudo tasksel remove lamp-server"​\\ +Description des paquets : 
-__Tasksel ne doit jamais être utilisé pour la suppression ​de paquet__\\ +  * Le paquet [[apt>apache2|apache2]] installe le serveur HTTP [[:apache2 |Apache 2]] (c'est une dépendance de libapache2-mod-php)  
-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>​ +  * 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)
-<note>En fait, c'est le package lamp-server^qu'il ne faut pas désinstallerQue ce soit via apt-get ou taskselEn revanche, je pense que les autres packages peuvent être désinstallés via Tasksel tout comme via apt-get. À certifier.</​note>​+  * 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 modules permettant d'​utiliser MySQL ou MariaDB avec PHP.
  
-ou sans passer par tasksel ​+Une fois les paquets installés, ouvrez un des liens suivants dans votre navigateur : 
 +  * [[http://​127.0.0.1/​]] 
 +  * [[http://​localhost]]
  
-<code>​sudo apt-get install lamp-server^</code> +Si le message ​<< **It works!** >> s'​affiche,​ votre serveur Lamp est correctement installé.
-//**N'​oubliez pas** le caractère **^** en fin de ligne.// +
  
 +Selon la version installée, vous pouvez aussi avoir une page intitulée « Apache2 Ubuntu Default Page ».
  
-==== Alternative 2 : Installation des paquets (méthode ​recommandée====+<​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>​
  
-Une alternative à la méthode précédente consiste à [[:​tutoriel:​comment_installer_un_paquet|installer]] directement les paquets nécessaires:​\\ +==== Méthodes alternatives ====
-**[[apt>​apache2,​php5,​mysql-server |apache2, ​ php5, mysql-server]]**+
  
-En ligne de commande ​: +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.
-<code bash>​sudo apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql</​code>​+
  
 +=== installation via Bitnami ===
  
-Description des paquets : +[[https://bitnami.com/|Bitnami]] est un fournisseur ​d'applications web telles que Wordpress et MoodleCelle 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.
-  * Le paquet [[apt>​apache2|apache2]] installe le serveur ​[[:apache2 |Apache 2]]  +
-  * Le paquet [[apt>​php5|php5]] installe le langage [[:php |PHP 5]] et, grâce aux dépendances,​ le module ​d'intégration dans Apache (paquet [[apt>​libapache2-mod-php5|libapache2-mod-php5]] installé automatiquement en principe). +
-  * Le paquet [[apt>​mysql-server|mysql-server]] installe le serveur ​[[:mysql |MySQL]]. etgrâce aux dépendances,​ le module ​d'interface avec php (paquet [[apt>​php5-mysql|php5-mysql]] installé automatiquement ​en principe).+
  
-Une fois les paquets installésouvrez ​l'Url suivante dans votre navigateur : +<note important>​Si **[[apt>​libncurses5]]** n'est pas installéinstallez-le avant de démarrer ​l'installation de LAMPSinon vous allez rencontrer des erreurs.</note>
-<​code>​http://​127.0.0.1/</code> +
-Si le message « It works! » s'​affiche,​ votre serveur Lamp est correctement installé. Sinon consultez ​ les notes ci-dessous :+
  
-<note important>​Si après ​l'​installation, le serveur refuse d'​ouvrir les fichiers en php (firefox vous demande si vous voulez télécharger la page en php), il faudra vider le cache de firefox (ça peut suffire) et parfois (ré)installer le paquet libapache2-mod-php5. De même il arrive qu'il faille (ré)installer le paquet php5-mysql si php ne dispose pas des instructions de gestion des bases de données MySQL</​note>​+===== Personnalisation de l'​installation ​=====
  
-si vous avez activé le module userdir qui permet à chaque utilisateur ​d'avoir son propre site dans public_html,​ il faut mettre quelques commentaires dans le fichier php5.conf qui se trouve dans /​etc/​apache2/​mods-enabled,​ il faut commenter les lignes avec ##+==== Configuration ​d'Apache 2 ====
  
-<​code>​ +La configuration et les détails à propos d'​Apache 2 sont accessibles sur la [[:​apache2 ​|page dédiée à ce serveur HTTP]].
-<​IfModule mod_php5.c>​ +
-    <​FilesMatch "​\.ph(p3?​|tml)$">​ +
- SetHandler application/​x-httpd-php +
-    </​FilesMatch>​ +
-    <​FilesMatch "​\.phps$">​ +
- SetHandler application/​x-httpd-php-source +
-    </​FilesMatch>​ +
-    # To re-enable php in user directories comment the following lines +
-    # (from <​IfModule ...> to </​IfModule>​.) Do NOT set it to On as it +
-    # prevents .htaccess files from disabling it. +
-    ##<​IfModule mod_userdir.c> +
-    ##      <​Directory /​home/​*/​public_html>​ +
-    ##        php_admin_value engine Off +
-    ##     </​Directory>​ +
-    ##</​IfModule>​ +
-</​IfModule>​ +
-</​code>​+
  
-<​note>​ +==== Configuration ​de MySQL ====
-Les méthodes d'​installation décrites ici permettent d'​obtenir un serveur "​LAMP"​ pré-configuré et fonctionnel.\\ +
-Une configuration n'est donc nécessaire que dans le cas d'une personnalisation de l'​installation. +
-</​note>​ +
-===== personnalisation ​de l'​installation =====+
  
-==== Configuration d'​Apache 2 ====+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]].
  
-La configuration et les détails à propos ​d'Apache 2 sont accessibles sur la [[:apache2 ​|page dédiée à ce serveur HTTP]].+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 ====
  
-==== Configuration de PHP ====+Par défaut, Apache et MySQL ou MariaDB démarrent automatiquement lorsque vous allumez votre ordinateur.
  
-La configuration ​et les détails à propos ​de PHP sont accessibles sur la [[:php |page dédiée à ce langage]]. +=== Empêcher LAMP de démarrer automatiquement ​ === 
-==== Configuration ​de MySQL ====+ 
 +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ées 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'',​ on 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; 
 +CREATE USER '​userExample'​@'​localhost'​ IDENTIFIED BY '​mot_de_passe';​ 
 +GRANT ALL PRIVILEGES ON example.* TO '​userExample'​@'​localhost';​ 
 +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, **[[:​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. 
 + 
 +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 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 
 +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]].
  
-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]]. +===== Problèmes courants =====
-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]]+<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>​
  
-===== Utilisation ​et accès au serveur ===== +==== Conflit entre MySQL et MariaDB ​====
-Une fois l'​installation effectuée, le serveur est accessible (via un navigateur internet) à l'une des URL (locales) suivantes:​ +
-  * http://​127.0.0.1 +
-  * http://​localhost+
  
-Il existe des interfaces graphiques pour utiliser Apache ​et MySQL. De la plus simple ​à la plus complète ​[[https://​launchpad.net/​localhost-indicator|localhost-indicator]][[https://launchpad.net/rapache|rapache]] et [[webmin]] (à utiliser avec prudence).+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.7remove 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 ===== ===== Voir aussi =====
  
-  ​* **(fr)** [[http://​www.neoflow.fr/​tutoriels.item.154/​installer-un-serveur-lamp-linux-apache-mysql-php.html|Tutoriel d'​installation d'un serveur LAMP]] sur Neoflow +  * [[:apache2|Apache]] 
-  * **(fr)** [[http://​idealogeek.fr/​linux/​lamp/​|Installation & configuration facile d'un serveur Web (LAMP)]] - IDEALOGEEK+  * [[:PHP]] 
 +  ​[[:​MySQL]] 
 +  ​[[:​MariaDB]] 
 +  ​* [[:tutoriel:​lamp_repertoires_de_travail|Serveur LAMP - Créer ​un/des répertoires de travail]]
  
-//​Contributeurs : [[utilisateurs:​oxossi]]+//​Contributeurs : [[utilisateurs:​krodelabestiole]], ​[[utilisateurs:​oxossi]], [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].//​
  • lamp.1359018383.txt.gz
  • Dernière modification: Le 24/01/2013, 10:06
  • par 89.158.102.42