Назад | Перейти на главную страницу

Как на a2ensite и a2dissite?

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

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

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

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/ названный sites-enabled и sites-available и добавьте свои vhosts в файлы в sites-available. После этого добавьте строку

include ../sites-enabled 

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

В качестве дополнения к отличному ответу Свена - два скрипта, имитирующих поведение 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