Jak a2ensite i a2dissite?

10

Jestem zalogowany na serwerze Linux. Myślę, że to dystrybucja Red Hat.

Polecenia a2ensitei a2dissitesą niedostępne. W /etc/httpdkatalogu nie widzę żadnej wzmianki o sites-enabledlub sites-available.

Jestem prawie pewien, że witryna wykonuje obecnie dyrektywy /etc/httpd/conf.d/ssl.conf. Chciałbym zrobić a2dissite ssl, a następnie ponownie załadować serwer WWW. Jak to osiągnąć?

Jan
źródło

Odpowiedzi:

24

a2ensite itd. to polecenia dostępne w systemach opartych na Debianie, które nie są dostępne w dystrybucjach opartych na RH.

Co robią jest zarządzanie dowiązania symboliczne z części pliku konfiguracyjnego /etc/apache2/sites-availablei mods-availabledo /etc/apache2/sites-enabledi tak dalej. Np. Jeśli masz vhost zdefiniowany w pliku konfiguracyjnym /etc/apache2/sites-avaible/example.com, a2ensite example.comutworzysz dowiązanie symboliczne do tego pliku /etc/apache2/sites-enabledi przeładuje konfigurację apache. Główny plik konfiguracyjny Apache zawiera wiersze, które zawierają każdy plik, /etc/apache2/sites-enableda zatem zostają one włączone do konfiguracji środowiska wykonawczego.

RHEL bardzo łatwo naśladuje tę strukturę. Dodaj dwa katalogi w /etc/httpd/nazwie sites-enabledi sites-availablenależy dodać vhosty do plików sites-available. Następnie dodaj linię

include ../sites-enabled 

do /etc/httpd/conf/httpd.conf. Możesz teraz tworzyć dowiązania symboliczne, sites-enableda następnie ponownie ładować konfigurację za pomocą service httpd reloadlub apachectl.

Sven
źródło
1
Ahh rozumiem. Zasadniczo /etc/httpd/conf.d działa jako odpowiednik witryn. Usunięcie ssl.conf z tego katalogu i ponowne uruchomienie / ponowne załadowanie httpd podniosło moje zmiany. To fajnie
John
2

Jako dodatek do doskonałej odpowiedzi Svena, dwa skrypty naśladujące zachowanie a2ensite i a2dissite. Oryginalny ensite.sh można znaleźć na 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
źródło
jaka powinna być „nazwa strony”?
ewizard