Debian : Installer un serveur LAMP (Apache MariaDB PHP)
Table des matières
LAMP est un acronyme :
Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MySQL ou maintenant MariaDB, son fork.
D'abord, on met le système à jour :
On va avoir besoin de
On installe le serveur apache et son module permettant de gérer PHP plus tard :
A partir de là, si on accède au serveur via son adresse IP, on a la page d'Apache, le serveur web fonctionne.
On peut s'assurer que le service démarrera automatiquement au démarrage :
On peut au passage activer quelques modules d'Apache. Sous Debian, c'est la commande a2enmod qui permet cela.
Pour la réécriture d'url :
Pour la compression :
Pour contrôler et modifier les headers :
Tous les modules se trouvent dans /etc/apache2/mods-available et ceux activés dans /etc/apache2/mods-enabled
Après chaque activation de module, il faut relancer apache. moi je préfère juste recharger la configuration :
La configuration d'Apache se fait via le fichier /etc/apache2/apache2.conf. C'est la configuration générale :
Pour activer le module rewrite :
On peut aussi masquer les infos de version, de distribution en ajoutant dans ce même fichier :
Il faut évidemment recharger la configuration d'apache après chaque modification.
D'abord, on installe PHP. Sous Debian, PHP par défaut est PHP5. Il est obsolète, on va lui préférer PHP7 :
A ce stade, PHP est installé, mais on n'a pas grand chose. Il faut installer des modules en fonction des besoins. Avec PHP 7, les modules sont nommés de la manière suivante : php7.0-xxx. On peut les lister avec :
Pour notre utilisation, on va installer les plus courants :
Pour interragir avec SQL :
Ce paquet générique fournit php7.0-mysqli et php7.0-pdo-mysql.
Une fois tout ça installé, on recharge apache :
On va tester le bon fonctionnement de PHP.
On se rend dans le répertoire par défaut de la racine d'apache :
Et on créé un fichier dans lequel on demande d'afficher les infos PHP :
Ensuite, on affiche notre page via le navigateur :
On peut éditer les options de PHP via le fichier /etc/php/7.0/apache2/php.ini ou créer un fichier personnalisé dans /etc/php/7.0/apache2/conf.d.
Maintenant, il ne reste plus que le moteur de base de données à installer.
On installe donc MariaDB, le serveur :
Une fois fait, on démarre l'installation :
Une série de questions vont s'afficher.
On définit le mot de passe root :
On supprime les utilisateurs anonymes, les connexions distantes de root, etc...
On teste la connexion à la base de données :
On créé ensuite un utilisateur avec tous les droits pour ne pas utiliser root :
Et on se déconnecte :
On peut s'assurer que le service se lance à chaque démarrage du serveur :
Notre serveur LAMP esr installé
Pour les virtualhosts, le fichier du virtualhost par défaut est /etc/apache2/sites-available000-default.conf. On peut éditer celui là où, dans la logique debian, si on peut créer plusieurs Virtualhosts pour nos différents sites dans /etc/apache2/sites-available.
Par exemple :
Ensuite, on active le site avec a2ensite :
Et on recharge apache2 :
Si on souhaite activer HTTPS, il faut installer openssl si ce n'est pas déjà fait.
Ensuite, il nous faut activer le module SSL :
Et activer le site par défaut SSL :
En se connectant en HTTPS, ça fonctionne. On a une erreur de certificat, normal, il est autogénéré. Pour celà, il faut utiliser un certificat reconnu par une autorité de certification ou bien se générer un certificat avec Lets Encrypt : https://www.linuxtricks.fr/wiki/let-s-encrypt-mise-en-place
Introduction
LAMP est un acronyme :
- Linux : Le système d'exploitation
- Apache : Le serveur Web
- MySQL / MariaDB : Le serveur de Base de données
- PHP : Le langage de script
Avec LAMP, on peut donc mettre en place un serveur Web, hébergeant un site web dynamique écrit en PHP, tout en allant chercher des données dans une base MySQL ou maintenant MariaDB, son fork.
Installation
D'abord, on met le système à jour :
Code BASH :
apt-get update apt-get upgrade
On va avoir besoin de
- apache2, c'est le serveur web
- php7 c'est le langage php
- libapache2-mod-php7.0 c'est le module apache pour exécuter php
- mariadb-server c'est le serveur de base de données
Le serveur Web : apache
On installe le serveur apache et son module permettant de gérer PHP plus tard :
Code BASH :
apt-get install apache2 libapache2-mod-php7.0
A partir de là, si on accède au serveur via son adresse IP, on a la page d'Apache, le serveur web fonctionne.
On peut s'assurer que le service démarrera automatiquement au démarrage :
Code BASH :
systemctl enable apache2
On peut au passage activer quelques modules d'Apache. Sous Debian, c'est la commande a2enmod qui permet cela.
Pour la réécriture d'url :
Code BASH :
a2enmod rewrite
Pour la compression :
Code BASH :
a2enmod deflate
Pour contrôler et modifier les headers :
Code BASH :
a2enmod headers
Tous les modules se trouvent dans /etc/apache2/mods-available et ceux activés dans /etc/apache2/mods-enabled
Après chaque activation de module, il faut relancer apache. moi je préfère juste recharger la configuration :
Code BASH :
systemctl reload apache2
La configuration d'Apache se fait via le fichier /etc/apache2/apache2.conf. C'est la configuration générale :
Code BASH :
vi /etc/apache2/apache2.conf
Pour activer le module rewrite :
Code BASH :
<ifModule mod_rewrite.c> RewriteEngine On </ifModule>
On peut aussi masquer les infos de version, de distribution en ajoutant dans ce même fichier :
Code BASH :
ServerSignature Off
Il faut évidemment recharger la configuration d'apache après chaque modification.
PHP
D'abord, on installe PHP. Sous Debian, PHP par défaut est PHP5. Il est obsolète, on va lui préférer PHP7 :
Code BASH :
apt-get install php7.0 php7.0-cli
A ce stade, PHP est installé, mais on n'a pas grand chose. Il faut installer des modules en fonction des besoins. Avec PHP 7, les modules sont nommés de la manière suivante : php7.0-xxx. On peut les lister avec :
Code BASH :
apt-cache search php7.0-
Pour notre utilisation, on va installer les plus courants :
Code BASH :
apt-get install php7.0-curl php7.0-gd php7.0-intl php7.0-mcrypt php7.0-memcache php7.0-xml php7.0-zip php7.0-mbstring php7.0-json
Pour interragir avec SQL :
Code BASH :
apt-get install php7.0-mysql
Ce paquet générique fournit php7.0-mysqli et php7.0-pdo-mysql.
Une fois tout ça installé, on recharge apache :
Code BASH :
systemctl reload apache2
On va tester le bon fonctionnement de PHP.
On se rend dans le répertoire par défaut de la racine d'apache :
Code BASH :
cd /var/www/html
Et on créé un fichier dans lequel on demande d'afficher les infos PHP :
Code BASH :
echo "<?php phpinfo(); ?>" > test.php
Ensuite, on affiche notre page via le navigateur :
On peut éditer les options de PHP via le fichier /etc/php/7.0/apache2/php.ini ou créer un fichier personnalisé dans /etc/php/7.0/apache2/conf.d.
MariaDB : La base de données
Maintenant, il ne reste plus que le moteur de base de données à installer.
On installe donc MariaDB, le serveur :
Code BASH :
apt-get install mariadb-server
Une fois fait, on démarre l'installation :
Code BASH :
mysql_secure_installation
Une série de questions vont s'afficher.
On définit le mot de passe root :
Code BASH :
Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully!
On supprime les utilisateurs anonymes, les connexions distantes de root, etc...
Code BASH :
Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
On teste la connexion à la base de données :
Code BASH :
mysql -u root -p
On créé ensuite un utilisateur avec tous les droits pour ne pas utiliser root :
Code SQL :
CREATE USER 'adrien'@'localhost' IDENTIFIED BY 'mdp'; GRANT ALL PRIVILEGES ON *.* TO 'adrien'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Et on se déconnecte :
Code SQL :
exit
On peut s'assurer que le service se lance à chaque démarrage du serveur :
Code BASH :
systemctl enable mariadb
Notre serveur LAMP esr installé
Les virtualhosts sous Debian...
Pour les virtualhosts, le fichier du virtualhost par défaut est /etc/apache2/sites-available000-default.conf. On peut éditer celui là où, dans la logique debian, si on peut créer plusieurs Virtualhosts pour nos différents sites dans /etc/apache2/sites-available.
Par exemple :
Code BASH :
vi /etc/apache2/sites-available/linuxtricksdebian.conf
Code BASH :
<VirtualHost *:80> ServerName linuxtricksdebian.fr ServerAlias www.linuxtricksdebian.fr DocumentRoot /var/www/linuxtricksdebian <Directory /var/www/linuxtricksdebian> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Ensuite, on active le site avec a2ensite :
Code BASH :
a2ensite linuxtricksdebian
Et on recharge apache2 :
Code BASH :
systemctl reload apache2
Activer HTTPS : mod SSL
Si on souhaite activer HTTPS, il faut installer openssl si ce n'est pas déjà fait.
Ensuite, il nous faut activer le module SSL :
Code BASH :
a2enmod ssl
Et activer le site par défaut SSL :
Code BASH :
a2ensite default-ssl
En se connectant en HTTPS, ça fonctionne. On a une erreur de certificat, normal, il est autogénéré. Pour celà, il faut utiliser un certificat reconnu par une autorité de certification ou bien se générer un certificat avec Lets Encrypt : https://www.linuxtricks.fr/wiki/let-s-encrypt-mise-en-place