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.
Introduction
Note : Cet article regroupe deux articles que j’ai précédemment écrit. J’ai jugé qu’il était plus clair de n’en faire qu’un. J’en ai profité pour vérifier les étapes et pour rajouter des instructions propres à PHP 8. Par contre, je n’ai peut-être pas mis à jour les numéros de ligne entre les deux installations donc comme précisé, il s’agit simplement d’une indication.
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
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.
Le résultat final
Tout d’abord, parlons de ce que je souhaite accomplir ici. Je souhaite :
- installer LAMP avec PHPMyAdmin,
- travailler dans un répertoire où j’ai les droits d’écriture (comme
/home/Sites
) plutôt que dans/srv/http/
, - créer des serveurs virtuels (« virtual host ») pour ces sites,
- accéder à ces sites en HTTPS,
- que localhost pointe sur
/srv/http/default
plutôt que/srv/http/
.
Ainsi, au final, je pourrais accéder à chacun de mes sites en saisissant https://www.site.test/
dans le navigateur, où site
est le nom du site.
Installer LAMP et PHPMyAdmin
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.
Installation des 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
Configuration de MariaDB (MySQL)
Dans un terminal, nous allons initialiser les tables puis démarrer le service MySQL.
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl start mysqld
Maintenant, nous allons sécuriser l’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 :
sudo mysql_secure_installation
#output#Enter current password for root (enter for none):
# Pas de mot de passe, il faut presser la touche Entrée.
#output#Switch to unix_socket authentication [Y/n]
# Nous répondons "N", nous utiliserons plutôt un mot de passe.
#output#Change the root password? [Y/n]
# Nous répondons "Y", nous allons pouvoir définir le mot de passe pour root.
#output#Remove anonymous users? [Y/n]
# Nous répondons "Y", nous supprimons les utilisateurs anonymes.
#output#Disallow root login remotely? [Y/n]
# Nous répondons "Y", pour une installation plus sécurisée.
#output#Remove test database and access to it? [Y/n]
# Nous répondons "Y", la base de donnée test ne nous est pas utile.
#output#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.
Configuration de 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
Configuration d’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
Si vous utilisez PHP 8 (c’est probablement le cas, en 2021, si vous êtes sûr Manjaro), il faut plutôt utiliser :
# Load php8 module
LoadModule php_module modules/libphp.so
AddHandler php-script .php
Nous repérons la liste des Include
et, à la fin de celle-ci, nous rajoutons :
# PHP 7 settings
Include conf/extra/php7_module.conf
De même pour PHP 8, ce sera :
# PHP 8 settings
Include conf/extra/php_module.conf
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
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
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
Vous pouvez maintenant démarrer le serveur Apache en saisissant la commande :
sudo systemctl start httpd
Le serveur LAMP est maintenant fonctionnel. Toutefois, si vous avez suivi, je n’ai pas créé d’utilisateur MariaDB ni de base de données.
Configuration de PHPMyAdmin
Dans un terminal, saisissez :
sudo nano /etc/httpd/conf/extra/httpd-phpmyadmin.conf
Nous insérons dans le fichier les lignes suivantes :
# PHPMyAdmin
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.
Toutefois, si vous essayez de vous connecter tout de suite, vous risquez de voir des messages d’avertissement, comme l’une de ces deux erreurs :
$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.
Warning in ./libraries/classes/Config.php#1282 mkdir(): Permission denied
Pour y remédier, 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 ma 1ère installation.
// Désormais, il faut l'ajouter.
$cfg['TempDir'] = '/tmp/phpmyadmin';
Si vous essayez de vous connecter, vous allez voir :
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';
Il est possible que vous n’arriviez pas à vous connecter à PHPMyAdmin avec l’utilisateur root
. Si vous voyez une erreur de ce type :
mysqli::real_connect(): (HY000/1698): Access denied for user ‘root’@’localhost’
Alors, quelques manipulations supplémentaires sont nécessaires :
sudo mysql -u root -p
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD("votre-mot-de-passe");
MariaDB [(none)]> exit
sudo systemctl stop mysqld
sudo systemctl start mysqld
Vous pouvez maintenant vous connecter sans problème à PHPMyAdmin pour configurer un utilisateur et une base de données. Je ne détaillerai pas la méthode dans cet article, mais l’outil me semble assez intuitif.
LAMP est maintenant fonctionnel
Il est possible de s’arrêter là puisque LAMP est désormais 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
Étapes complémentaires
Configurer SSL pour l’accès en HTTPS
Pour générer un certificat SSL valide, nous allons installer et utiliser mkcert. Il s’agit d’un outil simple d’utilisation qui permet de créer des certificats approuvés localement.
sudo pacman -S mkcert
mkcert -install
#output#Created a new local CA 💥
#output#The local CA is now installed in the system trust store! ⚡️
#output#The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! 🦊
Par défaut, le fichier de configuration SSL cherche un certificat nommé server.crt
dans /etc/httpd/conf/
. Nous allons devoir remplacer cette information, mais avant cela, générons notre certificat pour localhost
. Afin de rester organiser, je place tous mes certificats dans un même dossier que je vais créer :
mkdir ~/.certs
cd ~/.certs
mkcert localhost
Maintenant, nous allons modifier le fichier de configuration de SSL :
sudo nano /etc/httpd/conf/extra/httpd-ssl.conf
# Nous remplaçons le ServerName (à titre indicatif : vers la ligne 125)
ServerName localhost:443
# Nous remplaçons le certificat et sa clé par ceux que nous avons générés.
# Vers la ligne 144
SSLCertificateFile "/home/votreNom/.certs/localhost+2.pem"
# Vers la ligne 154
SSLCertificateKeyFile "/home/votreNom/.certs/localhost+2-key.pem"
Enfin, nous allons modifier la configuration d’Apache pour activer SSL en dé-commentant trois lignes.
sudo nano /etc/httpd/conf/httpd.conf
# À titre indicatif, à la ligne 93 lors de mon installation.
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
# À titre indicatif, à la ligne 155 lors de mon installation.
LoadModule ssl_module modules/mod_ssl.so
# À titre indicatif, à la ligne 535 lors de mon installation.
Include conf/extra/httpd-ssl.conf
Modifier la destination de localhost
Par défaut, localhost pointe vers /srv/http
. Je souhaite le rediriger vers un dossier /srv/http/default
. Nous allons donc créer le dossier et modifier la configuration :
sudo mkdir /srv/http/default
sudo nano /etc/httpd/conf/extra/httpd-ssl.conf
# Vers la ligne 124, je remplace :
DocumentRoot "/srv/http/"
# Par :
DocumentRoot "/srv/http/default"
sudo nano /etc/httpd/conf/httpd.conf
# Vers les lignes 259 et 260, je remplace :
DocumentRoot "/srv/http/"
<Directory "/srv/http/">
# Par :
DocumentRoot "/srv/http/default"
<Directory "/srv/http/default">
Mise en place de notre espace de travail
Par défaut, le répertoire d’Apache se situe dans /srv/http/
. Nous pourrions nous en contenter, mais il faut les droits nécessaires pour y écrire des fichiers et dossiers. Je préfère mettre en place un dossier dans ma home pour travailler.
Pour commencer, nous allons créer ce répertoire et donner les droits à Apache pour le lire. Ainsi, nous créons le dossier puis nous vérifions que le droit d’exécution est bien présent pour Apache :
mkdir /home/votreNom/monDossierDeTravail
sudo chmod o+x ~/monDossierDeTravail
Ensuite, nous devons donner à Apache les droits d’accès à notre home. La solution la plus simple serait de faire un chmod
sur notre home mais ce n’est pas la meilleure approche en termes de sécurité.
Nous allons utiliser la liste de contrôle d’accès. Elle permet de gérer les droits d’accès de n’importe quel utilisateur ou groupe. Normalement, le paquet est installé puisqu’il s’agit d’une dépendance de systemd, mais mieux vaut vérifier.
Pour commencer, nous vérifions le point de montage du système de fichier :
lsblk -l
# Là il faut récupérer le nom correspondant à / (ex : sdb4) et l'utiliser dans :
sudo tune2fs -l /dev/sdXY | grep "Default mount options:"
#output#Default mount options: user_xattr acl
#output#
cat /proc/mounts | grep -i "/dev/sdXY"
#output#/dev/sdXY / ext4 rw,noatime 0 0
Dans la première sortie, il faut vérifier que acl
est bien présent. Dans le seconde, il faut que noacl
ne soit pas présent. Si ces deux conditions sont remplies, la liste de contrôle d’accès est utilisable.
Maintenant que ces vérifications sont faites, nous pouvons configurer les droits d’accès d’Apache sur notre home. Apache utilise le nom d’utilisateur http
.
setfacl -m "u:http:--x" /home/votreNom
Vous pouvez vérifier les changements de permission avec :
getfacl /home/votreNom
Créer et configurer un serveur virtuel
Pour créer un serveur virtuel (« virtual host »), nous devons modifier la configuration d’Apache.
sudo nano /etc/httpd/conf/httpd.conf
# À titre indicatif, à la ligne 518 lors de mon installation.
# Décommenter :
Include conf/extra/httpd-vhosts.conf
Nous allons maintenant créer le répertoire pour les fichiers de configuration des serveurs virtuels.
sudo mkdir /etc/httpd/conf/vhosts
Maintenant, imaginons que nous travaillons sur un projet se nommant « Projet » (original !). Nous allons créer un certificat pour notre site projet.test
. Pour cela, nous allons générer un certificat avec mkcert
pour ce domaine dans notre dossier précédemment créé :
mkcert -cert-file ~/.certs/projet.test.pem -key-file ~/.certs/projet.test-key.pem projet.test *.projet.test
Enfin, nous allons créer un fichier de configuration se nommant projet.test
:
sudo nano /etc/httpd/conf/vhosts/projet.test
Dans ce fichier, nous allons insérer :
<VirtualHost *:80>
ServerAdmin webmaster@projet.test
DocumentRoot "/srv/http/projet.test/htdocs/"
ServerName www.projet.test
ServerAlias *.projet.test
ErrorLog "/srv/http/projet.test/logs/error.log"
CustomLog "/srv/http/projet.test/logs/access.log" combined
<Directory /srv/http/projet.test/htdocs/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@projet.test
DocumentRoot "/srv/http/projet.test/htdocs/"
ServerName www.projet.test:443
ServerAlias *.projet.test:443
SSLEngine on
SSLCertificateFile "/home/votreNom/.certs/projet.test.pem"
SSLCertificateKeyFile "/home/votreNom/.certs/projet.test-key.pem"
ErrorLog "/srv/http/projet.test/logs/error.log"
CustomLog "/srv/http/projet.test/logs/access.log" combined
<Directory /srv/http/projet.test/htdocs/>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Si votre projet ne se nomme pas « Projet », il faudra évidemment changer toutes les occurrences dans le fichier. Vous devez également modifier le chemin vers les fichiers du certificat SSL : /home/votreNom/.certs/
en remplaçant votreNom
et le dossier si vous l’avez nommé différemment.
Vous pouvez également voir dans le fichier, que nous avons défini deux sous-dossiers dans notre projet : htdocs
et logs
. Le premier correspond au répertoire public (j’utilise ce nom parce que je suis hébergé par Gandi). Le second contiendra nos fichiers logs.
Nous allons créer ces dossiers ainsi que le dossier de notre projet. Cependant, nous n’allons pas le placer dans /srv/http/
mais dans /home/votreNom/monDossierDeTravail/
. Il s’agit bien évidemment du répertoire que nous avons configuré précédemment.
mkdir -p /home/votreNom/monDossierDeTravail/projet.test/htdocs
mkdir -p /home/votreNom/monDossierDeTravail/projet.test/logs
Pour que le chemin spécifié dans le fichier de configuration corresponde, nous allons créer un lien virtuel :
sudo ln -s /home/votreNom/monDossierDeTravail/projet.test/ /srv/http/
Nous retournons dans le fichier de configuration d’Apache pour activer notre serveur virtuel :
sudo nano /etc/httpd/conf/httpd.conf
# À la fin du fichier, nous ajoutons :
#Enabled Vhosts:
Include conf/vhosts/projet.test
Il faut maintenant modifier le fichier /etc/hosts
:
sudo nano /etc/hosts
// Nous ajoutons à la fin du fichier :
127.0.0.1 www.projet.test
Épilogue
Notre serveur Apache est désormais fonctionnel et la configuration correspond bien au souhait de départ. Avant de tester par vous-même, il est nécessaire de redémarrer Apache pour que les modifications soient prises en compte :
sudo systemctl restart httpd
Si vous accéder à https://www.projet.test/
, votre site devrait être accessible (« Accès interdit!
» est normal, vous n’avez aucun fichier dans votre répertoire). En revanche, sans www
le site n’est pas accessible. Je vous laisser mettre en place une redirection si vous en avez besoin.
Si vous souhaitez ajouter un nouveau projet, il faudra penser à :
- créer un dossier (exemple :
/home/votreNom/monDossierDeTravail/projet2.test
), - générer un nouveau certificat avec
mkcert
, - créer un fichier de configuration pour ce nouveau serveur virtuel,
- ajouter une entrée dans le fichier
/etc/hosts
.
Enfin, j’utilise le TLD .test
parce qu’il s’agit d’un domaine de premier niveau reservé. Il ne risque pas d’y avoir un conflit avec domaine accessible par Internet. De plus, il est plus court que .example
ou .localhost
; je préfère.
13 commentaires
Un grand merci pour ce tuto très précis et très clair. Je viens de passer sur Manjaro (depuis quelques années sur Mint). J’ai gagné beaucoup de temps grâce à vous.
Bonjour,
très bon tuto, juste le deuxième espace de code du 3.3 très difficile à lire au premier abord.
cat /proc/mounts | grep -i “/dev/sdXY” apparait comme faisant parti de la commande précédente, voire de la réponse de Default mount options: user_xattr acl
Bien content de trouver un article de cette qualité et en français svp!
Merci ! 😉
Bonjour et merci pour ce retour !
J’utilise PrismJS pour mettre en forme les blocs de code. Le format reprend normalement celui des terminaux (hormis les commentaires ajoutés) :
– les lignes commençant par[user@localhost] $
correspondent à la saisie d’une commande dans un terminal
– les autres lignes sont soit un commentaire quand il y a un#
devant, soit à la sortie d’une commande.Par contre, sans Javascript, je dois reconnaître que ce doit être moins clair. Mais je suppose que ce n’est pas le cas ici ; le “3.3” vient forcément de la table des matières générée avec Javascript.
Je viens d’ajouter un saut de ligne entre la sortie de la précédente commande (
Default mount option
) et la nouvelle commande à saisir. J’espère que ça rendra la séparation plus claire.
L’autre solution serait de créer 3 blocs distincts pour chaque commande, mais je ne suis pas sûr que ce soit mieux niveau compréhension.Si ça ne suffit pas, il ne faut pas hésiter à me suggérer autre chose. 😉
Autre point , je cite:
“Nous allons créer ces dossiers ainsi que le dossier de notre projet. Cependant, nous n’allons pas le placer dans /srv/http/ mais dans /home/username/monDossierDeTravail/. Il s’agit bien évidemment du répertoire que nous avons configuré précédemment.”
Attention, car toujours dans le 3.3 il est indiqué
mkdir /home/monDossierDeTravail
et non pas
mkdir /home/username/monDossierDeTravail/
Effectivement, je ne me suis pas assez relu. Je vois que le même problème revient vers la fin ; je corrige ça. Merci !
J’ai également remplacé “username” par “votreNom” que j’utilisais précédemment pour garder une certaine cohérence. Il s’agissait de deux articles distincts, je les ai combinés un peu trop vite.C’est parfait, tout fonctionne.
—— hors sujet tuto———
Je viens juste de galérer un peu avec wpcli pour installer wordpress car le dossier “projet.test” (thomasliot.test pour moi) a été attribué à root… du coup wpcli (wp core download) avait tendance à m’installer wordpress dans mon home/utilisateur même si j’étais bien positionné : pwd = /home/thomas/Local_Webdev/thomasliot.test/htdocs—— retour sujet tuto———
Du coup, je l’ai supprimé et j’ai réinstallé directement les dossiers depuis dolphin. Je pense que j’aurais changer les droits avec un chmod mais je suis éducateur sportif, pas développeur ! lol! 😀Juste pour apprendre et parce que ça pourrait être utile à d’autres, pour quelle raison mon dossier home/utilisateur/”nomdudossier”/projet.test (ainsi que les sous dossiers htdocs et logs) ont ils été attribués à root plutôt qu’a user?
Merci encore et bravo pour ce tuto !
Je n’utilise pas
wp-cli
donc je ne suis pas sûr de pouvoir aider… Ceci dit, si je comprends bien le problème, la cause me semble en amont.Les dossiers
thomasliot.test
,htdocs
etlogs
ont été créés avecmkdir
, non ?
As-tu utilisésudo
pour exécuter la commande ou étais-tu connecté en tant que root (en utilisantsu
) ?
Si c’est le cas, le problème vient de là. En utilisantsudo
, ça revient à dire “je suis l’utilisateurroot
et nonthomas
” donc la commande attribue les dossiers à root.
Ensuite, je suppose que wp-cli utilise le dossier parent s’il n’a pas les droits d’accès pour le répertoire courant.Local_Webdev
a peut-être également un problème de droit… donc wp-cli est remonté jusqu’à/home/thomas/
.Pour éviter ce problème, il faut créer le dossier sans écrire
sudo
devantmkdir
. Ainsi, les dossiers seront bien attribués à l’utilisateur courant (ici,thomas
).
“Les dossiers thomasliot.test, htdocs et logs ont été créés avec mkdir, non ?”
Oui, effectivement, en suivant à la lettre la commande du tuto en fait.
Je ne pensais pas que cela aurait eu un impact sur wpcli d’avoir des dossiers en root mais je l’ai appris en le faisant. Mais pour le coup, j’aurais pu faire un :
“”chmod quelque chose””
pour changer les droits de root vers thomas n’est ce pas?
Décidément, je n’ai pas fait assez attention avant de publier. Le premier
mkdir
dans/home/
n’a pas desudo
mais les deux suivants si… Je les ai supprimés. Normalement, il n’y a pas à utilisersudo
pour créer des répertoires lorsque l’ont se trouve dans notre home.chown
plutôt quechmod
, doncchown -hR thomas:thomas thomasliot.test
(ça modifie également les sous-dossiers/fichiers avec l’option R).chmod
c’est plutôt pour donner les droits de lecture/écriture/exécution pour l’utilisateur et/ou le groupe.
Bonjour Armand,
Tuto parfait : clair et bien détaillé.
J’installe mon premier Manjaro, du coup j’ai un lamp fonctionnel, merci pour ça.Bonjour Armand,
Tout d’abord merci pour votre tuto.
Est ce qu’il est toujours d’actualité la mise en place de lamp ? J’ai essayé sur un autre blog en vain. Je suis perdu, pourriez vous m’apporter votre aide ? Est ce que je dois tout supprimer ou bien si je peux suivre votre tuto par dessus ? Je suis sur Manjaro depuis peux de 3 mois et je l’aime beaucoup mais je ne veux pas faire des bêtises en supprimant des contenus . Débutant 😉
MerciBonjour, oui les instructions sont à jour (elles ont été vérifiées il y a quelques jours suite à un formatage du PC).
Par contre, je ne peux pas vous répondre concernant la suppression ou non. Je ne sais pas ce que vous avez essayé/modifié. Généralement, c’est mieux de ne rien modifier – surtout lorsque l’on n’est pas sûr de ce que l’on fait – sans procéder à une sauvegarde des fichiers au préalable.
Donc, idéalement, il faudrait restituer les fichiers tels qu’ils étaient avant modification avant de suivre de nouvelles instructions. Si ce n’est pas possible… vous pouvez toujours essayer de suivre mes instructions malgré vos modifications mais je ne peux pas vous garantir que ça fonctionnera. Sinon, vous pouvez peut-être trouver les fichiers – pour les remplacer – dans un dépôt proposant la même version de Manjaro… mais si vous n’êtes pas à l’aise avec ce genre de manipulation (ce que je conclus d’après votre “Débutant”), l’autre solution moins rapide mais tout aussi efficace serait de sauvegarder vos données et de réinstaller Manjaro pour repartir sur une installation propre.
Ce n’est pas ma première install de LAMP mais à chaque fois ça me fait suer (si c’est pas autre chose).
Merci d’avoir rassemblé cette doc éparse en un tuto qui permet d’avoir un truc propre et fonctionnel (je crois que jusque là, je finissais toujours par un chmod 777 et une adresse pas belle en localhost en me battant avec le php.ini pour que les choses roulent 🙂 )
Mohamed
Merci pour ce magnifique tuto ! Tellement clair, concis, et riche il m’a sauvé plus d’une fois.