Як 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тощо. Наприклад, якщо у файлі config визначено vhost /etc/apache2/sites-avaible/example.com, a2ensite example.comстворив би посилання на цей файл у /etc/apache2/sites-enabledі перезавантажив конфігурацію apache. Основний файл конфігурації Apache містить рядки, які включають кожен файл у, /etc/apache2/sites-enabledі таким чином вони включаються в конфігурацію виконання.

Досить легко імітувати цю структуру в RHEL. Додайте дві директорії з /etc/httpd/ім'ям sites-enabledі sites-availableдодати свої ВХости в файли в 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

якою має бути "назва сайту"?
майстер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.