12,4K подписчиков

Установка и настройка сервера Apache

953 прочитали
Рассказываем про то, как установить и настроить Apache в Linux.
Что такое Apache?
Apache — это кроссплатформенное программное обеспечение для гибкой настройки надежных веб-серверов.

Рассказываем про то, как установить и настроить Apache в Linux.

Что такое Apache?

Apache — это кроссплатформенное программное обеспечение для гибкой настройки надежных веб-серверов. На базе Apache строится огромное количество веб-сервисов и сайтов.

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

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

Как установить Apache?

Процесс установки Apache-сервера мало чем отличается от установки любого другого программного обеспечения в Linux.

Я буду описывать все этапы на примере операционной системы Linux Mint (это дериватив от Ubuntu и Debian). Поэтому, если вы используете Fedora или какой-то другой дистрибутив, название пакетного менеджера apt-get и связанные опции надо будет заменить на подходящие аналоги.
  • Открываем терминал.
  • Для начала обновим список доступных в системе пакетов командой sudo apt-get update.
Нужно обновить систему…
Нужно обновить систему…
  • Терминал потребует ввести пароль суперпользователя, чтобы выполнить эту операцию. Вводим его.
Во время ввода пароля набираемые символы могут не отображаться в терминале
Во время ввода пароля набираемые символы могут не отображаться в терминале
  • Затем используем команду sudo apt-get upgrade, чтобы обновить все установленные в систему пакеты.
Устанавливаем свежие версии приложений, имеющихся в системе
Устанавливаем свежие версии приложений, имеющихся в системе
  • Терминал попросит подтвердить это действие. Для этого вводим в него заглавную букву «Д» (или Y в английской версии).
Подтверждаем свои намерения
Подтверждаем свои намерения
  • Затем переходим непосредственно к установке Apache с помощью команды sudo apt-get install apache2. В CentOS и ее дериватах Apache называется httpd.
Собственно, все
Собственно, все

Чтобы включить сервер Apache нужно выполнить одну из следующих команд:

  • sudo service apache2 start (универсальная).
  • sudo systemctl start apache2.service (для Debian и ему подобных).
  • sudo systemctl start httpd.service (для CentOS и ее дериватов).

А чтобы выключить:

  • sudo service apache2 stop (универсальная).
  • sudo systemctl stop apache2.service (для Debian и ему подобных).
  • sudo systemctl stop httpd.service (для CentOS и ее дериватов).

Настраиваем Apache

С незамысловатым процессом установки разобрались, теперь нужно настроить наш сервер.

Для начала добавим его в автозагрузку, чтобы каждый раз не запускать заново. Это можно сделать, введя в терминал команду sudo systemcl enable apache2 (это для Ubuntu)

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

  • Большая часть параметров хранится в файле /etc/apache2/apache2.conf. Тут указаны все базовые опции, необходимые для старта сервера и его полноценной работы.
  • Дополнительные настройки прописаны в файле /etc/apache2/conf-available/.
  • Модули Apache можно посмотреть и настроить в файле /etc/apache2/mods-available.
  • Файл /etc/apache2/sites-available отвечает за настройку виртуальных хостов.
  • В /etc/apache2/ports.conf указываются порты, которые Apache использует в работе.

Базовая конфигурация

Для начала разберемся с основным конфигурационным файлом.

Чтобы его открыть, вводим в терминал команду sudo nano /etc/apache2/apache2.conf

В нем содержатся следующие опции:

  • Timeout — эта опция отображает количество секунд, которое сервер будет тратить на попытку восстановить подключение, если оно по какой-то причине оборвется. По умолчанию установлено значение в 300 секунд, но его можно без последствий сократить вдвое.
  • Keep Alive — по умолчанию эта настройка включена, и благодаря ей сервер может передавать  несколько файлов единовременно.
  • MaxKeepAliveRequests — это максимальное количество доступных запросов на одно соединение с сервером.
  • KeepAliveTimeout — эта опция отображает количество секунд, через которое сервер разорвет соединение, если веб-страница не загрузится полностью. Слишком маленькое значение приведет к неработоспособности сайта у пользователей с медленным интернетом.
  • User — имя пользователя, запускающего сервер.
  • Group — группа пользователей, запускающего сервер.
  • HostnameLookups — эта опция интерпретирует IP-адреса в журнале работы (логе) сервера в полноценные доменные имена.
  • LogLevel — эта опция указывает на то, какие именно ошибки будут отправляться в журнал работы (лог) сервера.
  • Include — тут прописаны конфигурационные файлы, которые были перечислены в начале этого блока.
Здесь находятся все необходимые параметры для быстрого запуска сервера
Здесь находятся все необходимые параметры для быстрого запуска сервера

Настройки Directory

В конце файла /etc/apache2/apache2.conf есть блок параметров Directory. С помощью него серверу можно выдать определенные права доступа на разные части файловой системы.

Параметры в этой части файла строятся следующим образом:

Указывается тег <Directory тут же в скобках прописывается адрес папки, на которую выдаются права. Скобка закрывается >. Затем вписываются опции на выбор пользователя. А потом тег закрывается.

По умолчанию там можно увидеть такую запись:

Options FollowSymLinks AllowOverride None Require all denied

Здесь можно более скрупулезно настроить отдельные папки
Здесь можно более скрупулезно настроить отдельные папки

Список опций для параметров Directory

  • AllowOverride — если указана эта опция с параметром All, то Apache будет считывать параметры из файла .htaccess, который частенько используют для добавления дополнительных настроек или более тонких изменений в работе сервера.
  • DocumentRoot — сюда прописывается директория в файловой системе, из которой сервер будет брать файлы для отображения пользователю.
  • Options — дополнительные параметры для взаимодействия сервера с выбранной папкой. Например, можно разрешить переход по символическим ссылкам, указав параметр FollowSymLinks.
  • Require — рядом с этой опцией нужно указать имя пользователя, которому будет разрешено получить доступ к настраиваемой папке.
  • Order — рядом с этой опцией нужно указать один из аргументов: либо Allow from название хоста, либо Deny from название хоста. В первом случае указываем хосты, у которых будет доступ к настраиваемой папке, а во втором — наоборот.

Конфигурация файла /etc/apache2/ports.conf

Рассмотрим еще один конфигурационный файл, вносить изменения в который не обязательно. Здесь можно указать только порты, с которыми работает («слушает») сервер. По умолчанию установлен 80 порт, и это вполне рабочий вариант. Для подключений с использованием протокола SSL используется 443 порт.

Обычно здесь ничего менять не нужно.

Файл с настройками портов
Файл с настройками портов

Настраиваем Apache с помощью .htaccess

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

У инструкций, вписанных в .htaccess тот же синтаксис, поэтому вы можете использовать те настройки, что уже были описаны выше (Order, Require). Также в .htaccess можно прописать запуск какого-либо модуля. Более того, его можно тут же настроить. Вводимые инструкции будут зависеть от самого модуля и поддерживаемых им параметров.

Подключаем модули Apache

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

Взглянуть на список запущенных модулей можно с помощью команды apache2ctl -M

Также есть команда для включения нового модуля sudo a2enmod название модуля и выключения sudo a2dismod название модуля

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

Из полезных модулей, которые можно подключить, не загружая ничего на компьютер выделю:

  • expires — с помощью которого можно сократить период хранения кэшированных файлов браузером.
  • ssl — включающий одноименный метод шифрования на сервере. Это уже некий стандарт в современном вебе, поэтому его включают по умолчанию сразу после развертывания сервера.
  • rewrite — модуль для работы с ссылками (он может сделать их более удобными для восприятия или создать грамотную структуру переходов между страницами).

Есть и популярные сторонние модули. Например:

  • pagespeed — это модуль для Apache, который создала компания Google. Его основная задача — оптимизация веб-ресурсов. Он умеет сжимать данные, исправлять ошибки в тексте, контролировать размер файлов на сервере и так далее. Все в угоду производительности.
  • mod-security — дополнительный защитный слой для вашего сервера. Этот модуль запрещает серверу принимать трафик, который прописан в заранее подготовленных правилах.
  • spamhaus — еще одна попытка защитить сервер от взлома и других потенциальных угроз. Вместе с модулем подгружается база IP-адресов, которые считаются небезопасными и могут навредить серверу. И как вы уже поняли, модуль блокирует запросы с этих адресов.

Настраиваем виртуальные хосты

Естественно, на сервере Apache (на одном компьютере) можно разместить несколько веб-ресурсов. Можно завести хоть сотню виртуальных хостов, каждый из которых будет со своим набором данных и уникальным содержимым.

Чтобы добавить новый хост на Apache-сервер, создадим новый документ с названием хоста в папке sites-available. Это можно сделать командой sudo nano /etc/apache2/sites-available/название файла.conf

Содержимое файла должно выглядеть следующим образом:

<VirtualHost *:80> ServerName название вашего сайта ServerAlias ссылка на ваш сайт в формате www.site.com ServerAdmin почтовый адрес администратора сайта в формате mail@mail.ru DocumentRoot путь до папки, в которой лежат документы, связанные с конкретным хостом. Обычно это файлы в папке /var/www/ ErrorLog $APACHE_LOG_DIR/error.log CustomLog $APACHE_LOG_DIR/access.log combined

Добавляем новый хост
Добавляем новый хост

Чтобы активировать новый хост (после его создания), вводим в терминал команду sudo a2ensite название хоста

Важно отметить, что при настройке виртуальных хостов на реальном серверном компьютере проведенных процедур было бы достаточно. А вот в случае с локальной «машиной» понадобится открыть файл hosts и прописать туда IP-адреса для нового хоста.

Автор материала: Владимир Ковылов

Подписывайтесь на наш канал и ставьте лайки! А еще можете посетить наш официальный сайт.