Как обновить apache ubuntu

Обновлено: 05.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 завершена, вы можете использовать программу для размещения ваших сайтов. Более того, вы не просто настроили ее, вы разобрались со всеми подробностями и теперь знаете чуточку больше. Если у вас остались еще вопросы, пишите в комментариях!

При обновлении до PHP 5.5 и Apache 2.4 на Ubuntu 12.10 (13.04) я занотировал некоторые важные моменты и оформил их в виде краткого руководства.

Внимание!

Если PHP 5.5 для вас не критичен, рекомендую пока воздержаться и дождаться официального пакета - я убил пол дня на обновление. В итоге, я установил PHP 5.5 только после обновления Ubuntu до 13.04.

Если все желаете обновлять PHP на Ubuntu 12.10 - рекомендую удалить текущую версию PHP и Apache, а также "вычистить" все их модули вместе с конфигами ( sudo apt-get remove --purge php5 php5 -. ). Конфиги предварительно скопируйте куда-нибудь.

Важно!

В противном случае вы получите 403 Error.

  1. Добавить репозиторий  :
  2. Обновить информацию о доступных пакетах и обновить их:
  3. Установить PHP 5.5, Apache 2.4 и основные модули:
  4. Перезагрузка системы!
Каталог /conf.d больше не используется!

Ошибка: Directory /etc/apache2/conf.d is not empty - leaving as is. Please note, that directory is considered obsolete and not read anymore by default.

В Apache конфиги из каталога /etc/apache2/conf.d больше не используются - удалите его!

Проблемы с зависимостями

Если при установке новой версии PHP в системе возникли не разрешенные зависимости (я, например, изначально не удалил предыдущий PHP и Apache), при которых вы не можете ни установить, ни удалить пакеты - используйте:

Установка модулей Apache 2.4

Не забудьте включить нужные вам модули, например mod_rewrite :

Ошибка ServerName

Ошибка: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Нужно задать имя хоста по умолчанию в файле /etc/apache2/apache2.conf :

Настройка доступа для phpMyAdmin

Если после установки phpMyAdmin на PHP 5.5, апач вылетает с fail'ом - закоментируйте 3 строчки авторизации в файле /etc/phpmyadmin/apache.conf :

Легкого Вам апдейта! ☺

Оффтоп! Рекомендую к прочтению очень полезную и интересную книгу Роберта Мартина «Чистый код». Я немного жалею, что не прочел ее раньше, или какую-то другую из этой же серии - после прочтения отпадает много вопросов по проектированию архитектуры и системе именования классов/методов. Книга вроде есть в PDF'е, но $15 это не дорого для печатной версии. А ее можно перечитывать время от времени.

В этом руководстве описывается, как установить и управлять веб-сервером Apache в Ubuntu 20.04.

Подготовка

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

Установка Apache

Apache включен в репозитории Ubuntu по умолчанию.

Установка довольно проста. В системах Ubuntu и Debian пакет и служба Apache называются apache2 .

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

Когда процесс установки будет завершен, служба Apache запустится автоматически.

Вы можете проверить, что Apache запущен, набрав:

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

Вот и все, вы успешно установили Apache на свой сервер Ubuntu 20.04 и можете начать его использовать.

Предполагая, что вы используете UFW , вы можете сделать это, включив профиль Apache Full, который включает правила для обоих портов:

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

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

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

Apache поставляется с одним включенным виртуальным хостом по умолчанию. Все домены, указывающие на IP-адрес сервера, будут соответствовать виртуальному хосту по умолчанию. Если вы будете размещать один веб-сайт, вы можете загрузить его содержимое в /var/www/html и отредактировать конфигурацию виртуального хоста, найденную в файле /etc/apache2/sites-enabled/000-default.conf .

В целях тестирования создайте файл index.html внутри корневого каталога документов домена:

Сохраните и закройте файл, когда закончите.

Чтобы избежать проблем с разрешениями, измените владельца корневого каталога документов домена на пользователя apache ( www-data ):

Откройте текстовый редактор и создайте следующий файл:

Apache не читает файлы конфигурации, находящиеся в каталоге /etc/apache2/sites-available если они не связаны с каталогом /etc/apache2/sites-enabled .

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

Проверьте конфигурацию на наличие синтаксических ошибок с помощью:

Если ошибок нет, вы увидите следующий вывод:

Перезапустите службу Apache, чтобы изменения вступили в силу:

Выводы

Мы показали вам, как установить Apache в Ubuntu 20.04. Теперь вы готовы начать развертывание своих приложений и использовать Apache в качестве веб-сервера или прокси-сервера.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Из-за обновления Ubuntu я допустил ошибку, чтобы обновить Apache 2.2 до 2.4 - многое пошло не так.

Я не знаю, как указать версию после apt-get remove apache2 . apt-get install apache2 всегда устанавливает 2.4.

Как я могу это сделать?

Вам нужно сделать следующее:

Вышеприведенная команда отобразит список доступных версий для этого пакета. Затем выберите нужную версию и выполните следующие действия.

Изменить файл /etc/apt/preferences

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

Тестирование перед запуском apt-get update или apt-get install с помощью apt-cache policy apache2

Подробнее см. man apt_preferences . Я выбрал выделение raring , потому что таким образом вы все равно получите обновления в ветке 2.2.x. Не забывайте, что вам нужно сделать пакет доступным для APT, добавив URL-адрес репозитория raring .

Обновление

Используя это как /etc/apt/sources.list.d/raring.list , вы сможете установить старые пакеты:

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

Требования

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

Чтобы предоставить Apache возможность сжимать выходные данные в браузерах, которые его поддерживают, вам необходимо установить zlib. Загрузите текущую версию из zlip Hompage (zlib-1.2.11.tar.gz с момента написания), извлеките его, перейдите к извлеченной папке, выполните сборку и установите.

Установить Apache 2.2

Проверьте, все ли в порядке

В качестве альтернативы вы можете сделать это через терминал:

Что должно вывести что-то вроде этого в терминале:

Создать «сервис» для Apache2

Подсказка: вы можете вызвать apachectl с помощью sudo service apache22 .

Сделать запуск Apache во время загрузки

Безопасный Apache

Проверить новые настройки

Если вывод терминала последней команды показывает некоторые строки, начинающиеся с «apache», тогда все в порядке.

Настройте свой сайт (ы)

Основные параметры, которые вы можете изменить:

Вам нужно будет добавить <Directory> раздел с <VirtualHost> аналогично приведенному выше, но для корня документа VitualHost. Например:

Для установки apache2.2 используйте следующий процесс:

В более позднем дистрибутиве (например, 16.04) я загрузил 2.2.31 с сайта Apache.

Я построил его, используя следующую конфигурацию:

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