Activer mon site en local

Résolu
Peyi04 Messages postés 55 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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