- Вопрос или проблема
- Ответ или решение
- Как управлять сайтами в Red Hat: отключение и включение конфигураций
- Почему a2ensite и a2dissite отсутствуют?
- Шаги для создания структуры конфигураций
- Отключение сайта
- Перезагрузка Apache
- Скрипты для удобства работы
- Скрипт для включения сайта (a2ensite.sh):
- Скрипт для отключения сайта (a2dissite.sh):
- Заключение
Вопрос или проблема
Я вошел на сервер с 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
и так далее. Например, если у вас есть виртуальный хост, определенный в конфигурационном файле /etc/apache2/sites-available/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
.
В дополнение к отличному ответу Свена, два скрипта, которые имитируют поведение a2ensite и a2dissite. Оригинальный ensite.sh можно найти на Github.
a2ensite.sh
#!bin/bash
# Включить сайт, точно так же, как команда a2ensite.
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 "Сайт ${1} уже был включен!";
elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
echo "У вас нет разрешения на это. Попробуйте запустить команду от имени root."
elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
echo "Включение сайта ${1}...";
ln -s $SITES_AVAILABLE_CONFIG_DIR/$1 $SITES_ENABLED_CONFIG_DIR/$1
echo "готово!"
else
echo "Сайт не найден!"
fi
else
echo "Пожалуйста, укажите имя сайта, который нужно включить."
fi
a2dissite.sh
#!bin/bash
# Отключить сайт, точно так же, как команда a2dissite, от 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 "Сайт ${1} уже был отключен!";
elif [ ! -w $SITES_ENABLED_CONFIG_DIR ]; then
echo "У вас нет разрешения на это. Попробуйте запустить команду от имени root."
elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/${1}" ]; then
echo "Отключение сайта ${1}...";
unlink $SITES_ENABLED_CONFIG_DIR/$1
echo "готово!"
else
echo "Сайт не найден!"
fi
else
echo "Пожалуйста, укажите имя сайта, который нужно отключить."
fi
Ответ или решение
Как управлять сайтами в Red Hat: отключение и включение конфигураций
Если вы работаете с Apache на дистрибутиве Red Hat, вы могли заметить, что команды a2ensite
и a2dissite
отсутствуют. Эти команды предназначены для управления сайтами в Debian-подобных системах и позволяют легко включать и отключать конфигурации виртуальных хостов с помощью символических ссылок. В данной статье мы рассмотрим, как добиться аналогичного результата в Red Hat и его производных, а также предоставим отдельные скрипты для удобства работы.
Почему a2ensite
и a2dissite
отсутствуют?
В Red Hat Apache хранит конфигурации виртуальных хостов несколько иначе. Все настройки находятся в каталоге /etc/httpd/conf.d/
, и для управления ими недостаточно простого создания символических ссылок. В этом случае лучше всего создать две новые директории: sites-available
и sites-enabled
.
Шаги для создания структуры конфигураций
-
Создайте необходимые директории:
sudo mkdir /etc/httpd/sites-available sudo mkdir /etc/httpd/sites-enabled
-
Редактируйте главный конфигурационный файл Apache:
Откройте файл/etc/httpd/conf/httpd.conf
и добавьте следующую строку, чтобы включить все конфигурации изsites-enabled
:IncludeOptional sites-enabled/*.conf
-
Создайте виртуальный хост:
Вы можете создать файл конфигурации для вашего виртуального хоста в директорииsites-available
. Например, создать файл/etc/httpd/sites-available/ssl.conf
:<VirtualHost *:443> ServerName example.com DocumentRoot /var/www/html/example SSLEngine on SSLCertificateFile /etc/ssl/certs/example.crt SSLCertificateKeyFile /etc/ssl/private/example.key </VirtualHost>
-
Символьные ссылки в директорию
sites-enabled
:
Чтобы активировать сайт, создайте символическую ссылку:sudo ln -s /etc/httpd/sites-available/ssl.conf /etc/httpd/sites-enabled/ssl.conf
Отключение сайта
Если вы хотите отключить сайт, просто удалите символическую ссылку из sites-enabled
:
sudo unlink /etc/httpd/sites-enabled/ssl.conf
Перезагрузка Apache
После изменения конфигурации с помощью символических ссылок или удаления их, вам нужно перезагрузить службу Apache, чтобы изменения вступили в силу. Это можно сделать следующими командами:
sudo systemctl reload httpd
или
sudo apachectl graceful
Скрипты для удобства работы
Для автоматизации процессов включения и отключения сайтов, вы можете использовать следующие скрипты.
Скрипт для включения сайта (a2ensite.sh
):
#!/bin/bash
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 "Сайт $1 уже включен!"
elif [ ! -w "$SITES_ENABLED_CONFIG_DIR" ]; then
echo "У вас нет прав для выполнения этой операции. Попробуйте запустить команду от имени root."
elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/$1" ]; then
echo "Включение сайта $1..."
ln -s "${SITES_AVAILABLE_CONFIG_DIR}/$1" "${SITES_ENABLED_CONFIG_DIR}/$1"
echo "Готово!"
else
echo "Сайт не найден!"
fi
else
echo "Укажите название сайта для включения."
fi
Скрипт для отключения сайта (a2dissite.sh
):
#!/bin/bash
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 "Сайт $1 уже отключен!"
elif [ ! -w "$SITES_ENABLED_CONFIG_DIR" ]; then
echo "У вас нет прав для выполнения этой операции. Попробуйте запустить команду от имени root."
elif [ -f "${SITES_AVAILABLE_CONFIG_DIR}/$1" ]; then
echo "Отключение сайта $1..."
unlink "${SITES_ENABLED_CONFIG_DIR}/$1"
echo "Готово!"
else
echo "Сайт не найден!"
fi
else
echo "Укажите название сайта для отключения."
fi
Заключение
Управление конфигурациями виртуальных хостов в Red Hat может быть менее удобным по сравнению с Debian-подобными дистрибутивами, однако с помощью простых действий и создания скриптов, вы можете эффективно управлять сайтами на вашем сервере. Придерживайтесь вышеуказанных рекомендаций, и процессы включения и отключения сайтов станут для вас проще и быстрее.