LAMP est un acronyme pour Linux, Apache, MySQL, PHP. 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 serveur web.
Voici un exemple typique d’utilisation. Un internaute veut afficher son profil sur un site web. Au moyen de son navigateur, il effectue une requête sur un serveur web en appelant une 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.
On peut déployer la pile LAMP sur n'importe quelle version ou variante d'Ubuntu. La variante Ubuntu server est particulièrement adaptée dans le cas d'un serveur headless (sans interface graphique) contrôlable à distance (par ssh notamment).
Cette méthode consiste à installer les paquets nécessaires pour Apache, PHP et MySQL :
sudo apt install apache2 php libapache2-mod-php mysql-server php-mysql
ou si vous préférez opter pour MariaDB au lieu de MySQL :
sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql
La pile LAMP est alors installée. 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 :
sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip
Description des paquets :
Une fois les paquets installés, ouvrez un des liens suivants dans votre navigateur :
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 ».
Il existe d'autres méthodes pour déployer un serveur 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 et Ubuntu documentée sur ce site.
Bitnami est un fournisseur d'applications web telles que Wordpress et Moodle. Celle qui nous intéresse est 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.
La configuration et les détails à propos d'Apache 2 sont accessibles sur la page dédiée à ce serveur HTTP.
La configuration et les détails à propos du serveur de base de données sont accessibles sur la page dédiée à MySQL ou 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 Adminer qui est plus simple à installer (il s'agit d'un simple fichier PHP) et propose à peu près les mêmes fonctionnalités.
Par défaut, Apache et MySQL ou MariaDB démarrent automatiquement lorsque vous allumez votre ordinateur.
Pour empêcher cela :
sudo systemctl disable apache2
Et pour mysql :
sudo systemctl disable mysql
Vous pourrez donc ensuite les lancer manuellement.
Pour Apache :
sudo systemctl start apache2
et pour MySql
sudo systemctl start mysql
Les commandes disponibles sont systemctl start
, systemctl stop
, et systemctl restart
.
Pour réactiver les services automatiquement au démarrage, c'est simple :
sudo systemctl enable apache2 sudo systemctl enable mysql
La mise en place d'un site internet, CMS, ou autre application web se fait en général en créant un hôte virtuel pour Apache, et une base de données MySQL.
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 :
<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>
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 :
sudo a2ensite example.com sudo systemctl reload apache2
On se connecte ensuite au serveur MySQL (en ajoutant -p
si on a spécifié un mot de passe pour root
) :
sudo mysql
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) :
CREATE DATABASE example; CREATE USER 'userExample'@'localhost' IDENTIFIED BY 'mot_de_passe'; GRANT ALL PRIVILEGES ON example.* TO 'userExample'@'localhost'; FLUSH PRIVILEGES; QUIT;
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 création de bases de données.
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 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.
SMTP est le nom du protocole qui permet de transférer des courriels. Donc un serveur SMTP, on dit aussi 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 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 symbolique vers cette solution. C'est ce qui permet au système d'envoyer des courriels, et à la fonction mail() de PHP de fonctionner :
ls -al /usr/sbin/sendmail lrwxrwxrwx 1 root root 12 nov. 28 2016 /usr/sbin/sendmail -> ../bin/msmtp
Pour mettre en place msmtp, n'hésitez pas à consulter la page de documentation dédiée.
Voir comment résoudre le problème sur la page concernant PHP.
Le problème a aussi son chapitre dédié sur la page PHP.
Les erreurs affichées dans le navigateur, numérotées de 400 à 599, sont des codes HTTP retournés par Apache.
Elles sont donc décrites sur la page concernant Apache.
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 :
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.
ou encore :
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.
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 réinstallant complètement MySQL ou MariaDB.
Contributeurs : krodelabestiole, oxossi, albanmartel, harren.