Installer LAMP sur Manjaro

Au quotidien, j’utilise Linux comme système d’exploitation et plus précisément la distribution Manjaro. Pour pouvoir travailler sur mes projets web en local, il fallait que j’installe LAMP. Cet article résume les différentes étapes pour configurer LAMP sur Manjaro. Si vous utilisez une autre distribution, ces étapes seront sans doute un peu différentes.

Qu’est-ce que LAMP ?

LAMP est un acronyme pour Linux Apache MySQL PHP. Il s’agit d’un ensemble de logiciels permettant de mettre en place un serveur web.

  • Linux désigne le système d’exploitation
  • Apache correspond au serveur HTTP
  • MySQL est un serveur de base de données
  • PHP est un langage de programmation
LAMP (Linux Apache MySQL PHP)

Il existe différentes variantes pour mettre en place le serveur web. Voici quelques exemples :

  • Linux peut être remplacé par Windows (WAMP) ou Mac (MAMP)
  • Apache peut être remplacé par Nginx (LEMP)
  • MySQL peut être remplacé par MariaDB ou PostgreSQL
  • PHP peut être remplacé par Python ou Perl

Pourquoi Manjaro ?

Manjaro est tout simplement ma distribution Linux.

Si vous souhaitez installer LAMP sur un serveur dédié ou virtualisé, cet article n’est peut-être pas fait pour vous. Manjaro n’est pas le meilleur choix pour votre serveur puisqu’il s’agit d’une « rolling releases ». Vous devriez plutôt regarder pour une distribution stable comme Debian.

Si, comme moi, vous utilisez Manjaro au quotidien comme distribution, vous pouvez tout à fait installer LAMP et obtenir un environnement de travail fonctionnel. Si vous ne savez pas comment procéder, cet article est fait pour vous.

Les étapes d’installation et de configuration

Lorsque j’ai décidé d’installer LAMP sur ma distribution, j’ai commencé par chercher des tutoriels et des wikis. Je voulais m’assurer de ne pas oublier une étape et surtout, mes connaissances en serveur étant encore limitées, je préférais ne pas faire d’erreur. Le wiki d’Archlinux est sans doute le plus complet, mais les informations sont un peu éparpillées pour ce que je cherchais à faire.

Je souhaitais installer LAMP avec PHPMyAdmin. Plutôt que de travailler dans « /srv/http/ », je souhaitais mettre en place un dossier de travail dans mon répertoire « home » qui contiendrait les différents sites. Ces sites devaient être configurés en créant un serveur virtuel (« virtual host ») pour chacun. Au final, je pourrais y accéder dans le navigateur en saisissant « https://www.site.test/ » où site est le nom du site.

Installer les paquets nécessaires

Pour installer LAMP sur Manjaro, plusieurs paquets sont nécessaires : « apache », « mariadb » (plutôt que MySQL), « php » et « php-apache ». Je vais ajouter « phpmyadmin » pour gérer les bases de données.

Dans votre terminal, saisissez :

sudo pacman -S apache mariadb php php-apache phpmyadmin

Configurer MariaDB (MySQL)

Dans un terminal :

// Nous initialisons les tables.
sudo mariadb-install-db --user=mysql --basedir=/usr –datadir=/var/lib/mysql

// Nous démarrons le service.
sudo systemctl start mysqld

// Nous sécurisons l’installation.
mysql_secure_installation

Là, le Wiki d’Archlinux ne nous détaille pas la procédure à suivre, mais celle-ci est assez bien détaillée. Voici, ce qu’il faut répondre à chaque interaction :

Enter current password for root (enter for none):
// Pas de mot de passe, il faut presser la touche Entrée.

Switch to unix_socket authentication [Y/n]
// Nous répondons "N", nous utiliserons plutôt un mot de passe.

Change the root password? [Y/n]
// Nous répondons "Y", nous allons pouvoir définir le mot de passe pour root.

Remove anonymous users? [Y/n]
// Nous répondons "Y", nous supprimons les utilisateurs anonymes.

Disallow root login remotely? [Y/n]
// Nous répondons "Y", pour une installation plus sécurisée.

Remove test database and access to it? [Y/n]
// Nous répondons "Y", la base de donnée test ne nous est pas utile.

Reload privilege tables now? [Y/n]
// Nous répondons "Y", il faut recharger les tables.

MariaDB est maintenant configuré. Il est possible de se connecter en root, de créer un nouvel utilisateur ou une nouvelle base de donnée. Comme nous allons utiliser PHPMyAdmin, nous nous arrêtons là pour MariaDB.

Configurer PHP

Maintenant il faut configurer PHP pour prendre en compte MariaDB. Dans les instructions ci-dessous, j’utilise l’éditeur de texte nano parce qu’il est simple d’utilisation. Vous pouvez tout à fait le remplacer par un autre éditeur comme vim.

Dans un terminal, nous allons saisir :

sudo nano /etc/php/php.ini

Il faut dé-commenter deux lignes :

// À titre indicatif, vers la ligne 923 lors de mon installation.
extension=mysqli.so
extension=pdo_mysql.so

Configurer Apache

Nous pouvons maintenant configurer Apache. Pour cela, toujours dans un terminal, il faut saisir :

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

Le wiki d’Archlinux (en anglais cette fois) nous précise qu’une librairie contenue dans le paquet « php-apache » génère une erreur avec « mod_mpm_event.so ». La documentation d’Apache explique que « mod_mpm_prefork.so » permet une plus grande stabilité et une meilleure compatibilité avec les logiciels anciens en comparaison avec « mod_mpm_event.so ».

Nous allons donc commenter la première ligne et dé-commenter la deuxième.

// À titre indicatif, vers la ligne 66 lors de mon installation.
#LoadModule mpm_event_module modules/mod_mpm_event.so

// À titre indicatif, vers la ligne 67 lors de mon installation.
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Maintenant, il faut activer PHP. Nous repérons la liste des « LoadModule » et, à la fin de celle-ci, nous rajoutons :

# Load php7 module
LoadModule php7_module modules/libphp7.so
AddHandler php7-script .php

Nous repérons la liste des « Include » et, à la fin de celle-ci, nous rajoutons :

# PHP settings
Include conf/extra/php7_module.conf

Par défaut, Apache est configuré pour permettre l’accès au répertoire « $HOME/public_html » depuis l’URL « http://localhost/~user/ ». Je préfère empêcher cet accès puisque je ne l’utiliserai pas, donc je vais commenter la ligne suivante :

// À titre indicatif, vers la ligne 512 lors de mon installation.
#Include conf/extra/httpd-userdir.conf

Nous allons préciser le nom du serveur et le port à utiliser.

// À titre indicatif, vers la ligne 235 lors de mon installation.
// Remplacer :
#ServerName www.example.com:80

// Par :
ServerName localhost:80

Pour gérer les redirections via htaccess, il faut également dé-commenter :

// À titre indicatif, vers la ligne 189 lors de mon installation.
LoadModule rewrite_module modules/mod_rewrite.so

Vous pouvez maintenant démarrer le serveur Apache en saisissant la commande :

systemctl start httpd

Votre serveur LAMP est maintenant fonctionnel. Toutefois, si vous avez suivi, je n’ai pas créé d’utilisateur MariaDB ni de base de données.

Configurer PHPMyAdmin

Dans un terminal, saisissez :

sudo nano /etc/httpd/conf/extra/httpd-phpmyadmin.conf

// Nous insérons dans le fichier les lignes suivantes :

Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

Nous sauvegardons, puis nous allons éditer à nouveau le fichier de configuration d’Apache :

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

// Nous ajoutons :

# phpMyAdmin configuration
Include conf/extra/httpd-phpmyadmin.conf

PHPMyAdmin est maintenant disponible via l’URL « http://localhost/phpmyadmin ». Pour vous connecter en « root », il faut que vous réutilisiez le mot de passe défini lors de l’installation de MariaDB. Une fois connecté, il se peut que vous ayez des avertissements.

Si vous voyez :

$cfg[‘TempDir’] (/usr/share/webapps/phpMyAdmin/tmp/) n’est pas accessible. phpMyAdmin est incapable de mettre en cache les modèles et de ce fait sera lent.

Il faut définir un dossier temporaire pour PHPMyAdmin. Dans un terminal, saisissez :

sudo nano /usr/share/webapps/phpMyAdmin/config.inc.php

// À titre indicatif, vers la ligne 155 lors de mon installation.
$cfg['TempDir'] = '/tmp/phpmyadmin';

Si vous voyez :

Le fichier de configuration nécessite maintenant une phrase de passe secrète (blowfish_secret).

Il faut définir cette phrase en générant une clé aléatoire de 32 caractères. Dans un terminal, saisissez :

sudo nano /usr/share/webapps/phpMyAdmin/config.inc.php

// Remplacez "phrasede32caracteres" par la vôtre.
$cfg['blowfish_secret'] = 'phrasede32caracteres';

Vous pouvez maintenant configurer un utilisateur et une base de données dans PHPMyAdmin. Je ne détaillerai pas la méthode dans cet article, mais l’outil est assez intuitif.

LAMP sur Manjaro est maintenant fonctionnel

Pour démarrer Apache et MySQL, il suffit d’ouvrir un terminal et de saisir :

sudo systemctl start httpd
sudo systemctl start mysqld

Vous pouvez décider de démarrer automatiquement Apache et MySQL au démarrage du système. Pour cela, il faut saisir :

sudo systemctl enable httpd
sudo systemctl enable mysqld

Si vous faites des modifications dans la configuration d’Apache, il faudra redémarrer le service :

sudo systemctl restart httpd

Votre installation devrait maintenant fonctionner. Le répertoire d’Apache se situe dans « /srv/http/ ». Vous pouvez y créer un fichier « index.php » contenant :

<?php
phpinfo();

En vous rendant à l’adresse « http://localhost », vous devriez obtenir une page contenant le résultat de « phpinfo » et commençant par « PHP Version ».

Cependant, il nous reste quelques étapes pour parvenir à la configuration que je souhaitais. Il faut encore :

  • Configurer SSL pour accéder au site en HTTPS
  • Créer et configurer le(s) serveur(s) virtuel(s)
  • Mettre en place un espace de travail dans le répertoire « home »

L’article étant déjà suffisamment dense, je vous expliquerais ces étapes dans un prochain article.

Édition du 24/02 : cet article est désormais en ligne. Découvrez comment configurer SSL et les virtual hosts sur LAMP Manjaro.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.