Comment a2ensite et a2dissite?

10

Je suis connecté à un serveur Linux. Je pense que c'est une distribution Red Hat.

Les commandes a2ensiteet a2dissitene sont pas disponibles. Dans l' /etc/httpdannuaire, je ne vois aucune mention de sites-enabledou sites-available.

Je suis sûr que le site exécute actuellement les directives de /etc/httpd/conf.d/ssl.conf. Je voudrais faire un a2dissite ssl, puis recharger le serveur Web. Comment y parvenir?

John
la source

Réponses:

24

a2ensite etc. sont des commandes disponibles dans les systèmes basés sur Debian et qui ne sont pas disponibles dans les distributions basées sur RH.

Ce qu'ils font, c'est gérer les liens symboliques des parties du fichier de configuration dans /etc/apache2/sites-availableet mods-availablevers /etc/apache2/sites-enabledet ainsi de suite. Par exemple, si vous avez un vhost défini dans un fichier de configuration /etc/apache2/sites-avaible/example.com, a2ensite example.comcréez un lien symbolique vers ce fichier /etc/apache2/sites-enabledet rechargez la configuration d'apache. Le fichier de configuration principal d'Apache contient des lignes qui incluent chaque fichier dans /etc/apache2/sites-enabledet donc, ils sont incorporés dans la configuration d'exécution.

Il est assez facile d'imiter cette structure dans RHEL. Ajoutez deux répertoires dans /etc/httpd/named sites-enabledet sites-availableet ajoutez vos vhosts dans des fichiers dans sites-available. Après cela, ajoutez une ligne

include ../sites-enabled 

à /etc/httpd/conf/httpd.conf. Vous pouvez maintenant créer des liens symboliques vers sites-enabled, puis recharger la configuration avec service httpd reloadou apachectl.

Sven
la source
1
Ahh je vois. Donc, fondamentalement, /etc/httpd/conf.d agit comme l'équivalent de sites activés. Donc, simplement supprimer ssl.conf de ce répertoire et redémarrer / recharger httpd a repris mes modifications. C'est cool
John
2

En complément de l'excellente réponse de Sven, deux scripts qui imitent le comportement de a2ensite et a2dissite. L'original ensite.sh se trouve sur Github

a2ensite.sh

#!bin/bash
# Enable a site, just like the a2ensite command.

SITES_AVAILABLE_CONFIG_DIR="/etc/httpd/sites-available";
SITES_ENABLED_CONFIG_DIR="/etc/httpd/sites-enabled";

if [ $1 ]; then
  if [ -f "${SITES_ENABLED_CONFIG_DIR}/${1}" ]; then
    echo "Site ${1} was already enabled!";
  elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
    echo "You don't have permission to do this. Try to run the command as root."
  elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
    echo "Enabling site ${1}...";
    ln -s $SITES_AVAILABLE_CONFIG_DIR/$1 $SITES_ENABLED_CONFIG_DIR/$1
    echo "done!"
 else
   echo "Site not found!"
fi
else
  echo "Please, inform the name of the site to be enabled."
fi


a2dissite.sh

#!bin/bash
# Disable a site, just like a2dissite command, from Apache2.

SITES_AVAILABLE_CONFIG_DIR="/etc/httpd/sites-available";
SITES_ENABLED_CONFIG_DIR="/etc/httpd/sites-enabled";

if [ $1 ]; then
  if [ ! -f "${SITES_ENABLED_CONFIG_DIR}/${1}" ]; then
    echo "Site ${1} was already disabled!";
  elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
    echo "You don't have permission to do this. Try to run the command as root."
  elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
    echo "Disabling site ${1}...";
    unlink $SITES_ENABLED_CONFIG_DIR/$1
    echo "done!"
  else
    echo "Site not found!"
  fi
else
  echo "Please, inform the name of the site to be enabled."
fi
Kurt Van den Branden
la source
quel devrait être le "nom du site"?
ewizard