Как сделать a2ensite и a2dissite?

10

Я вошел на сервер Linux. Я думаю, что это дистрибутив Red Hat.

Команды a2ensiteи a2dissiteнедоступны. В /etc/httpdкаталоге я не вижу упоминаний sites-enabledили sites-available.

Я уверен, что сайт в настоящее время выполняет директивы /etc/httpd/conf.d/ssl.conf. Я хотел бы сделать, а a2dissite sslзатем перезагрузить веб-сервер. Как этого добиться?

Джон
источник

Ответы:

24

a2ensite и т.д. - это команды, доступные в системах на основе Debian и недоступные в дистрибутивах на основе RH.

Что они делают это , чтобы управлять символическими ссылками из частей файла конфигурации в /etc/apache2/sites-availableи mods-availableк /etc/apache2/sites-enabledи так далее. Например, если в файле конфигурации определен vhost /etc/apache2/sites-avaible/example.com, a2ensite example.comсоздайте символическую ссылку на этот файл /etc/apache2/sites-enabledи перезагрузите конфигурацию apache. Основной файл конфигурации Apache содержит строки, в которые входит каждый файл, /etc/apache2/sites-enabledи, следовательно, они включаются в конфигурацию времени выполнения.

Довольно легко подражать этой структуре в RHEL. Добавьте две директории в /etc/httpd/named sites-enabledи sites-availableдобавьте vhosts в файлы в sites-available. После этого добавьте строку

include ../sites-enabled 

к /etc/httpd/conf/httpd.conf. Теперь вы можете создать символические ссылки sites-enabledи затем перезагрузить конфигурацию с помощью service httpd reloadили apachectl.

Свен
источник
1
А, понятно. Таким образом, в основном /etc/httpd/conf.d действует как эквивалент сайтов с поддержкой. Поэтому, просто удалив файл ssl.conf из этого каталога и перезапустив / перезагрузив httpd, я получил все изменения. Это круто
Джон
2

В качестве дополнения к превосходному ответу Свена, два скрипта, которые имитируют поведение a2ensite и a2dissite. Оригинальный ensite.sh можно найти на 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
Курт Ван ден Бранден
источник
каким должно быть «название сайта»?
Ewizard