A2enconf команда не найдена debian 10

Обновлено: 08.07.2024

решил проблему, добавив .conf расширение для файлов конфигурации сайта.

Apache a2ensite результаты:

проблема; если вы обнаружили ошибку при попытке включить сайт с помощью:

но он возвращает:

a2ensite - это просто скрипт perl, который работает только с именами файлов, заканчивающимися .conf

вы, вероятно, обновили свою установку Ubuntu, и одно из обновлений включало обновление Apache до версии 2.4.x

В Apache 2.4.x файлы конфигурации vhost, расположенные в каталоге/etc/apache2 / sites-available, должны иметь .расширением conf.

используя terminal (команда mv), переименуйте все существующие файлы конфигурации и добавьте .расширение conf для всех из них.

Если вы получаете ошибку "отказано в разрешении", добавьте " sudo " перед вашими терминальными командами.

вам не нужно делать какие-либо другие изменения в файлах конфигурации.

включить vhost (ы):

а затем перезагрузите Apache:

Теперь ваши сайты должны быть запущены.

обновление: как уже упоминалось здесь, дистрибутив Linux, который вы установили, изменил конфигурацию, чтобы включить *.только конф. Поэтому он не имеет ничего общего с Apache 2.2 или 2.4

есть еще один хороший способ, просто отредактируйте файл apache2.conf в конце есть строка

просто удалить .conf в конце, вот так

и перезапустить сервер.

(Я пробовал это только в Ubuntu 13.10, когда я обновил его.)

у меня была та же проблема. Я бы сказал, что это не имеет ничего общего с Apache.conf.

a2ensite должен быть изменен-строка 532-это строка, которая обеспечивает выполнение .суффикс конфы:

Если вы измените его на:

. он будет работать без суффикса.

конечно, вы не хотели бы изменять сценарий a2ensite, но изменение суффикса файла conf является правильным способом.

это, вероятно, просто способ обеспечения соблюдения ".конф"-суффикс.

Так .. самый быстрый способ-переименовать имена конфигурации сайта, заканчивающиеся на ".conf"

другие примечания к предыдущим комментариям:

IncludeOptional не был введен до apache 2.36-внесение изменений выше с последующим перезапуском на 2.2 оставит ваш сервер вниз!

кроме того, версия 2.2 a2ensite не может быть взломан, как описано

а также, так как ваш сайт-доступный файл на самом деле является конфигурацией файл, он должен быть назван так в любом случае..

В общем не перезапустить службы (веб-серверы-это один из видов услуг):

  • люди не могут найти их, если они не работают! Думаю, linux не MS Windows..

серверы могут работать в течение многих лет-live update, reload config и т. д.

облако не означает, что вы должны перезагрузить, чтобы загрузить файл конфигурации.

при изменении конфигурация службы использует "перезагрузку", а не"перезапуск".

restart останавливает службу, затем запускает службу - если есть какие-либо проблемы в изменении конфигурации, служба не будет перезагрузка.

TLS (Transport Layer Security) и его предшественник SSL (Secure Socket Layers) – это криптографические протоколы, которые используются для защиты передачи данных в Интернете.

Эта технология позволяет защитить обмен данными между сервером и клиентом и предотвратить перехват или несанкционированный доступ к передаваемой информации. Кроме того, эти протоколы предоставляют систему сертификатов, которая помогает пользователям проверить подлинность сайтов, на которые они заходят.

Данный мануал поможет создать самоподписанный SSL-сертификат для веб-сервера Apache в Debian 10.

Требования

  • Сервер Debian 10, настроенный по этому мануалу.
  • Предварительно установленный веб-сервер Apache. Можно установить стек LAMP, одним из компонентов которого является Apache (для этого следуйте руководству Установка стека LAMP в Debian 10); чтобы установить только Apache, выполните только инструкции по установке этого веб-сервера, пропустив остальные разделы.

1: Создание SSL-сертификата

Для работы TLS/SSL использует комбинацию открытого сертификата и закрытого ключа. Закрытый ключ хранится на сервере и не разглашается. SSL-сертификат используется открыто и доступен всем пользователям, запрашивающим контент.

Чтобы создать самоподписанный сертификат и ключ, запустите команду:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Команда задаст ряд вопросов. Рассмотрим компоненты команды подробнее:

Как уже было сказано, все эти опции сгенерируют ключ и сертификат. Заполните появившиеся поля данными о сервере, которые будут отображаться в сертификате.

Самой важной строкой является Common Name (введите FQDN или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. В целом эти поля выглядят примерно так:

Файлы ключа и сертификата будут помещены в каталог /etc/ssl.

2: Настройка Apache для поддержки SSL

Итак, на данном этапе файлы ключа и сертификата созданы и хранятся в каталоге /etc/ssl. Теперь нужно отредактировать настройки Apache:

  1. Создать сниппет конфигураций, указывающий место хранения файлов SSL-сертификата и ключа.
  2. Настроить виртуальный хост Apache для поддержки сертификата SSL.
  3. Настроить незашифрованные виртуальные хосты для автоматической переадресации запросов на зашифрованный хост (опционально).

Местонахождение ключа и сертификата

Для начала нужно создать сниппет конфигураций Apache, определяющий некоторые параметры SSL; здесь можно выбрать метод шифрования SSL и включить дополнительные функции безопасности. Заданные здесь параметры в дальнейшем могут быть использованы любыми виртуальными хостами для поддержки SSL.

Создайте новый сниппет Apache в каталоге etc/apache2/conf-available.

Рекомендуется указать в названии файла его предназначение (к примеру, ssl-params.conf):

sudo nano /etc/apache2/conf-available/ssl-params.conf

Для безопасной настройки SSL обратимся к рекомендациям Remy van Elst на сайте Cipherli.st. Этот сайт предназначен для распространения простых и надёжных параметров шифрования для популярного программного обеспечения.

Примечание: Данный список настроек подходит для более новых клиентов. Чтобы получить настройки для других клиентов, перейдите по ссылке Yes, give me a ciphersuite that works with legacy / old software.

Скопируйте все предложенные параметры. Единственное небольшое изменение, которое нужно внести в эти настройки – отключить заголовок Strict-Transport-Security (HSTS).

Предварительная загрузка заголовка HSTS обеспечивает повышенную безопасность, но может иметь далеко идущие последствия, если заголовок был включен случайно или некорректно. В этом мануале мы не будем включать эту опцию, но вы можете изменить это позже, если уверены, что понимаете последствия.

Вставьте в файл ssl-params.conf следующее:

Настройка стандартного виртуального хоста Apache

Теперь нужно настроить стандартный виртуальный хост Apache (/etc/apache2/sites-available/default-ssl.conf) для поддержки SSL.

Примечание: Если вы используете другой виртуальный хост, укажите его имя вместо /etc/apache2/sites-available/default-ssl.conf.

Прежде чем приступить к настройке, создайте резервную копию файла хоста.

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak

Откройте хост в текстовом редакторе:

sudo nano /etc/apache2/sites-available/default-ssl.conf

На данный момент файл виртуального хоста выглядит примерно так (закомментированные строки опущены для удобства):

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog $/error.log
CustomLog $/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>

В файл нужно внести несколько небольших поправок: отредактировать директивы ServerAdmin и ServerName, изменить параметры SSL, указав файлы ключа и сертификата, и раскомментировать раздел конфигураций, отвечающих за совместимость с устаревшими версиями браузеров.

В результате файл будет иметь такой вид:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin your_email@example.com
ServerName server_domain_or_IP
DocumentRoot /var/www/html
ErrorLog $/error.log
CustomLog $/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>

Сохраните и закройте файл.

Настройка переадресации (опционально)

sudo nano /etc/apache2/sites-available/000-default.conf

В блок VirtualHost добавьте директиву Redirect, которая будет переадресовывать весь незашифрованный трафик:

<VirtualHost *:80>
. . .
Redirect "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>

Сохраните и закройте файл.

3: Настройка брандмауэра

Если вы включили брандмауэр ufw (согласно мануалу по начальной настройке), на данном этапе его нужно настроить для поддержки трафика SSL. К счастью, при установке Apache регистрирует в ufw несколько своих профилей.

Чтобы просмотреть доступные профили, введите:

sudo ufw app list
Available applications:
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .

Текущие настройки можно просмотреть при помощи команды:

sudo ufw status

Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

Проверьте текущее состояние брандмауэра:

sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW Full (v6) ALLOW Anywhere (v6)

4: Обновление настроек Apache

Итак, теперь настройки веб-сервера и брандмауэра откорректированы. Можно включить SSL и настроенный для поддержки сертификата виртуальный хост, а затем перезапустить веб-сервер.

Включите модуль Apache для SSL, mod_ssl, и модуль mod_headers, который необходим для работы сниппета SSL:

sudo a2enmod ssl
sudo a2enmod headers

Включите подготовленный виртуальный хост:

sudo a2ensite default-ssl

Также нужно включить файл ssl-params.conf:

sudo a2enconf ssl-params

Итак, теперь сайт и все необходимые модули включены. Проверьте синтаксис на наличие ошибок:

sudo apache2ctl configtest

Если ошибок нет, команда вернёт:

Если вы видите такой результат, вы можете перезапустить сервер. Если же в синтаксисе обнаружены ошибки, исправьте их. Затем перезапустите веб-сервер:

sudo systemctl restart apache2

5: Тестирование шифрования

Теперь нужно убедиться, что трафик между сервером и клиентом шифруется. Откройте в браузере следующую ссылку:

Поскольку сертификат был подписан самостоятельно, браузер сообщит о его ненадёжности:

Your connection is not private
Attackers might be trying to steal your information
(for example, passwords, messages, or credit cards). NET::ERR_CERT_AUTHORITY_INVALID

Это нормальное поведение программы в подобной ситуации, поскольку браузер не может проверить подлинность хоста. Однако в данном случае нужно только шифровать трафик, с чем самоподписанный сертификат вполне справляется, потому предупреждение браузера можно пропустить. Для этого нажмите кнопку ADVANCED и кликните по предложенной ссылке.

После этого вы получите доступ к своему сайту.

6: Постоянный редирект

Если шифрование работает должным образом, настройте постоянный редирект вместо временного.

Откройте файл виртуального хоста Apache:

sudo nano /etc/apache2/sites-available/000-default.conf

Найдите ранее добавленную директиву Redirect и установите значение permanent.

<VirtualHost *:80>
. . .
Redirect permanent "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>

Сохраните и закройте файл.

Проверьте ошибки в синтаксисе:

sudo apache2ctl configtest

sudo systemctl restart apache2

Заключение

Теперь сервер Apache может шифровать передаваемые данные, что защитит взаимодействие сервера с клиентами и предотвратит перехват трафика злоумышленниками.

Конечно, при разработке сайта рекомендуется подписать SSL-сертификат в надежном центре сертификации, что позволит избежать появления отпугивающих предупреждений.

Расположение конфигурационных файлов установленного веб-сервера Apache2 на системах Ubuntu выглядит следующим образом:

apache2.conf – это главный конфигурационный файл. Он содержит настройки, а также собирает настройки из всех других конфигурационных файлов для соединения этих частей в целое при запуске веб-сервера.


ports.conf всегда включается в настройку главным конфигурационным файлом. Он используется для определения прослушиваемых портов для входящих соединений, этот файл можно настроить в любое время.

Конфигурационные файлы в директориях mods-enabled/, conf-enabled/ и sites-enabled/ содержат определённые куски конфигурации, которые, соответственно, управляют модулями, глобальными фрагментами конфигурации или настройками виртуальных хостов.

Они активируются символическими ссылками на доступные файлы конфигураций, расположенных в аналогичных директориях *-available/. Для помощи в управлении используются небольшие скрипты a2enmod, a2dismod, a2ensite, a2dissite, и a2enconf, a2disconf.

a2enmod и a2dismod

a2enmod, a2dismod – включение или отключение модулей apache2.

a2enmod – это скрипт, которые включает определённый модуль внутри конфигурации apache2. Он делает это создавая символическую ссылку внутри /etc/apache2/mods-enabled. А a2dismod отключает модуль удаляя эту ссылку. Не будет ошибкой включить модуль, который уже включен или отключить модуль, который уже отключен.

Помните, что многие модули имеют, в дополнении к файлу .load, ассоциированный файл .conf. Включение модуля размещает конфигурационные директивы в файле .conf как директивы в главном контексте сервера apache2.

Включает режим сопровождения, то есть вызов программы выполняется автоматически скриптом сопровождения. Эта опция не должна использоваться конечными пользователями.

При отключении модуля очищает все следы модуля во внутренней базе данных состояния.

a2enmod и a2dismod завершаются со статусом 0 если все модули успешно обработаны, 1 если случились ошибки, 2 если использована неверная опция.

Включает модуль mod_imagemap, и отключает модуль mod_mime_magic.

Каталог с файлами, предоставляющими информацию о доступных модулях.

Директория с ссылками на файлы в mods-available для включённых модулей.

a2ensite и a2dissite

a2ensite, a2dissite – включают или отключают сайты / виртуальные хосты apache2.

a2ensite – это скрипт, который включает указанный сайт (который содержится в блоке <VirtualHost>) внутри конфигурации apache2. Он делает это создавая символическую ссылку внутри /etc/apache2/sites-enabled. А a2dissite отключает сайт удаляя эти ссылки. Не является ошибкой включить сайт, который уже включен или отключить сайт, который уже отключен.

Apache расценивает самый первый виртуальный хост включённым специально для перенаправления на него каждого запроса, не соответствующего действительной директиве. Таким образом, первым должен вызываться 000-default чтобы с сортировке быть первым перед загрузкой оставшихся хостов.

Включает режим сопровождения, то есть вызов программы выполняется автоматически скриптом сопровождения. Эта опция не должна использоваться конечными пользователями.

При отключении сайта очищает все следы модуля во внутренней базе данных состояния.

a2ensite и a2dissite выходят со статусом 0 если все сайты обработаны успешно, 1 если произошли ошибки, 2 если была использована неверная опция.

Отключает стандартный сайт.

Директория с файлами, предоставляющими информацию о доступных сайтах.

Директория с ссылками на sites-available для включённых сайтов.

a2enconf и a2disconf

a2enconf, a2disconf – включают и отключают конфигурационные файлы apache2.

a2enconf – это скрипт, который включает определённый конфигурационный файл внутри конфигурации apache2. Он делает это создавая символическую ссылку внутри /etc/apache2/conf-enabled. А a2disconf отключает определённую часть конфигурации удаляя эти символические ссылки. Не является ошибкой включить конфигурацию, которая уже включена или отключить её, если она уже отключена.

Помните, что многие конфигурационные файлы могут иметь зависимости от определённых модулей. В отличие от зависимостей модулей, они не решаются автоматически. Фрагменты конфигурации, хранящиеся в директории conf-available считаются несущественными или установленными и управляемыми с помощью обратных зависимостей (например, веб-скриптами).

Включает режим сопровождения, то есть вызов программы выполняется автоматически скриптом сопровождения. Эта опция не должна использоваться конечными пользователями.

При отключении модуля очищает все следы модуля во внутренней базе данных состояния.

a2enconf и a2disconf выходят со статусом 0 если все конфигурации обработаны успешно, 1 если случились ошибки, 2 если была использована неверная опция.

Включает директивы Apache security, хранящиеся в конфигурационных файлах security, и отключает конфигурацию charset.

Директория с файлами доступных конфигураций веб-сервера.

Директория с ссылками на файлы в conf-available для включения конфигурационных файлов.

Корневые директории документов веб-сервера Apache в Ubuntu

По умолчанию, Ubuntu не позволяет доступ через веб-браузер к любому файлу за пределами директорий /var/www, public_html (когда включено) и /usr/share (для приложений). Если ваш сайт использует в качестве корневой папки какое-либо другое расположение (такое как /srv) вам понадобиться добавить корневую директорию документов в белый список в файле настроек /etc/apache2/apache2.conf.

По умолчанию корневой папкой для веб-документов в Ubuntu является /var/www/html. В /var/www вы можете делать ваши собственные виртуальные хосты.

Обзор конфигурации Apache в Ubuntu

В статье представлен обзор конфигурации web сервера Apache в Ubuntu server при стандартном варианте инсталляции LAMP в Ubuntu. Приведена логика и структура организации конфигурационных файлов веб сервера. Описаны назначения основных конфигов сервера. Даны базовые Linux Ubuntu команды для манипуляции конфигурацией, настройки и управления веб сервером Apache. Рассмотрен сайт по умолчанию, который создается в процессе установки Apache. Статья вам будет полезна при настройке и администрировании своего LAMP сервера.

Как добавить поддержку PHP как обработчика сценариев в Apache на Ubuntu или Windows детально описано в статье Установка PHP7 на Windows в разделе Настройка Apache2.4 для работы с PHP .

Apache Default WEB Page

В процессе выполнения стандартной инсталляции web сервера Apache в Ubuntu server создается тестовый сайт, который служит для проверки работоспособности веб сервера после его установки. Этот сайт, по умолчанию, сконфигурирован так, что разрешает обращения из браузера только к файлам и каталогам внутри /var/www директории Ubuntu server. Если, по завершению инсталляции Apache, вы откроете в браузере веб страницу по адресу IP вашего web сервера, то увидите стартовую страницу сервера - Apache2 Ubuntu Default Page. Это будет, в первую очередь, говорить о том, что Apache удачно установился и работает. Эта страница физически располагается на сервере в файле /var/www/html/index.html и за ее настройку и вывод в браузере отвечает конфиг виртуального хоста по умолчанию (/etc/apache2/sites-available/000-default.conf), который определяет виртуальный хост(сайт) для каталога /var/www/html и создается в ходе инсталляции сервера Apache. Соответственно, если вы разместите ваши файлы в этой папке, то они будут обрабатываться web сервером. Также на этой Default Page в секции Configuration Overview вы увидите схематическое представление структуры конфигурационных файлов сервера. Здесь нужно понимать, что структура, названия и расположения конфигов Apache в Ubuntu отличаются от общепринятой схемы, что сделано для удобства управления сервером. Но тут есть один нюанс, который заключается в том, что если вы ранее не были знакомы с организацией каталогов в домашней директории Apache на Ubuntu, то эта схема может вас только запутать, т.к. в ней представлены не все папки, а только каталоги, в которых располагаются символьные ссылки на активированные файлы конфигурации. Поэтому, для более правильного понимания, смотрите полную схему каталогов и фалов домашней директории web сервера Apache расположенную ниже в этой статье. Из ценного в секции веб страницы Apache - это ссылки на man'ы Debian для команд a2enmod, a2dismod, a2ensite, a2dissite, a2enconf, a2disconf, которые используется для активации и деактивации тех или иных видов файлов конфигурации и будут детально описаны ниже. Так же здесь сказано, что для передачи команд web серверу ( started/stopped etc.) нужно обращаться к /etc/init.d/apache2 или к apache2ctl, что так же является особенностью сервера в Ubuntu. На сервере Ubuntu в файле /usr/share/doc/apache2/README.Debian.gz вы сможете найти полную документацию по Apache.

Домашний каталог Apache в Ubuntu

По умолчанию, домашний каталог web сервера Apache в Ubuntu находиться по /etc/apache2/ пути в файловой системе. В этом каталоге и его подкаталогах располагаются все конфигурационные файлы Apache. Изменить значение пути домашней директории web сервера можно директивой ServerRoot "/etc/apache2" в главном конфиге apache2.conf. Там, по умолчанию, директива ServerRoot закомментирована, что равносильно ее значению как "/etc/apache2" ( завершающего слеша не должно быть в этой директиве!). Значение пути домашней директории Apache ( ServerRoot ) необходимо серверу, что бы он знал, в каком месте файловой системы ему следует искать свои конфигурационный файлы. Так же значение ServerRoot может подставляться сервером в некоторых директивах, ожидающих в качестве аргумента путь в файловой системе Ubuntu. Поэтому, в таких случаях, если путь указать без начального слеша, то Apache воспримет это как относительный путь по отношению к своей домашней директории. Так, например, если указать директиву AuthUserFile .htpasswd , то в таком варианте Apache будет интерпретировать указанный путь как относительный и превратит его в /etc/apache2/.htpasswd, подставив спереди значение пути своей домашней директории.

Структура домашней директории Apache в Ubuntu

В процессе стандартной установки WEB сервера Apache в Ubuntu создается следующая структура файлов и каталогов домашней директории веб сервера:

Приведенные примеры представлены из OS Ubuntu server 16.04 LTS, однако тоже самое будет и в других версиях и дистрибутивах Ubuntu как в сервером варианте, так и в desktop варианте.

Логика организации конфигурации Apache

Как уже было сказано выше, в Ubuntu используется отличная от оригинальной организационная структура конфигурационных файлов и директорий для веб сервера Apache.

Во-первых, в Ubuntu, конфигурация Apache разбита на множество разных конфигов по их функциональному назначению. Например, директивы, задающие порт для сервера, вынесены в отдельный файл ports.conf. Директивы, ответственные за те или иные параметры безопасности сервера, вынесены в файл security.conf. Тем самым, директивы как бы сгруппированы по своему смыслу в отдельные конфигурационные файлы. Это достаточно логично и удобно при чтении, правке, активации и деактивации конфигов. При таком подходе каждый, отдельно взятый файл, становиться меньше и является узкоспециализированной частью конфигурации. Однако, нужно понимать, что такое дробление сделано исключительно для удобства и автоматизации настройки и технически, если вы захотите, вы можете записать все директивы и настройки в один файл, просто работать с таким файлом будет не так удобно.

Во-вторых: центром всей конфигурации выступает главный конфиг Apache веб сервера - apache2.conf файл. Именно этот файл в первую очередь ищет и читает web сервер Apache при старте или перезагрузке. А уже в этом файле при помощи директив Include, в месте их указания, выполняется подключение и загрузка всех остальных заданных конфигов. Таким образом, все конфигурационные файлы объединяются в единую конфигурацию web сервера и происходит это, когда Apache читает файлы по порядку их подключения, начиная с главного конфига. Из этого следует важное замечание - порядок следования директив в конфигурации Apache и, соответственно, порядок подключения файлов конфигов имеет значение, так как директивы, прочитанные сервером позднее могут переопределять директивы прочитанные им ранее. Об этом нужно помнить при настройке сервера.

В-третьих: если вы посмотрите на структуру каталогов домашней директории Apache, то увидите три пары директорий с названиями вида: префикс_каталога-available/enabled. Такая логическая структура призвана для распределения ваших конфигов на три группы, исходя из префикса названия каталога, где conf-* это каталоги для ваши прочих конфигов, mods-* это каталоги для конфигов модулей Apache и sites-* это каталоги для конфигов ваших виртуальных хостов. Вторая часть имени этих каталогов -available/-enabled логически указывает на доступные вообще и только активные в настоящий момент момент конфиги. Так в директориях *-available хранятся все доступные для использования файлы конфигурации, а уже в директориях вида *-enabled расположены символьные ссылки (ярлыки) только на те конфиги из *-available директории, которые должны быть прочитаны web сервером при загрузке конфигурации. Apache читает только каталоги вида *-enabled, поэтому применяться только те конфиги, на которые в этих каталогах есть ссылки. Такой подход дает еще дополнительный уровень удобства тем, что позволяет вам хранить все ваши конфиги в каталогах домашней директории сервера, а задействовать только необходимые в текущий монет.

В-четвертых: директивы конфигурации web сервера Apache имеют контекст (Context ), в котором они действуют. Понятие контекст директивы указывает на то, где, на каком уровне и в каком конфиге данная директива может использоваться. Одна и та же директива может быть разрешена к использованию как только в одном виде контекста, так и в нескольких видах контекста. Если директива будет использована/записана в недопустимом для нее виде контекста, то будет ошибка web сервера Apache при загрузке конфигурации, которая приведет к его остановке. Поэтому, при написании ваших директив, всегда обращайте внимание на контекст их применения, который всегда указывается в документации к директиве на сайте Apache.

В-пятых: нужно понимать, что Apache выполняет чтение и применение всех активных конфигов только при старте или перезагрузке. После старта Apache уже более не перечитывает конфигурацию. Исключением служит файл .htaccess, который является локальным файлом уровня каталога сайта и перечитывается при каждом обращении к данному каталогу сайта. Соответственно, если вы сделали изменения параметров конфигурации вне .htaccess файла, то для вступления их в силу необходимо перезагрузить web сервер Apache.

Виды контекста директив:

  • server config - глобальный уровень директивы для применения в файлах общей конфигурации сервера вне<VirtualHost> и вне<Directory> контейнеров и вне файла .htaccess;
  • virtual host - уровень виртуального хоста для применения директивы в <VirtualHost> контейнере;
  • directory - уровень каталога, директива должна использоваться внутри контейнеров <Location>, <Files>, <If>, <Proxy>;
  • .htaccess - уровень локального каталога сайта, директива может применяться в файле .htaccess.

Команды управления конфигурацией

Для удобства и автоматизации управления конфигурацией Apache в Ubuntu имеются специальные команды, воспользовавшись которыми вы можете включить или исключить из конфигурации сервера те или иные конфигурационные файлы, запустить и перезагрузить сервер, просмотреть и изменить параметры переменных окружения Apache и многое другое.

Команды включения/выключения конфигурации

Для активации и деактивации тех или иных конфигов в Ubuntu предоставляются команды помощники созвучные с available/enabled и префиксом каталога. Например, команда a2enconf, которую можно расшифровать как apache2-enable-conf, выполняет активацию указанного в ее аргументе конфигурационного файла из conf-available каталога путем создания на него символьной ссылки в каталоге conf-enabled. Команда a2disconf выполняет обратное действие, т.е. удаляет эту ссылку. Подобная логика применима и к остальным командам: a2enconf/a2disconf , a2enmod/a2dismod , a2ensite/a2dissite . Но вы так же можете и вручную создать/удалить символьные ссылки на нужные вам конфиги в директориях вида *-enabled.

Внимание: для вступления измений конфигов в силу нужно выполнить перезагрузку конфигурации WEB сервера Apache.

a2enconf/a2disconf

Для включения или выключения нужного конфига из каталога conf-available в конфигурацию сервера используйте команды: a2enconf/a2disconf

Включить конфиг:

Выключить конфиг:

a2enmod/a2dismod

Для активации установленного модуля Apache из каталога mods-available и деактивации его используйте команды: a2enmod/a2dismod

Включить модуль Apache

Выключить модуль Apache

a2ensite/a2dissite

Для активации конфигурации виртуального хоста из каталога sites-available и деактивации его используйте команды: a2ensite/a2dissite

Включить виртуальный хост в Apache

Выключить виртуальный хост в Apache

Команды управления Apache

или

или

где:

Внимание: команды apache2ctl и apache2 имеют разный синтаксис аргументов, однако утилита apache2ctl способна обрабатывать как свои собственные команды, так и команды предназначенные для apache2 и поэтому является более универсальной.

Примеры команд управления Apache только для утилиты apache2ctl

Замечание: на продуктивном сервере нужно стремиться выполнять graceful варианты перезапуска и остановки при которых выполняется ожидание завершения текущих запросов клиентов, что является более корректным как для пользователей, так и для целостности данных, обрабатываемых в текущий момент.

Системные команды для Apache

В Ubuntu для Apache, так же как и для других служб системы, доступны команды вида:

Примеры общих системных команд управления Apache web сервером:

Мягкие варианты перезапуска ожидают завершения запросов текущих клиентов и предпочтительны к использованию на продуктивном сервере. Но, иногда бывает ситуации, когда, при настройке и тестировании вами web сервера, после изменения вами конфигов и мягком перезапуске сервера вы видите, что для вашего клиента, с которого вы ведете тестирование, изменения не вступили в силу, то выполните переподключение к серверу на клиенте. Если это не помогло, то выполняйте уже обычный restart сервера.

В заключении обзора конфигурации WEB сервера Apache в Ubuntu хочется отметить, что все описанные каталоги, логика и команды будут применимы как для серверной версии, так и для десктопной версии Ubuntu. Поэтому, если вы уже работает в Ubuntu Desktop и настраиваете свой разработческий LAMP сервер, то просто откройте терминал и выполняйте в нем вышеописанные команды.

Скринкаст: Обзор конфигурации Apache в Ubuntu

В скринкасте представлен последовательный обзор конфигурации web сервера Apache в Ubuntu при стандартной установке LAMP в Ubuntu server 16.04. Описана стартовая страница web сервера, структура домашней директории Apache, назначение каталогов и конфигурационных файлов. Приведены команды для управления и настройки конфигурации веб сервера. Описаны логика, структура, особенности и подход в конфигурации Apache. Дано понятие контекста действия директив Apache. Приведены ссылки на необходимую документацию. Скринкаст поможет вам разобраться в настройке web сервера Apache2 в операционной системе Ubuntu для своего разработческого или продуктивного веб сервера, как на виртуальной машине, так и на выделенном VDS или на своем Ubuntu Desktop персональном компьютере.

Читайте также: