Contenu | Rechercher | Menus

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 08/01/2014, 22:46]
mydjey ancienne révision restaurée
lamp [Le 05/12/2017, 00:30] (Version actuelle)
adrien4607 [Méthode recommandée : Installation des paquets] Ajout de TOUT les droit "grant"
Ligne 1: Ligne 1:
 {{tag>​serveur }} {{tag>​serveur }}
- 
 ---- ----
-====== Serveur ​Web - LAMP =======+====== Serveur ​web - LAMP =======
  
-Un serveur **[[wpfr>​LAMP]]** est un serveur ​WebHistoriquementl'​acronyme « LAMP » fait référence aux quatre composantes d'​un ​tel serveur ​Web +Un serveur **[[wpfr>​LAMP]]** est un serveur ​webUn serveur web fournit des sites internetdes applications ou autres services accessibles par un navigateur web. LAMP est un acronyme pour **L**inux, **A**pache, **M**ySQL, **P**HP. Il s'agit probablement de la configuration la plus courante pour un serveur ​web 
-  * **L**inux le système d'​exploitation ​constituant ​la base du système. Ici, il s'​agit ​d'[[:​ubuntu_distribution |Ubuntu]]+  * **Linux** : système d'​exploitation, on peut déployer le stack LAMP sur la plupart des distributions GNU/Linux (mais ici nous traiterons spécifiquement ​d'ubuntu)
-  * **A**pache le serveur HTTP qui gère la communication ​avec le client+  * **[[:Apache]]** : serveur HTTP, il permet au serveur de communiquer ​avec le navigateur en utilisant le protocole HTTP(S) et ses extensions (WebDAV, etc.)
-  * **M**ySQL le système ​de gestion de base de données. +  * **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 par tableauxCe service peut être fournit par le logiciel ​[[:MySQL]] ou par [[:MariaDB]] (fork plus ouvertplus performantet 100% compatible MySQL). 
-  * **P**HP : le langage ​de script utilisé pour générer les pages dynamiques. +  * **[[:PHP]]** : PHP est un langage de programmation (et son interpréteur) qui permet de générer du contenu web "​dynamiquement"​ (il s'agit la plupart du temps de pages [[wpfr>​HTML]]).
- +
-<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 (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>​+
  
 +Un exemple type : un internaute veut afficher son profil sur un site internet. Au moyen de son navigateur il effectue une requête sur un serveur web en appelant une [[wpfr>​URL]] sur le domaine du serveur. Apache lance alors automatiquement le module PHP.  PHP va interpréter un script : pour répondre à la requête du navigateur il va à son tour envoyer une requête au serveur MySQL en lui demandant les informations de l'​utilisateur. Une fois ces informations récupérées,​ toujours en suivant le script, PHP mettra en forme le résultat sous forme de page web (HTML). Apache pourra alors retourner cette page au navigateur qui l'​affichera.
 ===== 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 le stack 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).  
-==== Alternative ​1: Installation par tâches ====+ 
 +==== Méthode recommandée : Installation des paquets ==== 
 + 
 +<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>​ 
 + 
 +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>​ 
 +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>​ 
 + 
 + 
 +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.\\ 
 +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>​ 
 + 
 +Description des paquets : 
 +  * Le paquet [[apt>​apache2|apache2]] installe le serveur HTTP [[:apache2 |Apache 2]].   
 +  * Le paquet [[apt>​php|php]] installe le logiciel permettant d'​interpreter le langage [[:php |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>​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>​php-mysql|php-mysql]] installe le 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'​@'​%'​ WITH GRANT OPTION; 
 +> FLUSH PRIVILEGES;​ 
 +</​note>​ 
 + 
 + 
 +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>​ 
 + 
 +==== Alternative : Installation par tâches ====
  
 === Méthode graphique === === Méthode graphique ===
Ligne 31: Ligne 75:
 __Tasksel ne doit jamais être utilisé pour la suppression de paquet__. \\ __Tasksel ne doit jamais être utilisé pour la suppression de paquet__. \\
 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>​ 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 circonflexe) qu'il ne faut pas désinstaller. Que ce soit via apt-get ou tasksel. En revanche, ​je pense que les autres packages peuvent être désinstallés via Tasksel tout comme via apt-get. À certifier.</​note>​+<​note>​En fait, c'est le package lamp-server^ (avec l'​accent circonflexe) qu'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 ​ ou sans passer par tasksel ​
Ligne 37: Ligne 81:
 <​code>​sudo apt-get install lamp-server^</​code>​ <​code>​sudo apt-get install lamp-server^</​code>​
 //​**N'​oubliez pas** le caractère **^** en fin de ligne.// ​ //​**N'​oubliez pas** le caractère **^** en fin de ligne.// ​
 +.
  
 +===== personnalisation de l'​installation =====
  
-==== Alternative ​: Installation des paquets (méthode recommandée) ​====+==== Configuration d'​Apache ​2 ====
  
-Une alternative ​à la méthode précédente consiste à [[:tutoriel:​comment_installer_un_paquet|installer]] directement les paquets nécessaires :\\ +La configuration et les détails ​à propos d'​Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]].
-**[[apt>apache2,​php5,​mysql-server ​|apache2, ​ php5, mysql-server]]**+
  
-En ligne de commande : +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>​>]].
-<code bash>​sudo apt-get install ​apache2 ​php5 mysql-server libapache2-mod-php5 php5-mysql</code>+
  
 +Ceci est utile en toute circonstance avec un Debian et un Ubuntu.
  
-Description des paquets : 
-  * Le paquet [[apt>​apache2|apache2]] installe le serveur [[:apache2 |Apache 2]].  ​ 
-  * Le paquet [[apt>​php5|php5]] installe le langage [[:php |PHP 5]] 
-  * Le paquet [[apt>​libapache2-mod-php5|libapache2-mod-php5]] (module d'​intégration dans Apache) est installé automatiquement ((grâce aux dépendances du précédent ( à vérifier) )). 
-  * Le paquet [[apt>​mysql-server|mysql-server]] installe le serveur [[:mysql |MySQL]]. 
-  * Le paquet [[apt>​php5-mysql|php5-mysql]] installe le module d'​interface avec php. ((vérifier s'il n'est pas installé automatiquement ​ grâce aux dépendances (non réalisé pour Ubuntu 13.04) )). 
  
-Une fois les paquets installés, ouvrez un des liens suivants dans votre navigateur : +==== Configuration de MySQL ====
-  * [[http://​127.0.0.1/​]] +
-  * [[http://​localhost]]+
  
-Si le message <<​**It works!**>>​ s'​affiche,​ votre serveur ​Lamp est correctement installé.+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]]. 
 +Il est courant d'​installer également [[:​PHPMyAdmin]] afin de gérer la base de donnée MySQL dans une interface Web écrite en PHP.
  
-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>​+==== Configuration du répertoire ​de travail ====
  
-Si vous avez activé le module userdir ((permettant à chaque utilisateur d'​avoir son propre site dans public_html)),​ il faut commenter les lignes correspondantes (avec ##) dans le fichier php5.conf qui se trouve dans /​etc/​apache2/​mods-enabled.+La configuration du répertoire de travail est accessible sur cette [[tutoriel:​lamp_repertoires_de_travail |page]]
  
-<​code>​ 
-<​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 du démarrage automatique ​de LAMP ====
-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 ====+=== Empêcher LAMP de démarrer automatiquement  ​===
  
-La configuration et les détails à propos d'​Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]].+<note warning>​FIXME
  
 +La documentation indiquée dans ce paragraphe n'est plus d'​actualité. Ne suivez pas cette procédure.</​note>​
  
-==== Configuration de PHP ====+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>​
  
-La configuration et les détails à propos de PHP sont accessibles sur la [[:php |page dédiée à ce langage]]. +Et pour mysql
-==== Configuration de MySQL ====+<​code>​sudo sh -c "echo manual >> /​etc/​init/​mysql.override."</​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]]. +Vous pourrez donc ensuite ​les lancer manuellement
-Il est courant d'​installer également [[:PHPMyAdmin]] afin de gérer la base de donnée MySQL dans une interface Web écrite en PHP+Pour Apache: 
-==== Configuration du répertoire de travail ====+<​code>/​etc/​init.d/apache2 start</​code>​ 
 + 
 +et pour MySql 
 +<​code>​mysql -u root -p -hlocalhost</​code>​
  
-La configuration du répertoire de travail est accessible sur cette [[tutoriel:​lamp_repertoires_de_travail |page]] 
  
 ===== Utilisation et accès au serveur ===== ===== Utilisation et accès au serveur =====
 +
 Une fois l'​installation effectuée, le serveur est accessible (via un navigateur internet) à l'une des URL (locales) suivantes: 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://​127.0.0.1
Ligne 114: Ligne 135:
   * http://​hostname ("​hostname"​ étant le nom de votre ordinateur)   * http://​hostname ("​hostname"​ étant le nom de votre ordinateur)
  
-Il existe des interfaces graphiques pour utiliser Apache et MySQL. De la plus simple à la plus complète ​[[http://​websyys.olympe.in/​localserver-indicator-raccourcis-pour-serveur-local-ubuntu-13-10.html|localserver-indicator]], ​[[https://​launchpad.net/​localhost-indicator|localhost-indicator]],​ [[https://​launchpad.net/​rapache|rapache]] et [[webmin]] (à utiliser avec prudence).+Il existe des interfaces graphiques pour utiliser Apache et MySQL : [[https://​launchpad.net/​localhost-indicator|localhost-indicator]],​ [[https://​launchpad.net/​rapache|rapache]] et [[webmin]] (à utiliser avec prudence). 
 + 
 + 
 +===== Problèmes courants ===== 
 + 
 +==== Plusieurs version de PHP installées simultanément ==== 
 + 
 +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]]).\\ 
 +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 ==== 
 + 
 +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 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* 
 +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://​idealogeek.fr/​2013/​serveur-web-linux-lamp/​|Installation & configuration de base d'un serveur web (LAMP)]] +  * [[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)** 
-  ​* [[http://​www.it-connect.fr/​installer-un-serveur-lamp-linux-apache-mysql-php/​|Tutoriel : Mise en place d'un serveur LAMP]] sur IT-Connect+  * [[xampp]] Une version de LAMP simplifiée,​ servant pour le développement (seulement).
  
-//​Contributeurs : [[utilisateurs:​oxossi]]+//​Contributeurs : [[utilisateurs:​oxossi]], [[utilisateurs:​albanmartel]],​ [[utilisateurs:​harren]].


Le contenu de ce wiki est sous licence : CC BY-SA v3.0