Wie zu a2ensite und a2dissite?

10

Ich bin bei einem Linux-Server angemeldet. Ich denke, es ist eine Red Hat-Distribution.

Die Befehle a2ensiteund a2dissitesind nicht verfügbar. Im /etc/httpdVerzeichnis sehe ich keine Erwähnung von sites-enabledoder sites-available.

Ich bin mir ziemlich sicher, dass die Site derzeit die Anweisungen von ausführt /etc/httpd/conf.d/ssl.conf. Ich möchte einen machen a2dissite sslund dann den Webserver neu laden. Wie kann man das erreichen?

John
quelle

Antworten:

24

a2ensite usw. sind Befehle, die in Debian-basierten Systemen verfügbar sind und in RH-basierten Distributionen nicht verfügbar sind.

Sie verwalten symbolische Links von Teilen der Konfigurationsdatei in /etc/apache2/sites-availableund mods-availablenach /etc/apache2/sites-enabledusw. Wenn Sie beispielsweise einen vhost in einer Konfigurationsdatei definiert haben /etc/apache2/sites-avaible/example.com, a2ensite example.comerstellen Sie einen Symlink zu dieser Datei in /etc/apache2/sites-enabledund laden Sie die Apache-Konfiguration neu. Die Haupt-Apache-Konfigurationsdatei enthält Zeilen, die jede Datei enthalten, /etc/apache2/sites-enabledund wird daher in die Laufzeitkonfiguration integriert.

Es ist ziemlich einfach, diese Struktur in RHEL nachzuahmen. Fügen Sie zwei Verzeichnisse in /etc/httpd/named sites-enabledund hinzu sites-availableund fügen Sie Ihre vhosts in Dateien in hinzu sites-available. Fügen Sie danach eine Zeile hinzu

include ../sites-enabled 

zu /etc/httpd/conf/httpd.conf. Sie können jetzt Symlinks zu sites-enabledund dann die Konfiguration mit service httpd reloadoder neu laden apachectl.

Sven
quelle
1
Ahh ich verstehe. Im Grunde genommen fungiert /etc/httpd/conf.d als Äquivalent zu Sites-fähig. Das Entfernen von ssl.conf aus diesem Verzeichnis und das Neustarten / Neuladen von httpd hat meine Änderungen übernommen. Das ist cool
John
2

Als Ergänzung zu Svens hervorragender Antwort zwei Skripte, die das Verhalten von a2ensite und a2dissite nachahmen. Das Original ensite.sh finden Sie auf 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
quelle
Wie sollte der "Name der Site" sein?
Ewizard