Как проверить установлен ли apache на ubuntu

Обновлено: 01.07.2024

Apache - это популярнейший свободный веб-сервер. Состоянием на 2020 год он используется на 33% всех сайтов интернета, а это приблизительно 304 миллиарда сайтов. Этот веб-сервер был разработан в далеком 1995, как замена для популярного того сервера NCSA и исправил множество его проблем. Ходят слухи что его имя походит от a patchy, заплатка, так как он исправлял ошибки NCSA. Сейчас же, это кроссплатформенная программа, поддерживающая Windows, Linux и MacOS и обеспечивающая достаточную гибкость, настраиваемость и функциональность. Программа имеет модульную структуру, что позволяет расширять ее функциональность почти до бесконечности с помощью модулей.

Установить Apache в Linux можно с помощью нескольких команд, но программа предоставляет очень большое количество настроек, которые можно изменить, а также модулей, после включения которых она будет работать лучше. В этой статье будет рассмотрена установка и настройка Apache, в качестве основной системы мы будем использовать Ubuntu, но вы можете повторить эти действия в любом другом дистрибутиве. Будет рассмотрена не только установка самой программы, но и способы ее настройки, настройка виртуальных хостов apache, а также самые полезные модули.

Установка Apache

На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:

sudo apt update
sudo apt upgrade

Затем установка apache2:

sudo apt install apache2

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

sudo systemctl enable apache2

Настройка Apache

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

Все настройки содержатся в папке /etc/apache/:

  • Файл /etc/apache2/apache2.conf отвечает за основные настройки
  • /etc/apache2/conf-available/* - дополнительные настройки веб-сервера
  • /etc/apache2/mods-available/* - настройки модулей
  • /etc/apache2/sites-available/* - настойки виртуальных хостов
  • /etc/apache2/ports.conf - порты, на которых работает apache
  • /etc/apache2/envvars

Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

Сначала давайте рассмотрим главный файл конфигурации:

apache

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

KeepAlive On - очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

MaxKeepAliveRequests 100 - максимальное количество запросов за одно соединение, чем больше, тем лучше.

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

User, Group - пользователь и группа, от имени которых будет работать программа.

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

LogLevel - уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

Include - все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

apache1

Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:

<Directory /адрес/в/файловой/системе/>
Параметр значение
</Directory>

Здесь доступны такие основные опции:

AllowOverride - указывает нужно ли читать .htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All - разрешать все, None - не читать эти файлы.

DocumentRoot - устанавливает из какой папки нужно брать документы для отображенияа пользователю

Options - указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All - разрешить все, FollowSymLinks - переходить по символическим ссылкам, Indexes - отображать содержимое каталога если нет файла индекса.

Require - устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied - всем запретить, Require all granted - всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

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

У нас остался файл /etc/apache2/ports.conf:

apache2

В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.

Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

apache3

Дальше поговорим немного о htacess. Совсем немного.

Настройка сервера Apache через htaccess

Файлы .htaccess позволяют настраивать веб-сервер на Ubuntu для поведения в определенной директории. Все инструкции, указанные в этом файле выполняются как бы они были обвернуты в тег <directory адрес_папки> если бы находились в основном файле.

Важно заметить, что для того, чтобы сервер читал инструкции из .htaccess настройки для этой папки в основном файле или файле виртуального хоста не должны содержать AllowOverride None, чтобы могли работать все настройки нужно AllowOverride All.

А в остальном, здесь может выполняться любая настройка сервера apache, от включения модулей, до обычного изменения доступа к папке. Поскольку все параметры мы уже рассмотрели просто приведем пару примеров:

Order Deny,Allow
Deny from all

Запрещает всем доступ к этой папке, важно применить, для папок с конфигурацией. Чаще всего .htaccess используется для работы с модулем mod_rewrite, который позволяет изменять запросы на лету:

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Но это очень обширная тема и выходит за рамки этой статьи.

Настройка модулей Apache

Как я уже говорил, Apache - модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

apache4

Включить модуль можно командой:

sudo a2enmod имя_модуля

sudo a2dismod имя_модуля

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

sudo systemctl restart apache2

Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

apache5

Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.

Настройки модулей находятся в той же папке, только в файле с расширением .conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

apache6

Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

a2disconf имя модуля

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

sudo a2enmod expires
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2enmod ssl

Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

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

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

Настройки хостов Apache расположены в папке /etc/apache2/sites-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:

  • ServerName - основное имя домена
  • ServerAlias - дополнительное имя, по которому будет доступен сайт
  • ServerAdmin - электронная почта администратора
  • DocumentRoot - папка с документами для этого домена

apache7

Виртуальные хосты, как и модули нужно активировать. Для этого есть специальные утилиты. Чтобы активировать наберите:

sudo a2ensite test.site

Здесь test.site - имя файла виртуального хоста. Для отключения тоже есть команда:

sudo a2dissite test.site

Настройка виртуальных хостов Apache завершена и на публичном сервере это все бы уже работало, но если вам нужна настройка Apache на домашней машине, то вы ваш новый сайт не откроется в браузере. Браузер не знает такого сайта. И откуда ему знать? DNS службы не могут ничего сообщить об этом доменном имени. Но в системе Linux мы можем сами указать ip адреса для доменных имен в файле /etc/hosts. Поэтому добавляем в конец файла такие строки:

Вот, ну теперь будет работать, открывайте браузер, проверяйте.

Выводы

Вот и все. Установка и настройка Apache linux завершена, вы можете использовать программу для размещения ваших сайтов. Более того, вы не просто настроили ее, вы разобрались со всеми подробностями и теперь знаете чуточку больше. Если у вас остались еще вопросы, пишите в комментариях!

Убедитесь, что следующие команды должны выполняться от имени пользователя root или sudo и работать с любым дистрибутивом Linux , таким как CentOS, RHEL, Fedora, Debian и Ubuntu .

УСТАНОВКА APACHE SERVER

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

ПРОВЕРКА ВЕРСИИ APACHE

Чтобы проверить установленную версию вашего веб-сервера Apache в вашей системе Linux, выполните следующую команду.

Server version: Apache/2.4.6 (CentOS)
Server built: May 5 2019 01:47:09

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

ПРОВЕРКА НА ОШИБКИ СИНТАКСИСА КОНФИГУРАЦИИ APACHE

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

ЗАПУСК СЕРВИСА APACHE

Чтобы запустить службу Apache, выполните следующую команду.

------------ On Ubunt/Debian ------------
$ sudo systemctl start apache2 [On Systemd]
$ sudo service apache2 start [On SysVInit]

ВКЛЮЧЕНИЕ СЛУЖБЫ APACHE

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

------------ On Ubunt/Debian ------------
$ sudo systemctl enable apache2 [On Systemd]
$ sudo chkconfig apache2 on [On SysVInit]

ПЕРЕЗАПУСК СЛУЖБЫ APACHE

Чтобы перезапустить Apache (остановить, а затем запустить службу), выполните следующую команду.

------------ On Ubunt/Debian ------------
$ sudo systemctl restart apache2 [On Systemd]
$ sudo service apache2 restart [On SysVInit]

ПРОСМОТР СОСТОЯНИЯ СЕРВИСА APACHE

Чтобы проверить информацию о состоянии времени выполнения службы Apache, выполните следующую команду.

------------ On Ubunt/Debian ------------
$ sudo systemctl status apache2 [On Systemd]
$ sudo service apache2 status [On SysVInit]

ПЕРЕЗАГРУЗКА СЕРВИСА APACHE

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

------------ On Ubunt/Debian ------------
$ sudo systemctl reload apache2 [On Systemd]
$ sudo service apache2 reload [On SysVInit]

ОСТАНОВКА СЛУЖБЫ APACHE

Чтобы остановить службу Apache, используйте следующую команду.

------------ On Ubunt/Debian ------------
$ sudo systemctl stop apache2 [On Systemd]
$ sudo service apache2 stop [On SysVInit]

ПОКАЗАТЬ СПРАВКУ APACHE COMMAND

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

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

Примечание: Мануал предназначен для пользователей, которые работают с Apache в Ubuntu. Если вы используете CentOS или другой дистрибутив RHEL, обратитесь к мануалу Установка LAMP stack на CentOS 7.

Каждый раздел может использоваться независимо от других, поэтому вы можете пропустить разделы, которые вам не нужны. Все условные значения в командах выделены красным; вместо этих значений вы можете подставить свои данные.

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

Установка Apache

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

sudo apt-get update
sudo apt-get install apache2

Автозагрузка Apache

Сервис Apache запускается автоматически. Если вы хотите изменить это поведение, введите:

sudo systemctl disable apache2.service

Чтобы снова добавить Apache в автозагрузку, введите:

sudo systemctl enable apache2.service

Управление сервисом Apache

Чтобы остановить сервер Apache, введите следующую команду:

sudo systemctl stop apache2

Чтобы запустить сервер Apache, введите:

sudo systemctl start apache2

Чтобы остановить сервис и запустить его снова, введите:

sudo systemctl restart apache2

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

sudo systemctl reload apache2

Проверка состояния Apache

Чтобы проверить состояние Apache, введите команду:

sudo systemctl status apache2

Эта команда сообщит, работает ли Apache и покажет вам последние несколько строк логов.

Создание корневого каталога для статического сайта

При создании сайтов на Apache разработчики часто используют виртуальные хосты – это хосты, которые обслуживают отдельные сайты или домены. Для этого нужно создать document root, каталог верхнего уровня, который Apache проверяет при обслуживании контента.

Передайте права на каталог пользователю с доступом к sudo.

Предоставьте остальным пользователям права на чтение контента:

find /var/www -type d -exec chmod 775 <> \;

Помните, что права доступа должны меняться в соответствии с ситуацией.

Создание корневого каталога для динамических файлов

Если ваш сайт использует динамические модули типа PHP, создайте каталог document root для этих файлов:

Передайте права на каталог пользователю sudo и группе www-data:

Изменение конфигурации

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

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

Измените следующие строки:

После изменения файл будет выглядеть так:

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

Включение и отключение конфигурационных файлов

Виртуальные хосты

Чтобы включить виртуальный хост, введите:

Чтобы отключить конфигурационный файл (в данном примере это стандартный виртуальный хост):

sudo a2dissite 000-default.conf

Модули

Чтобы включить модули из каталога /etc/apache2/mods-available, введите:

sudo a2enmod example_mod

Чтобы отключить конкретный модуль:

sudo a2dismod example_mod

Конфигурационные файлы

Чтобы включить конфигурационные файлы из каталога /etc/apache2/conf-available (файлы, не связанные с виртуальными хостами), введите:

sudo a2enconf example-conf

Чтобы отключить файл, введите:

sudo a2disconf example-conf

Тестирование конфигурации

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

sudo apache2ctl configtest

Важные файлы и каталоги Apache

Контент

Конфигурация сервера

  • /etc/apache2: конфигурационный каталог Apache (здесь хранятся все конфигурационные файлы веб-сервера).
  • /etc/apache2/apache2.conf: главный конфигурационный файл веб-сервера, в котором находятся все глобальные параметры. Все остальные файлы загружаются через этот файл. Также тут хранятся директивы FollowSymLinks, которые отвечают за включение и отключение конфигурационных файлов.
  • /etc/apache2/sites-available/: здесь находятся все виртуальные хосты (в том числе и отключенные). В этом каталоге происходят все изменения в настройке виртуального хоста. Эти файлы включаются с помощью команды a2ensite.
  • /etc/apache2/sites-enabled/: здесь хранятся файлы включенных виртуальных хостов. При запуске или перезагрузке Apache читает конфигурационные файлы и ссылки в этом каталоге, чтобы собрать полную конфигурацию.
  • /etc/apache2/conf-available и /etc/apache2/conf-enabled: работают по тому же принципу, что и sites-available и sites-enabled. Эти каталоги предназначены для хранения фрагментов конфигурации, которые не входят в виртуальные хосты.
  • /etc/apache2/mods-available и /etc/apache2/mods-enabled: эти каталоги работают аналогичным образом. Они предназначены для хранения модулей. В них находятся файлы двух типов: файлы с расширением .load загружают модули, а файлы .conf хранят их конфигурации.
  • /var/log/apache2/access.log – это лог, который регистрирует все запросы Apache (если в конфигурации веб-сервера не сказано другого).
  • /var/log/apache2/error.log – это лог ошибок. Настроить уровень логирования можно с помощью параметра LogLevel в /etc/apache2/apache2.conf.

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

sudo journalctl -u apache2

Заключение

Данный мануал перечислил общие процедуры по поддержке сервера Apache. Чтобы узнать больше о работе с Apache, ознакомьтесь со следующими руководствами:

В этой статье я объясню, как установить Apache сервер на операционной системе Debian/Ubuntu.

Эта инструкция была выполнена на операционных системах: Debian 10, Debian 9, Ubuntu 20.10, Ubuntu 20.04, Ubuntu 19.10.

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

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

Установим сервер Apache, выполнив команду в терминале:

Команда установки Apache

Проверка статуса Apache

Давайте проверим, включен ли Apache для автоматического запуска при загрузке системы, выполнив команду в терминале (ожидаемый результат "enabled"):

Давайте проверим, активен ли Apache в данный момент времени, выполнив команду в терминале (ожидаемый результат "active"):

Мы также можем проверить статус Apache с дополнительной информацией о сервисе, выполнив команду в терминале:

Проверка статуса Apache

Если Apache сервер не установлен, при проверке статуса будет отображаться ошибка:

Ошибка проверки статуса Apache

Тестирование доступа к Apache

Давайте убедимся, что сервер Apache работает, введя IP-адрес вашего сервера в браузер:

или для локального хоста

Если все хорошо, вы увидите страницу приветствия Apache:

Тестирование PHP на Apache

Установим PHP, выполнив команду в терминале:

Создадим тестовый файл, который будет возвращать информацию о нашем сервере, выполнив команду в терминале:

Давайте убедимся, что Apache сервер корректно отображает содержимое, сгенерированное PHP скриптом, открыв данную страницу в браузере:

или для локального хоста

Будет отображаться похожая страница:

Тестирование PHP на Apache

После проверки в целях безопасности вам необходимо удалить этот файл, выполнив команду в терминале:

Управление процессами Apache

Для управления сервером вам могут понадобиться следующие команды.

Запуск Apache

Запустим сервер Apache, выполнив команду в терминале:

Остановка Apache

Остановим сервер Apache, выполнив команду в терминале:

Перезапуск Apache

Перезапустим сервер Apache, выполнив команду в терминале:

Проверка конфигурации Apache

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

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

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

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