Activer mon site en local

Résolu/Fermé
Peyi04 Messages postés 49 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 24 octobre 2023 - Modifié le 23 nov. 2021 à 16:50
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 23 nov. 2021 à 16:48
Bonjour,

J'espère que vous allez bien. Je suis débutant en linux et pour me perfectionner j'ai créé une machine virtuelle. J'ai créé un site virtuel ainsi que les différentes configuration du vhost.

Mais lorsque je tape la commande
a2ensite
pour activer le site,
bash
me renvoie : Commande introuvable.

Merci de m'aider

1 réponse

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 23 nov. 2021 à 16:50
Bonjour,

Il faudrait nous clarifier comment tu as installé ton serveur web
apache2
(la commande
a2ensite
étant spécifique à
apache2
pour les distributions qui dérivent de Debian, dont Ubuntu et Mint), et si tu es bien identifié en tant que root au moment de l'exécuter.

Installation LAMP sous Debian

Sous Debian, une installation LAMP (Linux Apache MySQL PHP) se fait comme suit, en root :

apt update
apt install apache2 default-mysql-server libapache2-mod-php
ls /etc/apache2/mods-available/php* # pour voir les versions de PHP disponibles
a2enmod php7.4 # à adapter
systemctl apache2 restart


Commande introuvable et variable d'environnement PATH

Une commande est introuvable pour potentiellement deux raisons (non exclusives) :
  • la commande est absente du système, car le paquet qui la fournit n'est pas installé ;
  • la commande est dans un répertoire absent de ta variable d'environnement PATH, qui spécifie dans quels répertoires sont recherchés les exécutables (donc les commandes).


Pour rappel, sous Linux, les fichiers sont organisées conformément à la FHS. En particulier :
  • Les binaires servant à administrer la machine sont localisées dans
    /sbin
    ,
    /usr/sbin
    (et pour les installations non standard dans
    /usr/local/sbin
    ).
  • Les binaires utilisateurs sont quant à eux localisés dans
    /bin
    ,
    /usr/bin
    ou
    /usr/local/bin
    .


Si tu fais
echo $PATH
, par défaut, les répertoires
/sbin
,
/usr/bin
,
/usr/local/sbin
sont présents uniquement si tu es identifié en tant que root, mais pas si tu es identifié en tant qu'utilisateur. Ceci explique pourquoi elles sont introuvables si tu es identifié en tant qu'utilisateur.

La commande
whereis
permettent de localiser dans quel répertoire est placé un exécutable.

Exemple :

(mando@antarctic) (~) $ whereis a2ensite
a2ensite: /usr/sbin/a2ensite /usr/share/man/man8/a2ensite.8.gz


Bien entendu rien n'empêche qu'un nom exécutable figure dans plusieurs dossiers de ton PATH. Dans ce cas, ton shell prendra le premier trouvé, comme le montre la commande
which a2ensite
(s'il n'en trouve aucun, ton shell répondra commande introuvable).

Quel que soit le profil que tu utilises, il faut bien comprendre que la variable d'environnement
PATH
n'est sollicitée que si le chemin vers l'exécutable n'est pas spécifié. Cela signifie que tu pourrais tout à fait exécuter
/usr/sbin/a2ensite mon_site
en utilisateur (mais tu auras alors une permission refusée).

Si la commande que je souhaite exécuter n'est pas installée, comment déterminer quel paquet installer ?

Sous Debian et les distributions qui en dérivent (Ubuntu, Mint...) tu peux installer
apt-file
:

sudo apt update
sudo apt install apt-file
sudo apt-file update


... puis l'utiliser comme suit :

apt-file search a2ensite | grep "bin/a2ensite$"


Exemple :

(mando@silk) (~) $ apt-file search a2ensite | grep "bin/a2ensite$"
apache2: /usr/sbin/a2ensite


On voit ici qu'il suffit d'installer le paquet
apache2
pour disposer de la commande
a2ensite
:

sudo apt install apache2


Bonne chance
0