Différences
Ci-dessous, les différences entre deux révisions de la page.
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 20/11/2017, 12:30] krodelabestiole [Méthode recommandée : Installation des paquets] + modules php + clean ancienne versions (inutile de spécifier les versions, du coup ça marche partout) et messages inutiles |
lamp [Le 16/01/2018, 07:28] 82.251.241.242 [Configuration du démarrage automatique de LAMP] |
||
---|---|---|---|
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 : | + | Un serveur **[[wpfr>LAMP]]** est un serveur web. Un serveur web fournit des sites internet, des 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 tableaux. Ce service peut être fournit par le logiciel [[:MySQL]] ou par [[:MariaDB]] (fork plus ouvert, plus performant, et 100% compatible MySQL). |
- | * **P**HP/Python/Perl : le langage de programmation associé | + | * **[[: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 ». Cependant, pour 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> | + | |
+ | 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). |
==== Méthode recommandée : Installation des paquets ==== | ==== Méthode recommandée : Installation des paquets ==== | ||
Ligne 42: | Ligne 42: | ||
> DROP USER 'root'@'localhost'; | > DROP USER 'root'@'localhost'; | ||
> CREATE USER 'root'@'%' IDENTIFIED BY ''; | > CREATE USER 'root'@'%' IDENTIFIED BY ''; | ||
- | > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; | + | > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; |
> FLUSH PRIVILEGES; | > FLUSH PRIVILEGES; | ||
</note> | </note> | ||
Ligne 86: | Ligne 86: | ||
==== Configuration d'Apache 2 ==== | ==== Configuration d'Apache 2 ==== | ||
- | |||
- | ==== Personnaliser Apache2 ==== | ||
La configuration et les détails à propos d'Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]]. | La configuration et les détails à propos d'Apache 2 sont accessibles sur la [[:apache2 |page dédiée à ce serveur HTTP]]. | ||
Ligne 94: | Ligne 92: | ||
Ceci est utile en toute circonstance avec un Debian et un Ubuntu. | Ceci est utile en toute circonstance avec un Debian et un Ubuntu. | ||
+ | |||
+ | |||
==== Configuration de MySQL ==== | ==== Configuration de MySQL ==== | ||
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]]. | 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. | 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 ==== | ==== Configuration du répertoire de travail ==== | ||
La configuration du répertoire de travail est accessible sur cette [[tutoriel:lamp_repertoires_de_travail |page]] | La configuration du répertoire de travail est accessible sur cette [[tutoriel:lamp_repertoires_de_travail |page]] | ||
+ | |||
==== Configuration du démarrage automatique de LAMP ==== | ==== Configuration du démarrage automatique de LAMP ==== | ||
- | === Empêcher LAMP de démarrer automatiquement ==== | + | === Empêcher LAMP de démarrer automatiquement === |
Par défaut, apache démarre automatiquement lorsque vous allumez votre ordinateur. | Par défaut, apache démarre automatiquement lorsque vous allumez votre ordinateur. | ||
Pour empêcher cela : | Pour empêcher cela : | ||
- | <code>sudo update-rc.d -f apache2 disable</code> | + | <code>sudo systemctl disable apache2</code> |
- | Et pour mysql: | + | Et pour mysql : |
- | <code>sudo sh -c "echo manual >> /etc/init/mysql.override."</code> | + | <code>sudo systemctl disable mysql</code> |
Vous pourrez donc ensuite les lancer manuellement: | Vous pourrez donc ensuite les lancer manuellement: | ||
- | Pour Apache: | + | Pour Apache : |
- | <code>/etc/init.d/apache2 start</code> | + | <code>sudo systemctl start apache2</code> |
et pour MySql | et pour MySql | ||
- | <code>mysql -u root -p -hlocalhost</code> | + | <code>sudo systemctl start mysql</code> |
+ | |||
===== 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 124: | Ligne 131: | ||
* 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]] FIXME [lien cassé] | + | 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> | ||
- | [[https://launchpad.net/localhost-indicator|localhost-indicator]], [[https://launchpad.net/rapache|rapache]] et [[webmin]] (à utiliser avec prudence). | + | 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://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 ]] **(fr)** |