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?

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.


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

Wie sollte der "Name der Site" sein?
— Ewizard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.