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 14/02/2019, 00:09] Flens [Création d'une base de donnée et d'un utilisateur associé] |
lamp [Le 15/09/2021, 11:14] so_good [Création d'un hôte virtuel] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag>serveur }} | {{tag>serveur }} | ||
- | ---- | + | |
====== Serveur web - LAMP ======= | ====== Serveur web - LAMP ======= | ||
Ligne 23: | Ligne 23: | ||
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 libapache2-mod-php mariadb-server php-mysql</code> | <code bash>sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql</code> | ||
- | |||
- | (attention le paquet php installe directement la dernière version de php) | ||
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.\\ | 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.\\ | ||
Ligne 49: | Ligne 47: | ||
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**).\\ | 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> | </note> | ||
+ | |||
+ | ==== Méthodes alternatives ==== | ||
+ | |||
+ | 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. | ||
+ | |||
+ | === installation via Bitnami === | ||
+ | |||
+ | [[https://bitnami.com/|Bitnami]] est un fournisseur d'applications web telles que Wordpress et Moodle, mais celle qui nous intéresse, c'est [[https://bitnami.com/stack/lamp|LAMP]]. Il suffit de télécharger l'exécutable, autoriser son exécution puis l'exécuter en suivant les instructions. | ||
+ | |||
+ | <note important>Si **[[apt>libncurses5]]** n'est pas installé, installez-le avant de lancer l'installation de LAMP sinon vous allez rencontrer des erreurs.</note> | ||
===== Personnalisation de l'installation ===== | ===== Personnalisation de l'installation ===== | ||
Ligne 83: | Ligne 91: | ||
<code>sudo systemctl start mysql</code> | <code>sudo systemctl start mysql</code> | ||
- | Les commandes disponibles sont //systemctl start//, //systemctl stop//, et //systemctl restart//. | + | Les commandes disponibles sont ''systemctl start'', ''systemctl stop'', et ''systemctl restart''. |
=== Réactiver le démarrage automatique === | === Réactiver le démarrage automatique === | ||
Ligne 93: | Ligne 101: | ||
===== Utilisation ===== | ===== 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ée 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ées MySQL]]. |
==== Création d'un hôte virtuel ==== | ==== 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//, en créera un fichier ///etc/apache2/sites-available/example.com.conf// contenant : | + | 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> | <file - example.com.conf><VirtualHost *:80> | ||
Ligne 112: | Ligne 120: | ||
</VirtualHost></file> | </VirtualHost></file> | ||
- | On déploiera ici les fichiers du site dans le répertoire ///var/www/example//. | + | 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 : | Puis on active l'hôte virtuel et on recharge la configuration d'Apache : | ||
Ligne 122: | Ligne 130: | ||
==== Création d'une base de donnée et d'un utilisateur associé ==== | ==== 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//) : | + | 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> | <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) : | + | 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; | <code mysql>CREATE DATABASE example; | ||
- | GRANT ALL PRIVILEGES ON example.* TO 'userExample'@'localhost' IDENTIFIED BY 'mot_de_passe'; | + | CREATE USER 'userExample'@'localhost' IDENTIFIED BY 'mot_de_passe'; |
+ | GRANT ALL PRIVILEGES ON example.* TO 'userExample'@'localhost'; | ||
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||
QUIT;</code> | QUIT;</code> | ||
Ligne 149: | Ligne 158: | ||
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. | 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//. | + | 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 : | + | 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 | <code>ls -al /usr/sbin/sendmail | ||
lrwxrwxrwx 1 root root 5 Jul 15 2014 /usr/sbin/sendmail -> ssmtp</code> | lrwxrwxrwx 1 root root 5 Jul 15 2014 /usr/sbin/sendmail -> ssmtp</code> | ||
+ | |||
+ | <note important> | ||
+ | sSMTP n'est plus mis à jour, privilégiez [[:msmtp]] | ||
+ | |||
+ | Pour qu'il fonctionne avec php, il faudra peut-être modifier le fichier php.ini (chercher et modifier la ligne) : | ||
+ | |||
+ | <file - /etc/php/7.2/apache2/php.ini> | ||
+ | sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -t" | ||
+ | </file> | ||
+ | Le fichier de configuration doit appartenir a www-data et avoir des droits 600 : | ||
+ | <code> | ||
+ | sudo chown www-data:www-data /etc/msmtprc | ||
+ | sudo chmod 600 /etc/msmtprc | ||
+ | </code> | ||
+ | |||
+ | FIXME Utiliser un deuxième fichier de configuration pour ne pas interférer avec le système ? (pour que root reste propriétaire du fichier de configuration principal) Exemple /etc/msmtprc_php | ||
+ | </note> | ||
===== Problèmes courants ===== | ===== Problèmes courants ===== | ||
Ligne 175: | Ligne 201: | ||
* [[:MySQL]] | * [[:MySQL]] | ||
* [[:MariaDB]] | * [[:MariaDB]] | ||
+ | * [[:tutoriel:lamp_repertoires_de_travail|Serveur LAMP - Créer un/des répertoires de travail]] | ||
//Contributeurs : [[utilisateurs:krodelabestiole]], [[utilisateurs:oxossi]], [[utilisateurs:albanmartel]], [[utilisateurs:harren]].// | //Contributeurs : [[utilisateurs:krodelabestiole]], [[utilisateurs:oxossi]], [[utilisateurs:albanmartel]], [[utilisateurs:harren]].// |