Installation de LAMP (Linux, Apache, MySQL/MariaDB et PHP/PhpMyAdmin) sous Arch Linux

Arch Linux offre un environnement système souple et avancé et est une solution puissante idéale pour le développement de applications Web sur de petits systèmes non critiques en raison du fait qu’il est complet et Open Source et fournit les dernières versions à jour des noyaux et des logiciels Web pour serveurs et bases de données.

Install LAMP in Arch Linux

Le but principal de ce tutoriel est de vous guider pas à pas à travers les instructions qui aboutiront à l’installation de l’une des combinaisons de logiciels les plus utilisées dans le développement Web : LAMP (Linux, Apache, MySQL/MariaDB, et PHP/PhpMyAdmin) et il vous présentera certaines fonctionnalités agréables (scripts Bash rapides et sales) qui ne sont pas présentes dans un système Arch Linux, mais qui peuvent faciliter le travail de création de multiples hôtes virtuels, générer certificats SSL et clés nécessaires pour les transactions sécurisées HTTS.

Exigences

  1. Processus d’installation précédente d’Arch Linux – sauter la dernière partie avec le DHCP.
  2. Installation précédente de LEMP sur Arch Linux – seulement la partie de configuration de l’adresse IP statique et de l’accès distant SSH.

Étape 1 : Installer le logiciel de base LAMP

1. Après l’installation minimale du système avec une adresse IP statique et l’accès distant au système à travers SSH, mettez à jour votre boîte Arch Linux en utilisant l’outil pacman.

$ sudo pacman -Syu

2. Lorsque le processus de mise à niveau est terminé, installez LAMP à partir des éléments, commencez d’abord par installer le serveur Web Apache et démarrer/vérifier chaque processus daemon de serveur.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd
Install Apache Web Server

3. Installez le langage de script côté serveur dynamique PHP et son module Apache.

$ sudo pacman -S php php-apache

4. À la dernière étape, installez la base de données MySQL, choisissez la fork de la base de données communautaire 1 (MariaDB) puis démarrez et vérifiez l’état du daemon.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld
Install MySQL Database
Start MySQL Database

Maintenant, vous avez installé et démarré le logiciel LAMP de base avec les configurations par défaut jusqu’à présent.

Étape 2 : Sécuriser la base de données MySQL

5. La prochaine étape consiste à sécuriser la base de données MySQL en définissant un mot de passe pour le compte root, supprimant les comptes utilisateurs anonymes, supprimant la base de tests et refusant la connexion à distance pour l’utilisateur root (appuyez sur la touche [Entrée] pour le mot de passe actuel du compte root et répondez par Oui à toutes les questions de sécurité).

$ sudo mysql_secure_installation
Secure MySQL Database
Set MySQL root Password

6. Vérifiez la connectivité de la base de données MySQL en exécutant la commande suivante, puis quittez l’interface de la base de données avec l’instruction quit ou exit.

$ mysql -u root -p
Verify MySQL Database Connectivity

Étape 3 : Modifier le fichier de configuration principal d’Apache

7. Les configurations suivantes sont principalement liées au serveur Web Apache pour fournir une interface dynamique pour l’hébergement virtuel avec le langage de script PHP, les hôtes virtuels SSL ou non-SSL et peuvent être effectuées en modifiant les configurations du fichier de service httpd.

Ouvrez d’abord le fichier de configuration principal d’Apache avec votre éditeur de texte favori.

$ sudo nano /etc/httpd/conf/httpd.conf

Ajoutez les deux lignes suivantes tout en bas du fichier.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf
Include Virtual Host Configuration

Le rôle des déclarations Include ici est d’indiquer à Apache qu’à partir de maintenant, il doit lire les configurations supplémentaires à partir de tous les fichiers situés dans /etc/httpd/conf/sites-enabled/ (pour l’ Hébergement Virtuel) et /etc/httpd/conf/mods-enabled/ (pour les modules de serveur activés) chemins système se terminant par une extension .conf.

8. Après avoir été instruit avec ces deux directives, créez les répertoires système nécessaires en utilisant les commandes suivantes.

$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled

Le chemin sites-available contient tous les fichiers de configurations des Hôtes Virtuels qui ne sont pas activés sur Apache, mais le prochain script Bash utilisera ce répertoire pour lier et activer les sites Web qui s’y trouvent.

Étape 4 : Créer les Commandes Apache a2ensite et a2dissite

9. Il est maintenant temps de créer les scripts Apache a2ensite et a2dissite qui serviront de commandes pour activer ou désactiver les fichiers de configuration des Hôtes Virtuels. Tapez la commande cd pour revenir à votre chemin utilisateur $HOME et créez vos scripts bash a2eniste et a2dissite en utilisant votre éditeur préféré.

$ sudo nano a2ensite

Ajoutez le contenu suivant dans ce fichier.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi
Create a2eniste Apache Script

Maintenant, créez le fichier script bash a2dissite.

$ sudo nano a2dissite

Ajoutez le contenu suivant.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi
Create a2dissite Apache Script

10. Après la création des fichiers, attribuez-leur les autorisations d’exécution et copiez-les dans un répertoire exécutable $PATH pour les rendre disponibles au niveau de tout le système.

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/
Set Execute Permissions

Étape 5 : Créer des Hôtes Virtuels dans Apache

11. Le fichier de configuration par défaut du Virtual Host pour le serveur Web Apache sur Arch Linux est fourni par le fichier httpd-vhosts.conf situé dans le chemin /etc/httpd/conf/extra/, mais s’il s’agit d’un système utilisant beaucoup de Virtual Hosts, il peut être très difficile de suivre quels sites Web sont activés ou non. Si vous souhaitez désactiver un site Web, vous devez commenter ou supprimer toutes ses directives, ce qui peut être une mission difficile si votre système propose de nombreux sites Web et que votre site possède de nombreuses directives de configuration.

En utilisant les chemins sites-available et sites-enabled, cela simplifie grandement la tâche d’activer ou de désactiver des sites Web et préserve également tous les fichiers de configuration de vos sites Web, qu’ils soient activés ou non.

À l’étape suivante, nous allons créer le premier Virtual Host qui pointe vers localhost par défaut avec le chemin par défaut de DocumentRoot pour servir les fichiers des sites Web (/srv/http.

$ sudo nano /etc/httpd/conf/sites-available/localhost.conf

Ajoutez les directives Apache suivantes ici.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create Virtual Hosts in Apache

Les déclarations les plus importantes ici sont les directives Port et ServerName qui indiquent à Apache d’ouvrir une connexion réseau sur le port 80 et de rediriger toutes les requêtes avec le nom localhost pour servir les fichiers situés dans le chemin /srv/http/.

12. Après la création du fichier localhost, activez-le puis redémarrez le démon httpd pour visualiser les changements.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd
Active a2ensite Script

13. Ensuite, pointez votre navigateur vers http://localhost, si vous l’exécutez depuis un système Arch, ou http://Arch_IP si vous utilisez un système distant.

Browse Apache

Étape 6 : Activer SSL avec l’hébergement virtuel sur LAMP

SSL (Secure Sockets Layer) est un protocole conçu pour crypter les connexions HTTP sur les réseaux ou Internet, ce qui permet de transmettre les données sur un canal sécurisé en utilisant des clés de cryptographie symétrique/asymétrique et est fourni dans Arch Linux par le paquet OpenSSL.

14. Par défaut, le module SSL n’est pas activé sur Apache dans Arch Linux et peut être activé en décommentant le module mod_ssl.so du fichier de configuration principal httpd.conf et le fichier Include httpd-ssl.conf situé dans le chemin supplémentaire httpd.

Mais pour simplifier les choses, nous allons créer un nouveau fichier de module pour SSL dans le chemin mods-enabled et laisser le fichier de configuration principal d’Apache inchangé. Créez le fichier suivant pour le module SSL et ajoutez le contenu ci-dessous.

$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Ajoutez le contenu suivant.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300
Enable SSL with Virtual Hosting

15. Maintenant, créez un fichier de virtual host qui pointe vers le même nom de localhost, mais en utilisant cette fois des configurations de serveur SSL, et changez légèrement son nom pour vous rappeler qu’il s’agit de localhost avec SSL.

$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Ajoutez le contenu suivant à ce fichier.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email protected]
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>
Create SSL Virtual Host

Outre les directives Port et ServerName, les autres directives importantes ici sont celles qui pointent vers le fichier de Certificat SSL et le fichier de Clé SSL qui ne sont pas encore créés, donc ne redémarrez pas le serveur Web Apache ou vous obtiendrez des erreurs.

16. Pour créer le fichier de certificat SSL requis et les clés, installez le paquet OpenSSL en lançant la commande ci-dessous.

$ sudo pacman -S openssl

17. Ensuite, créez le script Bash suivant qui crée automatiquement et stocke tous vos Certificats Apache et Clés dans le chemin du système /etc/httpd/conf/ssl/.

$ sudo nano apache_gen_ssl

Ajoutez le contenu du fichier suivant, enregistrez-le et rendez-le exécutable.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0
Store Apache Certificates and Keys
$ sudo chmod +x apache_gen_ssl

Si vous souhaitez que le script soit disponible dans tout le système, copiez-le dans un $PATH exécutable.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. Générez maintenant votre Certificat et vos Clés en exécutant le script. Fournissez vos options SSL et n’oubliez pas que le nom du certificat et le Nom Commun doivent correspondre à votre domaine officiel (Nom de Domaine Complet).

$ sudo ./apache_gen_ssl
Create Apache Certificates and Keys
Enter Certificates Details

Après la création du certificat et des clés, n’oubliez pas de modifier les configurations de votre hôte virtuel SSL pour qu’elles correspondent au nom de ce certificat.

19. La dernière étape consiste à activer le nouvel hôte virtuel SSL et à redémarrer votre serveur pour appliquer les configurations.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd
Activate SSL Virtual Host

Et voilà ! Pour vérifier, ouvrez un navigateur et ajoutez l’adresse IP d’Arch dans l’URL en utilisant le protocole HTTPS : https://localhost ou https://IP_du_système.

Browse Apache over SSL

Étape 7 : Activer PHP sur Apache

20. Par défaut, Apache ne sert que des fichiers statiques HTML dans Arch Linux sans prise en charge de langages de script dynamiques. Pour activer PHP, ouvrez d’abord le fichier de configuration principal d’Apache, puis recherchez et décommentez la déclaration LoadModule suivante (php-apache ne fonctionne pas avec mod_mpm_event sous Arch Linux).

$ sudo nano /etc/httpd/conf/httpd.conf

En utilisant [Ctrl]+[w], recherchez et commentez la ligne suivante pour qu’elle ressemble à ceci.

#LoadModule mpm_event_module modules/mod_mpm_event.so
Enable PHP Module

21. Ensuite, créez un nouveau fichier pour le module PHP dans le chemin mods-enabled avec le contenu suivant.

$ sudo nano /etc/httpd/conf/mods-enabled/php.conf

Ajoutez le contenu exactement suivant (vous devez utiliser mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf
Enable mod_mpm_prefork Module

22. Pour vérifier la configuration, créez un fichier PHP nommé info.php dans votre DocumentRoot (/srv/http/), puis redémarrez Apache et pointez votre navigateur vers le fichier info.php : https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd
Verify PHP Information

C’est tout ! Si tout ressemble à l’image ci-dessus, vous avez maintenant activé le langage de script côté serveur PHP sur Apache et vous pouvez désormais développer des sites Web en utilisant des CMS Open Source tels que WordPress par exemple.

Si vous souhaitez vérifier les configurations de syntaxe Apache et voir une liste des modules chargés sans redémarrer le démon httpd, exécutez les commandes suivantes.

$ sudo apachectl configtest
$ sudo apachectl -M

Étape 8 : Installation et configuration de PhpMyAdmin

23. Si vous ne maîtrisez pas la ligne de commande MySQL et souhaitez un accès distant simple à la base de données MySQL fourni via une interface Web, vous avez besoin du paquet PhpMyAdmin installé sur votre Arch box.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Une fois les paquets installés, vous devez activer certaines extensions PHP (mysqli.so, mcrypt.so – pour l’authentification interne) et vous pouvez également activer d’autres modules nécessaires pour les futures plateformes CMS comme openssl.so, imap.so ou iconv.so etc.

$ sudo nano /etc/php/php.ini

Localisez et décommentez les extensions mentionnées ci-dessus.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so
Install and Configuring PhpMyAdmin

De plus, sur le même fichier, recherchez et localisez l’instruction open_basedir et ajoutez le chemin système de PhpMyAdmin (/etc/webapps/ et /usr/share/webapps/) pour vous assurer que PHP peut accéder et lire des fichiers sous ces répertoires (Si vous modifiez également le chemin DocumentRoot des hôtes virtuels de /srv/http/ vers un autre emplacement, vous devez également ajouter le nouveau chemin ici).

Enable open_basedir

25. La dernière étape à suivre pour accéder à l’interface Web de PhpMyAdmin est d’ajouter des instructions Apache de PhpMyAdmin aux hôtes virtuels. Par mesure de sécurité, assurez-vous que l’interface Web de PhpMyAdmin ne soit accessible qu’à partir de localhost (ou de l’adresse IP du système) en utilisant le protocole HTTPS et pas depuis d’autres hôtes virtuels différents. Ouvrez donc votre fichier Apache localhost-ssl.conf et, en bas, avant la dernière déclaration , ajoutez le contenu suivant.

$ sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>
Create PhpMyAdmin Virtual Host Configuration

26. Ensuite, redémarrez le démon Apache et pointez votre navigateur vers l’adresse suivante pour accéder à l’interface web de PhpMyAdmin : https://localhost/phpmyadmin ou https://adresse_IP_du_système/phpmyadmin.

Access PhpMyAdmin Web Interface

27. Si, après vous être connecté à PhpMyAdmin, vous voyez une erreur concernant un blowfish_secret, ouvrez et modifiez le fichier /etc/webapps/phpmyadmin/config.inc.php et insérez une chaîne aléatoire comme dans l’instruction suivante, puis actualisez la page.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;
Fix blowfish_secret Error

Étape 9 : Activer le système LAMP au niveau du système

28. Si vous souhaitez que la pile LAMP démarre automatiquement après le redémarrage du système, exécutez les commandes suivantes.

$ sudo systemctl enable httpd mysqld
Enable LAMP System Wide

Voici quelques-uns des principaux paramètres de configuration sur LAMP nécessaires pour transformer un système Arch Linux en une plateforme web simple mais puissante, rapide et robuste, avec des logiciels serveur de pointe adaptés aux petits environnements non critiques. Cependant, si vous êtes têtu et que vous souhaitez quand même l’utiliser dans un grand environnement de production, vous devriez vous armer de beaucoup de patience, accorder une attention particulière aux mises à jour des packages et effectuer régulièrement des images de sauvegarde du système pour une restauration rapide en cas de défaillance du système.

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/