Поиск по сайту:

Как настроить веб-сервер Apache на Ubuntu или Debian VPS


Введение

Apache — один из самых популярных веб-серверов в Интернете. Он используется для обслуживания более половины всех активных веб-сайтов. Хотя существует множество жизнеспособных веб-серверов, которые будут обслуживать ваш контент, полезно понимать, как работает Apache из-за его повсеместного распространения.

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

Предпосылки

Прежде чем приступить к изучению конфигураций Apache, на вашем сервере должен быть установлен Apache. Вы можете узнать, как это сделать, следуя нашему руководству «Как установить веб-сервер Apache в Debian 10».

Иерархия файлов Apache

Apache хранит свои основные файлы конфигурации в папке /etc/apache2. Выполнение следующей команды выведет список всех файлов в этой папке:

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

В этом каталоге есть несколько файлов с открытым текстом и несколько подкаталогов. Вот несколько полезных мест, с которыми стоит ознакомиться:

  • apache2.conf: это основной файл конфигурации для сервера. Почти все настройки можно выполнить из этого файла, хотя для простоты рекомендуется использовать отдельные файлы. Этот файл будет настраивать значения по умолчанию и станет центральной точкой доступа сервера для чтения деталей конфигурации.
  • ports.conf: этот файл используется для указания портов, которые должны прослушиваться виртуальными хостами. Обязательно проверьте правильность этого файла, если вы настраиваете SSL.
  • sites-available/ и sites-enabled/: каталог sites-available содержит конфигурации файлов виртуального хоста. Конфигурации в этой папке будут определять, какой контент будет обслуживаться для каких запросов. Это возможно путем ссылки на каталог sites-enabled, в котором хранятся активированные файлы конфигурации виртуального хоста. Когда Apache запускается или перезагружается, он считывает файлы конфигурации и ссылки из каталога sites-enabled при компиляции полной конфигурации.
  • conf-available/ и conf-enabled/: в этих каталогах хранятся фрагменты конфигурации, которые не присоединены к файлам конфигурации виртуального хоста.
  • mods-enabled/ и mods-available/: эти каталоги определяют модули, которые могут быть дополнительно загружены. Каталоги содержат два компонента: файлы, заканчивающиеся на .load, которые содержат фрагменты, загружающие определенные модули, и файлы, заканчивающиеся на .conf, в которых хранятся конфигурации этих модулей.< /li>

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

Изучение файла Apache2.conf

Основные сведения о конфигурации вашего сервера Apache хранятся в файле /etc/apache2/apache2.conf.

  • Конфигурация глобального серверного процесса Apache
  • Конфигурация сервера по умолчанию
  • Настройка виртуальных хостов.

Откройте этот файл в предпочитаемом вами текстовом редакторе. В следующем примере используется nano:

  1. sudo nano /etc/apache2/apache2.conf

В Ubuntu и Debian этот файл используется для настройки глобальных определений. Конфигурация сервера по умолчанию и виртуальных хостов обрабатывается с помощью директивы Include.

В этом файле находится несколько различных операторов Include и IncludeOptional. Эти директивы загружают определения модулей, документ ports.conf, определенные файлы конфигурации в каталоге conf-enabled/ и определения виртуальных хостов в sites- каталог enable/:

…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

Глобальные конфигурации

Есть некоторые параметры, которые вы можете изменить в глобальной конфигурации:

Тайм-аут

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

KeepAlive

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

MaxKeepAliveRequests

Это определяет, сколько отдельных запросов будет обрабатывать каждое соединение, прежде чем оно прервется. Поддержание этого числа на высоком уровне позволит Apache более эффективно обслуживать контент для каждого клиента.

KeepAliveTimeout

Этот параметр указывает, как долго ждать следующего запроса после завершения последнего. Если достигнут порог тайм-аута, то соединение прервется.

Изучив содержимое этого файла конфигурации, вы можете закрыть его, нажав CTRL+X.

Многопроцессорные модули

Многопроцессорный модуль (MPM) расширяет модульную структуру Apache. MPM отвечают за прослушивание, направление и обработку различных сетевых запросов. Вы можете указать, в каком разделе была скомпилирована ваша установка Apache, с помощью следующей команды:

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

Вы можете проверить тип MPM на вашем сервере с помощью команды a2query -M:

  1. a2query -M
Output
event

Вывод показывает, что на этом сервере используется MPM event. В вашей установке может быть несколько вариантов для выбора, но выбрать можно только один.

Файл виртуального хоста

Объявление виртуального хоста по умолчанию можно найти в файле с именем 000-default.conf в каталоге sites-available/. Вы можете узнать об общем формате файла виртуального хоста, изучив этот файл.

Откройте файл с помощью следующей команды:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

Виртуальный хост по умолчанию настроен на обработку любого запроса через порт 80, стандартный HTTP-порт. Это определено в заголовке объявления, где указано *:80, что означает порт 80 на любом интерфейсе.

Параметры конфигурации виртуального хоста

Следующие параметры задаются в определении виртуального хоста за пределами любого другого вложенного объявления более низкого уровня. Они применяются ко всему виртуальному хосту.

  1. sudo nano /etc/apache2/conf-available/security.conf

Этот файл содержит директиву Server Signature, которая позволяет указать контактный адрес электронной почты, который следует использовать при возникновении проблем с сервером. Вы можете изменить параметр по умолчанию с On на EMail, чтобы показать адрес электронной почты администратора сервера. Убедитесь, что вы готовы получать почту, если вы настроите этот параметр:

…
ServerSignature EMail

Закройте файл, нажав CTRL+X. После редактирования файла конфигурации вам будет предложено подтвердить ваши изменения. Нажмите Y, чтобы сохранить изменения в файле, или нажмите N, чтобы отменить их.

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

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

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Добавьте your_domain к директиве ServerName:

…
ServerName your_domain

Аналогичным образом, вы также можете сделать виртуальный хост применимым к более чем одному имени, используя директиву ServerAlias. Это обеспечивает альтернативные пути для доступа к одному и тому же контенту. Хорошим вариантом использования для этого является добавление того же домена, которому предшествует www:

…
ServerAlias www.your_domain.com

Директива DocumentRoot указывает, где будет расположен контент, запрошенный для этого виртуального хоста. В Ubuntu виртуальный хост по умолчанию настроен для обслуживания контента из каталога /var/www/:

…
DocumentRoot /var/www/your_domain/public_html

Определения каталога

В определении виртуального хоста есть определения того, как сервер обрабатывает различные каталоги в файловой системе. Apache применит все эти направления в порядке от самого короткого до самого длинного, так что снова есть шанс переопределить предыдущие варианты.

Откройте файл apache2.conf с помощью этой команды:

  1. sudo nano /etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

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

Директива Require может ограничить или открыть доступ к различным ресурсам на вашем сервере.

Операторы Alias и ScriptAlias

Определениям каталогов иногда предшествуют директивы Alias или ScriptAlias.

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Директива Alias сопоставляет путь URL с путем к каталогу. Например, на виртуальном хосте, который обрабатывает запросы к your_domain, следующее разрешит доступ к содержимому в пределах /usr/local/apache/content/. при переходе на your_domain.com/content/:

Alias “/content/” “/usr/local/apache/content/”

Директива ScriptAlias работает таким же образом, но используется для определения каталогов, в которых будут исполняемые компоненты:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

Не забудьте определить каталог с правами доступа, как обсуждалось в предыдущем разделе. После внесения изменений в файл закройте его, нажав CTRL+X. Если вы внесли какие-либо изменения в этот файл, нажмите Y, чтобы сохранить изменения в файле, или нажмите N, чтобы оставить файл таким, каким он был до каких-либо изменений в конфигурации.

Включение сайтов и модулей

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

  1. sudo a2ensite your_domain

После включения сайта введите следующую команду, чтобы указать Apache перезагрузить файлы конфигурации, чтобы изменения распространились:

  1. sudo systemctl restart apache2

Существует также сопутствующая команда для отключения виртуального хоста. Он работает путем удаления символической ссылки из каталога sites-enabled. Например, если ваш виртуальный хост-сайт включен, вы можете отключить сайт 000-default по умолчанию:

  1. sudo a2dissite 000-default

Модули можно включать и выключать с помощью команд a2enmod и a2dismod соответственно. Они работают так же, как версии этих команд a2ensite и a2dissite. Например, чтобы включить модуль info, вы можете использовать следующую команду:

  1. sudo a2enmod info

Точно так же вы можете отключить модуль с помощью команды a2dismod:

  1. sudo a2dismod info

Не забудьте перезапустить Apache после изменения файлов конфигурации и включения или отключения модулей.

Заключение

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