Установка и настройка сервера Apache
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 -y
Затем установка apache2:
sudo apt install apache2
В других дистрибутивах пакет программы называется либо так, либо httpd и его установка у вас не вызовет трудностей.
После завершения установки нужно добавить веб-сервер в автозагрузку, чтобы не запускать его вручную после включения компьютера:
sudo systemctl enable apache2
Настройка Apache
Уже прошло то время, когда конфигурация Apache хранилась в одном файле. Но оно и правильно, когда все распределено по своим директориям, в конфигурационных файлах легче ориентироваться.
Все настройки содержатся в папке /etc/apache2/:
- Файл /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. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.
Сначала давайте рассмотрим главный файл конфигурации:
vi /etc/apache2/apache2. conf
Timeout — указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.
KeepAlive On — очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.
MaxKeepAliveRequests 100 — максимальное количество запросов за одно соединение, чем больше, тем лучше.
KeepAliveTimeout 5 — таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.
User, Group — пользователь и группа, от имени которых будет работать программа.
HostnameLookups — записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.
LogLevel — уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error
Include — все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.
Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:
Параметр значение
Здесь доступны такие основные опции:
AllowOverride — указывает нужно ли читать .htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All — разрешать все, None — не читать эти файлы.
DocumentRoot — устанавливает из какой папки нужно брать документы для отображенияа пользователю
Options — указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All — разрешить все, FollowSymLinks — переходить по символическим ссылкам, Indexes — отображать содержимое каталога если нет файла индекса.
Require — устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied — всем запретить, Require all granted — всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.
Order — позволяет управлять доступом к директории. Принимает два значения Allow,Deny — разрешить для всех, кроме указанных или Deny,Allow — запретить для всех, кроме указанных. Теперь мы можем запретить доступ к директории для всех: Deny from all, а затем разрешить только для приложения от blanet.ru: Allow from blanet.ru.
Здесь все эти директивы не используются, поскольку нас устраивают значения по умолчанию, но вот в файлах .htaccess они могут быть очень полезны.
У нас остался файл /etc/apache2/ports.conf:
В нем только одна директива, Listen, которая указывает программе на каком порту нужно работать.
Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.
Дальше поговорим немного о htacess. Совсем немного.
Настройка сервера Apache через htaccess
Файлы .htaccess позволяют настраивать веб-сервер на Ubuntu для поведения в определенной директории. /\\.]+)/?$ product.php?id=$1 [L]
Но это очень обширная тема и выходит за рамки этой статьи.
Настройка модулей Apache
Как я уже говорил, Apache — модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.
Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:
apache2ctl -M
Включить модуль можно командой:
sudo a2enmod имя_модуля
А отключить:
sudo a2dismod имя_модуля
После включения или отключения модулей нужно перезагрузить apache:
sudo systemctl restart apache2
Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:
vi /etc/apache2/mods-available/deflate.load
Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.
Настройки модулей находятся в той же папке, только в файле с расширением .conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:
vi /etc/apache2/mods-available/deflate.conf
Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:
a2enconf имя_модуля
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 — папка с документами для этого домена
Например:
vi /etc/apache2/sites-available/test.site.conf
ServerName test.site ServerAlias www.test.site ServerAdmin webmaster@localhost DocumentRoot /var/www/test.site/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Виртуальные хосты, как и модули нужно активировать. Для этого есть специальные утилиты. Чтобы активировать наберите:
sudo a2ensite test.site
Здесь test.site — имя файла виртуального хоста. Для отключения тоже есть команда:
sudo a2dissite test.site
Настройка виртуальных хостов Apache завершена и на публичном сервере это все бы уже работало, но если вам нужна настройка Apache на домашней машине, то вы ваш новый сайт не откроется в браузере. Браузер не знает такого сайта. И откуда ему знать? DNS службы не могут ничего сообщить об этом доменном имени. Но в системе Linux мы можем сами указать ip адреса для доменных имен в файле /etc/hosts. Поэтому добавляем в конец файла такие строки:
vi /etc/hosts
127.0.0.1 test.site 127.0.0.1 www.test.site
Вот, ну теперь будет работать, открывайте браузер, проверяйте.
ВЫВОДЫ
Вот и все. Установка и настройка Apache linux завершена, вы можете использовать программу для размещения ваших сайтов. Более того, вы не просто настроили ее, вы разобрались со всеми подробностями и теперь знаете чуточку больше. Если у вас остались еще вопросы, пишите в комментариях!
Автор: Google
Источник:
Установка и настройка Apache в Ubuntu 20.04, Debian 11
Вступление.
Apache — это самый распространённый веб-сервер с открытым исходным кодом. На 2022 год за счет этого серверного ПО функционируют на 35% сайтов интернета, а это около 350 миллиардов интернет проектов. Этот веб-сервер был создан Робертом Маккулом в 1995 году, 1999 года поддержкой проекта занимается команда разработчиков Apache Software Foundation, это альтернатива для ранее известного того веб-сервера NCSA и было исправлено множество багов. В интернете пишут имя этого web-сервера произвольное от patchy, то есть это заплатка, исправление ошибок в исходном коде NCSA. Apache кроссплатформенное решение, поддерживается следующими операционными системами Windows, Linux, Unix и MacOS.
Web-сервер имеет модульную структуру, что позволяет гибко расширять функциональность программного обеспечения зависимо от поставленных задач.
Установка Apache в Линукс производится при помощи командной строки, для осуществления корректной настройки программного обеспечения требует углубленного изучения документации, конфигурирование сервера предоставляет достаточно большое количество настроек, естественно при профессиональной настройке, программное обеспечение будет работать намного лучше.
В рамках данной статьи будет произведена установка и базовая настройка Apache, в качестве основного сервера, настройку будем производить в дистрибутиве Ubuntu 20.04 и Debian 11, вы сможете повторить эти действия в Debian подобных дистрибутивах Линукс.
Инструкция будет актуальна для версий операционных систем Linux Debian 8 (jessie), Debian 9 (stretch), Debian 10 (bullseye) и Debian 11 (bullseye), также инструкция тестировалась в дистрибутивах GNU/Linux Ubuntu 14.04 LTS (Trusty Tahr), 16.04 LTS (Xenial Xerus), 18.04 LTS (Bionic Beaver), 20.04 LTS (Focal Fossa), 22.04 LTS (Jammy Jellyfish). Настоятельно рекомендую производить установку программного обеспечения на стабильные дистрибутивы, период поддержки которых не завершен сообществом дистрибутива.
Мы произведем конфигурирование Apache и виртуальных хостов и включим самые актуальные модули, которые необходимы для работы большинства сайтов.
Обучающие видео как установить и настроить Apache2 в Ubuntu и Debian.
Внимание! РКН: www.youtube.com нарушает законодательство РФ
Рекомендую в начале просмотреть обучающие видео и после приступить к процессу установки и конфигурации.
Установка Apache.
Произведем установку самой актуальную версию серверного программного обеспечения, на момент публикации данной статьи это Apache 2.4. Как я ранее писал, в Линукс установка сервера производится в командной строке, это можно сделать буквально за пару команд. Производим выполнение команд от администратора системы или root. Если работаете от пользователя root тогда нужно исключить из команды sudo.
Установка и корректная настройка Apache в Windows это тема другой статьи, ссылка на материал будет добавлена позднее.
Для начала произведем обновление пакетов системы до актуальной версии:
$
sudo apt update
sudo apt upgrade
Подтверждаем обновление пакетов и нажимаем Y и затем Enter.
Затем произведем установку apache2:
$ sudo apt install apache2
Подтверждаем установку Apache и нажимаем Y и затем Enter.
В дистрибутивах название RPM пакета может быть другим, например команда для установки dnf install httpd и при прочтении документации к вашему дистрибутиву Linux, установка Apache не вызовет у вас трудностей.
Теперь необходимо на веб сервере настроить в автозагрузку системы, иначе нам пришлось бы каждый раз запускать его вручную после включения или перезагрузки сервера:
$ sudo systemctl enable apache2
Настройка 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 и sites. Каталоги в названии которых имеется available и enabled, это работает таким образом, что при активации модуля или включении хоста создается символическая ссылка в каталоге available (значение доступно) которая ведет в каталог enable (значение включено). В связи с этим конфигурирование правильно будет производить именно в каталогах available. Конечно, можно было бы обходиться без этих каталогов, взять по старинке и прописать в одном файле, конечно, это все бы работало, но в наше время так не принято делать.
Важно! Рекомендую всем системным администраторам Linux обязательно читать информацию из официального источника и сделать своей привычкой! Со временем информация может устаревать.
Параметры сервера Apache
Вначале предлагаю рассмотреть главный конфигурационный файл Apache:
$ sudo nano /etc/apache2/apache2.conf
Внимание! Мы будем использовать консольный редактор nano. Если вы получаете следующую ошибку: -bash: nano: команда не найдена, установите nano командой:
$ sudo apt install nano
После установки консольного редактора nano, открываем файл.
Timeout – означает сколько выделено времени серверу на выполнение передачи или прием данных. Установленного значения 160 секунд вполне достаточно для стабильной работы.
KeepAlive On – очень важный параметр, его включение позволяет передавать веб серверу несколько потоков за одну сессию, к примеру, не только html данные, но и image, css, js, txt и другие файлы.
MaxKeepAliveRequests 100 – этот параметр задает максимальное число запросов за одно соединение, большое значение дает нагрузку на процессор, установленного значения 100 запросов достаточно для нормальной работы.
KeepAliveTimeout 5 – таймаут соединения, в основном достаточно 5-10 секунд для загрузки страниц, большое значение ставить не нужно, но и обрывать соединение раньше времени чем загрузилась страница тоже не имеет смысла.
User, Group – в этих полях указан пользователь и группа, с привилегиями которых будет запущена процессы программы.
HostnameLookups On – в процессе записи лог файла записывается имя хоста вместо ip адресов, рекомендуется отключать, это способствует ускорению работы ПО.
LogLevel – значение регулирует насколько подробно вести записи в журнал ошибок. По умолчанию установлено значение warn, но для того, чтобы лог заполнялся менее интенсивно достаточно установить значение error, это означает фиксировать только ошибки.
Include – этот параметр подключает другие файлы настроек веб-сервера рассмотренных выше.
Директива Directory задает настройку прав доступа к любой директории файловой системы. Синтаксис выглядит примерно так:
$
Параметр и значение
Здесь применимы следующие опции:
AllowOverride – определяет нужно ли позволять читать . htaccess файлы в указанной директории, это файлы настроек и аналогичным синтаксисом. All – разрешено все, None – задает значение не читать эти файлы.
Например:
$
AllowOverride AuthConfig
# или так
#AllowOverride All
DocumentRoot – задает значение из какого каталога подгружать файлы для показа посетителям сайта.
Options – задает политики доступа веб-сервера какие предоставить разрешения предоставить тот или иной доступ в указанной директории. Для примера рассмотрим значение, All – разрешает все, FollowSymLinks – разрешен переход по символическим ссылкам,
Indexes – отображает содержимое указанного каталога при отсутствии файла index.
Require – устанавливает политики доступа к этому каталогу. Require all denied – запрещено всем, Require all granted – разрешено всем. Применимо использование вместо all значение user или group чтобы явно задать политику подключения пользователя, как показано на примере ниже.
$
AuthType Basic
AuthName «Please enter your username and password»
AuthUserFile /var/www/unixweb.ru/.htpasswd
Require ip 192.168.122.1
Require valid-user
Order – позволяет управлять доступом к указанной выше директории. Применимы два значения Allow, Deny – разрешить для всех, кроме указанных или Deny, Allow – запретить для всех, кроме разрешенных. Далее мы можем закрыть всем доступ к директории, указав значение: Deny from all, а затем разрешить доступ для вашего IP, эта запись выглядит так Allow from 192.168.122.1 или хоста с именем unixweb.ru: Allow from unixweb.ru. IP адрес 192.168.122.1 замените на свое значение.
Внимание! Значения директивы Allow, Deny, Order модуля mod_access_compat нежелательны к применению, их считаются устаревшими, хотя поддержка осуществляется еще в версии Apache 2.4, но возможно следующих релизах они вероятно будут удалены.
Осталось рассмотреть файл /etc/apache2/ports.conf:
В текущем файле имеется только директива, Listen, значение задает номер порта, на котором будет работать программа.
Текущий файл /etc/apache2/envvars, вряд ли станете применять, в нем назначены переменные, которые актуально использовать в конфигурационных файлах при настройке Apache.
Внимание! В целом значение всех параметров рассчитывается индивидуально и зависит от конфигурации сервера. Выше описаны основные параметры для базовой настройки Apache, для более углубленного изучения материала, рекомендуем к прочтению официальную документацию, читать тут https://httpd.apache.org/docs/2.4/ .
Настройка Apache по средствам .htaccess
Файл .htaccess предоставляет возможность произвести настройки веб-сервера в Ubuntu или Debian Linux для настройки правил в определенном каталоге нашего проекта. Все заданные нами инструкции в этом файле выполняются как бы по умолчанию оборачиваются в Directory.
Важно отметить, чтобы web-сервер применил инструкции из .htaccess файла для этого каталога необходимо в главном файле сервера или файле виртуального хоста не должно установлено следующие значение AllowOverride None, для того чтобы применились все настройки, необходимо установить значение AllowOverride All. index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
В целом это тема для отдельной статьи, ссылку на материал добавлю позднее.
Настройка модулей Apache.
Как я ранее писал, веб-сервер Apache – модульное программное обеспечение, расширение функциональности происходить с помощью включения нужных нам модулей. Все доступные серверные модули и прочие файлы настроек расположены в каталоге /etc/apache2/mods-available. Активированные модули находятся в каталоге /etc/apache2/mods-enable.
Если вам интересно, вы можете анализировать содержимое этих каталогов.
Конфигурирование Apache 2.4, включение модулей происходит при выполнении специализированных команд. При необходимости можно посмотреть в командной строке все загруженные модули, сделать можно командой:
$ sudo apache2ctl -M
В процессе настройки Apache у вас может появиться следующая ошибка:
$ sudo apache2ctl -M
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
Исправляется она следующим образом, необходимо добавить запись ServerName localhost в главный файл конфигурации Apache. Открываем файл /etc/apache2/apache2.conf и добавляем недостающий параметр настроек. После внесенных изменений ошибка больше не будет появляться.
$
sudo nano /etc/apache2/apache2.conf
После проверяем корректность настроек конфигурационные файлы нашего веб сервера:
$ sudo apache2ctl -t
Справочная информация
Посмотреть все параметры утилиты apache2ctl можно так:
$ sudo apache2ctl –help
и так:
$ sudo apache2 -h
Для развернутого изучения всего функционала, выполните команду в терминале:
$ man apache2
В случае появления следующей ошибки:
$ -bash: man: command not found
Выполните установку пакета man, сделать можно командой:
$ sudo apt install man
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,538 kB of archives.
After this operation, 7,390 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Подтвердите установку пакета нажав Y и после клавишу Enter.
Управление модулями.
Произвести включение модуля можно командой:
$ sudo a2enmod имя модуля
А отключение модуля:
$ sudo a2dismod имя модуля
После включения или отключения модулей необходимо выполнить перезагрузку apache:
$ sudo systemctl restart apache2
Если вывести содержимое этого файла, это будет выглядеть так:
$ cat /etc/apache2/mods-available/deflate.load
# Depends: filter
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
Конечно, активировать модуль можно было бы просто добавив строку в файл apache2.conf. Но сейчас принято так делать, это необходимо, чтобы избежать путаницы.
Файлы с настройками модулей находятся в том же каталоге, только в файлы имеют расширение . conf вместо load. Теперь посмотрим настройки того же модуля deflate, при помощи команды cat:
$ cat /etc/apache2/mods-available/deflate.conf
cat /etc/apache2/mods-available/deflate.conf
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/wasm
AddOutputFilterByType DEFLATE application/xml
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Файлы в каталоге conf-available, это тоже модули, но они были установлены отдельно от apache, это могут быть файлы для конфигурирования и включения модулей, например php или прочего программного интерпретатора. Все работает аналогично как описано выше, только команды для включения и отключения модулей немного другие:
Включение:
$ a2enconf имя модуля
Выключение:
$ a2disconf имя модуля
Как вы заметили, управлять модулями довольно просто. Давайте включим необходимые нам модуле, которые не включены:
$ sudo a2enmod expires
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod ssl
Важно знать! Команды: a2enmod, a2dismod, a2enconf, a2disconf, a2ensite, a2dissite при выполнении создают или удаляют символьные ссылки на файл модуля с имеющим расширение load в каталоге mods-available.
Такие модули как expires и headers снижают загруженность сервера. За счет модулей отдается заголовок Not Modified, если страница сайта не была изменена с последнего запроса.
Модуль expiries задает время, для браузера на которое должен кэшироваться полученная страница.
Модуль Rewrite даёт возможность применять запрашиваемые URL на лету, это актуально для создания ЧПУ ссылок и т д.
А модуль ssl нужен для шифрования трафика по средствам SSL сертификата. После включения и отключения модулей не забывайте делать перезагрузку apache2 и также после внесения изменений в конфигурационных файлах.
Настройка виртуальных хостов Apache.
Было бы крайне неудобно, если на одном сервере была возможность размещать только один сайт. Apache имеет возможность размещать сотни веб-сайтов на одном физическом или виртуальном сервере и отдавать пользователям индивидуальное содержимое для каждого хоста. Для этих задач реализован функционал виртуальных хостов. В начале сервер определяет к какому именно домену приходит http запрос и после этого происходит отдача нужного содержимого из каталога нужного хоста.
Файл виртуального хоста.
Настройки для виртуальных хостов Apache находятся в каталоге /etc/apache2/sites-available/. При создании нового хоста необходимо создать новый файл с именем домена и выполнить необходимую конфигурацию. Настройки виртуального оборачиваются директивой VirtualHost. На примере сайта unixweb.ru это выглядит приблизительно так:
$
ServerName unixweb.ru
ServerAlias www.unixweb.ru
ServerAdmin [email protected]
DirectoryIndex index. php index.html
DocumentRoot /var/www/unixweb.ru
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Значение параметров размещенных в VirtualHost:
ServerName – задается основное имя домена.
ServerAlias – задается дополнительное имя, по которому будет доступен сайт.
ServerAdmin – электронная почта администратора сайта.
DirectoryIndex – указываем файлы index с расширением html, php, htm.
DocumentRoot – каталог, где расположен сайт домена.
ErrorLog – лог ошибок.
CustomLog – лог обращений к сайту.
В переменной ${APACHE_LOG_DIR} задан по умолчанию этот каталог /var/log/apache2 используемый для хранения логов.
Каталог сайта.
Перед включением нашего сайта, создадим каталог, который указан в директиве DocumentRoot Apache. Выполним команду от пользователя root:
$ mkdir /var/www/unixweb. ru
Пока создадим пустой файл index.html, также вы можете выгрузить простой сайт сделанный на html. Выполните команду:
$ touch /var/www/unixweb.ru/index.html
echo ‘
‘ > /var/www/unixweb.ru/index.html
Для работы сайта на PHP следует произвести установку и настройку php интерпретатора, баз данных MySQL, PHPMyAdmin, но это тема другой статьи.
Права доступа для корректной работы сайта.
Также для корректной работы сайта, желательно установить права доступа на файлы и каталоги в директории сайта DocumentRoot.
Выполните следующие команды:
$ chown www-data:www-data -R /var/www/unixweb.ru/
find /var/www/unixweb.ru/ -type d -exec chmod 0755 {} \;
find /var/www/unixweb.ru/ -type f -exec chmod 0644 {} \;
Внимание! Пожалуйста, измените значение директивы DocumentRoot, как показано в примерах выше. Название каталога сайта unixweb.ru замените на ваше значение. Включая все команды, где написано unixweb.ru.
Виртуальные хосты, как и модули нужно включить. Для этого реализованные специальные утилиты командной строки. Чтобы включить нужный нам сайт, наберите:
Активируем и деактивируем сайт.
$ sudo a2ensite unixweb.ru
Здесь unixweb.ru – имя конфигурационного файла виртуального хоста замените на свое.
Для отключения выполните команду:
$ sudo a2dissite unixweb.ru
Проверяем работу Apache.
$ sudo netstat -natp | grep apache2
tcp6 0 0 :::80 :::* LISTEN 81/apache2
tcp6 0 0 :::443 :::* LISTEN 81/apache2
Тут наглядно показано, что веб-сервер прослушивает порты 80 и 443.
Открываем порты Apache.
При установке операционной системы Debian и Ubuntu firewall отключен, по этому рекомендуется его обязательно настроить, но это тема отдельной статьи.
Рассмотрим случай когда Firewall включен на примере iptables и ufw, и нам нужно открыть порты для корректной работы Apache. Приведу несколько команд для открытия портов 80 и 443.
Пример для утилиты iptables:
$ sudo iptables -A INPUT -p tcp -m state —state NEW -m tcp -m multiport —dports 80,443 -j ACCEPT
Пример для ufw:
$ # Открываем 80 порт
sudo ufw allow http
# или так
sudo ufw allow 80/tcp
# или так
sudo ufw allow ‘Apache’
# Открываем 443 порт
sudo ufw allow https
# или так
sudo ufw allow 443/tcp
# или так
sudo ufw allow ‘Apache Secure’
Рекомендую ознакомиться с официальной документацией по работе с iptables и ufw, без этого вы не сможете корректно настроить Firewall.
Настройка на локальном сервере.
Конфигурирование виртуального хоста на этом завершена, но, вам необходима настройка Apache для разработки на локальной машине Linuх, достаточно произвести настройку в файле /etc/hosts это нужно для того, чтобы браузеру сообщить о новом сайте на локальном ПК.
Открываем файл в редакторе nano воспользовавшись терминалом командной строки. В самом начале указываем IP сервера на котором будет или размещен сайт, задаем через пробел значение ServerName и значение ServerAlias. В моем случае это 192.168.122.174 unixweb.ru www.unixweb.ru. Пожалуйста, замените записи на свои значения.
Сделать можно так:
$ nano /etc/hosts
И вносим следующие записи
$ # IP сервера, значение ServerName, значение ServerAlias
192.168.122.174 unixweb.ru www.unixweb.ru
Проверка работы локального сайта
Теперь сайт должен открыться в браузере после внесения этих правок, открывайте браузер, проверяйте.
Если вы хотите опубликовать сайт в интернете нужно произвести настройки Apache на VPS или физическом сервере. После настроить DNS для вашего домена, но это тема отдельной статьи.
Подведем итог.
На этом завершена установка Apache и базовая настройка, вы можете применять эту инструкцию для реализации своего web-сервера. Инструкция актуальна исключительно в операционных системах Debian и Ubuntu. Все же одной статьи недостаточно, чтобы раскрыть тему, достаточно глубоко, эта тема целого цикла статей.
Вам понравилась статья поделитесь ссылкой на этот материал в социальных сетях и подпишитесь на нашу рассылку. У вас остались еще вопросы, напишите мне или задайте ваш его в комментариях или просто поделитесь своим мнением!
Если вы обнаружили неточность или ошибку буду Вам признателен если вы сообщите об этом, пишите мне и сразу поправлю статью.
Пожалуйста, оцените звездой!
Установка Apache, настройка Ubuntu, Debian Apache — это самый распространённый веб-сервер с открытым исходным кодом. На 2022 год за счет этого серверного ПО функционируют на 35% сайтов интернета, а это около 350 миллиардов интернет проектов.
5 1 5 7
Your page rank:
Как настроить веб-сервер Apache в Linux
Apache — это самое мощное, гибкое и широко используемое программное обеспечение с открытым исходным кодом, которое обслуживает веб-контент через Интернет.
Что наиболее важно, веб-серверы, включая Apache, поддерживают несколько операционных систем, таких как Linux, Windows, Solaris, macOS и т. д. Следовательно, вы можете легко превратить компьютер в сервер, на котором размещено несколько веб-сайтов.
HTTP-сервер Apache позволяет загружать модули с расширенной поддержкой интеграции программного обеспечения и приложений. В этой статье подробно описана установка и настройка HTTP-сервера Apache в Linux.
Шаг 1. Установите сервер Apache в Linux
Перед началом установки Apache необходимо обновить базу данных пакетов Linux из официальных репозиториев. Это необходимый шаг, который помогает избежать лазеек в системе безопасности и включает новейшие функции в пакеты.
Обновите список системных репозиториев и установите Apache с помощью следующих команд:
В Ubuntu и Debian:
sudo apt-get update
sudo apt-get установить apache -y
В CentOS:
обновление sudo yum
установка sudo yum httpd -y
В Fedora:
обновление sudo dnf
установка sudo dnf httpd -y
Чтобы установить Apache в Arch Linux, выполните:
sudo pacman -Syu
sudo pacman -S апач
Обратите внимание, что в дистрибутивах Ubuntu/Debian Apache называется apache2, а в CentOS и Fedora — как httpd.
В дистрибутивах на основе Debian служба Apache запускается автоматически. Вы можете зайти в браузер и ввести свой локальный IP-адрес, чтобы получить доступ к целевой странице сервера. Если вы не уверены в адресе своего сервера, запустите команду hostname -i , чтобы распечатать подробности.
имя хоста -я
Выход:
192.168.43.130
Страница подтверждает успешную установку.
http://
Или выполните следующую команду для проверки установки:
apache2-версия
Выход:
Если вы используете CentOS, служба не запустится автоматически. Вы можете запустить службу вручную, выполнив команду:
sudo systemctl начать httpd
Проверьте статус службы, как показано ниже:
статус sudo systemctl httpd
Шаг 3. Настройте брандмауэр, чтобы разрешить доступ к серверу Apache
Еще одним обязательным шагом в настройке Apache является включение брандмауэра UFW в Linux для приема или разрешения доступа к серверу через порт 80 по умолчанию. Во время установки служба регистрируется в брандмауэре с некоторыми профилями приложений. Список профилей приложений поможет вам включить/отключить доступ к Apache.
Используйте следующую команду, чтобы получить список всех профилей приложений Apache:
список приложений sudo ufw
Выход:
Доступные приложения:
Apache
Apache Full
Apache Secure
OpenSSH
Доступные профили представляют собой:
- Apache : открывает только порт 80 для обеспечения незашифрованной связи через Интернет
- Apache Full : открывает оба порта 80 и 443 для незашифрованной и безопасной связи
- Apache Secure : разрешает безопасный доступ к серверу через HTTPS трафик на порту 443
Поскольку у нас не включен SSL/TLS для сервера, мы разрешим доступ UFW только к порту 80 следующим образом:
sudo ufw разрешить «Apache»
Теперь проверьте состояние брандмауэра, выполнив:
sudo ufw статус
Шаг 4.
Общие сведения о каталогах и файлах ApacheПосле успешной установки и настройки сервера каждый новичок должен знать, как сервер управляет своими веб-сайтами и их содержимым. Каталог /var/www/html управляет всеми веб-сайтами, которые вы хотите разместить на своем сервере.
По умолчанию каталог содержит веб-страницу, которую вы видели ранее. Apache позволяет создавать различные подкаталоги в этой папке для размещения нескольких веб-сайтов.
В дистрибутивах на основе Ubuntu и Debian основной каталог конфигурации для сервера Apache — /etc/apache2 , а для CentOS — /etc/httpd . Следовательно, все файлы конфигурации для сервера доступны внутри этих каталогов. Некоторые из наиболее известных файлов/каталогов:
- /var/log/apache2/error.log : регистрирует все обнаруженные ошибки
- /var/log/apache2/access.log : регистрирует все запросы доступа к серверу
- /etc/apache2/sites-available : Каталог, содержащий виртуальные хосты
- /etc/apache2/sites-enabled : Хранит готовые к обслуживанию веб-сайты для каждого виртуального хоста. Он не может работать без связывания файла конфигурации внутри каталога, доступного для сайтов, с помощью команды a2ensite .
Пример настройки виртуального хоста
Установка сервера Apache создает каталог по умолчанию /var/www/html во всех дистрибутивах Linux. Этот каталог содержит все файлы для вашего веб-сайта, но он не может работать, если вы хотите разместить несколько веб-сайтов на одном сервере.
Для обслуживания нескольких доменов вы можете использовать виртуальные хосты и создать каталог домена в папке /var/www следующим образом:
sudo mkdir /var/www/host_example
Измените владельца и права доступа к файлам каталога с помощью chown.
sudo chown -R $current_user:$current_user /var/www/host_example
sudo chmod -R 755 /var/www/host_example
Теперь откройте файл /var/www/host_example/html/content.html в вашем любимом редакторе и скопируйте/вставьте следующий HTML-код:
Добро пожаловать в host_example!
Вы используете host_example в Ubuntu 18.
04!
Apache создает папку конфигурации, которая служит местом хранения для записи виртуальных хостов. Файл конфигурации по умолчанию — /etc/apache2/sites-available/000-default.conf . Однако вы можете создать новый файл в соответствии с вашим доменным именем и скопировать/вставить блок конфигурации, доступный в файле по умолчанию.
Отредактируйте файл с помощью текстового редактора по вашему выбору и обновите его, указав свое доменное имя и новый каталог следующим образом:
ServerAdmin admin@host_example
ServerName host_example
ServerAlias www.host_example
DocumentRoot /var/www/host_example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_1DIR в сочетании Виртуальный хост>
Активируйте файл конфигурации вашего домена
Файл конфигурации домена host_example.conf Активация требует использования a2ensite.
sudo a2ensite host_example.conf
Приведенный выше вывод отображает требования для отключения файла конфигурации по умолчанию (000-default.conf):
sudo a2dissite 000-default.conf
Теперь перезапустите службу Apache, чтобы изменения вступили в силу.
sudo systemctl перезапустить apache2
Откройте браузер и перейдите к доменному имени, чтобы проверить, обслуживает ли оно ваш веб-сайт:
http://host_example
Проверка ошибок конфигурации
Утилита apache2ctl позволяет проверить наличие ошибок конфигурации сервера Apache. Следующая команда должна возвращать вывод Syntax OK для проверки успешной конфигурации без ошибок:
судо apache2ctl configtest
Выход:
Синтаксис ОК
Размещение нескольких веб-сайтов на серверах Linux с использованием Apache
Приведенное выше руководство демонстрирует модульность и простоту установки и настройки сервера Apache. Универсальность сервера позволяет вам настраивать установку и размещать веб-сайты в соответствии с вашими требованиями. Вариант использования настройки виртуального хоста показывает, как работают и взаимодействуют файлы конфигурации.
Возможно, вы также заметили, что особенности/папки могут меняться в зависимости от вашего дистрибутива Linux и версии Apache. Наконец, команды управления Apache предназначены для управления, запуска или перезагрузки серверных служб оптимизированным способом. Вы также можете найти другие серверы Linux для размещения своих веб-сайтов.
Как настроить веб-сервер Apache Raspberry Pi
В этом проекте Raspberry Pi Apache мы покажем вам, как установить и настроить веб-сервер Apache на Raspberry Pi.
Сам по себе Apache может обслуживать файлы HTML по веб-протоколам HTTP и HTTPS. Наряду с дополнительными модулями, такими как PHP, Apache также может обслуживать динамический контент.
Apache — один из самых популярных веб-серверов, доступных для Raspberry Pi. Только на Apache приходится 44% всех веб-серверов в мире.
Альтернативой Apache является веб-сервер Nginx, который считается намного быстрее, чем Apache, в определенных задачах. Это полностью зависит от вас, какую технологию вы хотите использовать.
В рамках этого руководства по Raspberry Pi Apache мы проведем вас через шаги по настройке Apache, установке PHP, а также созданию вашего первого базового файла Apache VirtualHost.
В этом руководстве мы коснемся всех основ Apache, но не коснемся настройки MYSQL и PHPMyAdmin. Мы также не рассматриваем настройку WordPress на Raspberry Pi. Все эти темы рассматриваются в отдельных учебниках.
Список оборудования
Ниже приведены все детали, которые я использовал для этого руководства по веб-серверу Raspberry Pi Apache.
Рекомендуется
Дополнительный
- Raspberry Pi Case
- USB -клавиатура
- USB Mouse
- HDMI CABLE
- MONITION
2. Во-первых, нам нужно установить пакет Apache2 на наш Raspberry Pi.
Для тех, кто не знает, что такое Apache, это серверное программное обеспечение, которое передает файлы HTML с компьютера в веб-браузер.
Чтобы установить apache2 на Raspberry Pi, введите в терминал следующую команду.
3. После установки Apache2 на наш Raspberry Pi у нас теперь есть очень простой веб-сервер, работающий и работающий. Сервер сможет предоставлять нединамический контент, такой как файлы HTML.
В следующем разделе мы расширим этот базовый веб-сервер Apache, установив PHP на Raspberry Pi.
Чтобы убедиться, что Apache запущен и работает на вашем Raspberry Pi, вы можете ввести IP-адрес Raspberry Pi в веб-браузере. Сервер должен вернуть веб-страницу с простым текстом.
Если вы не знаете IP-адрес, вы можете ввести команду hostname в терминал, чтобы получить его.
4. В веб-браузере введите IP-адрес вашего Raspberry Pi, он должен подключиться и загрузить страницу, как показано ниже.
5. Чтобы иметь возможность вносить изменения в файлы в пределах /var/www/html
без использования root нам нужно настроить некоторые разрешения.
Во-первых, мы добавляем пользователя pi
(наш пользователь) в группу www-data
, группу по умолчанию для Apache2.
Во-вторых, мы передаем права собственности на все файлы и папки в каталоге /var/www/html
группе www-data
.
После того, как вы запустите эту команду, вам нужно будет выйти из системы, а затем войти снова, чтобы изменения вступили в силу.
6. Теперь вы можете внести изменения в веб-страницу по умолчанию, выполнив следующую команду.
Эта команда использует текстовый редактор nano для изменения файла index.html
.
Веб-сервер будет обслуживать все файлы в каталоге /var/www/html/
.
Apache — это базовый веб-сервер, который отлично подходит для изучения HTML, JS или CSS.
Однако, если вам нужен PHP (используется для динамических веб-страниц), перейдите к следующему разделу нашего руководства по Raspberry Pi Apache.
Настройка PHP7 для Apache
1. Обратите внимание, что перед тем, как начать этот раздел, у вас должна быть установлена как минимум ОС Raspberry Pi Bullseye . Вы можете узнать, как перейти на Raspberry Pi OS Bullseye в нашем руководстве.
Чтобы начать этот раздел, нам нужно установить PHP 7.4 и несколько других пакетов на Raspberry Pi. Дополнительные пакеты, которые мы устанавливаем, обычно используются приложениями PHP.
К счастью для нас, установка всех необходимых пакетов — это простой процесс, поскольку PHP 7.4 доступен в репозитории пакетов Raspberry Pi OS Bullseye.
Выполните следующую команду, чтобы установить все пакеты PHP на Raspberry Pi.
Хотя эти пакеты доступны в ОС Raspberry Pi Bullseye, возможна их установка в более старых версиях. Чтобы установить эту версию PHP на более старые версии, вам потребуется добавить сторонний репозиторий PHP.
2. Теперь, когда PHP установлен на Raspberry Pi, мы можем протестировать его, чтобы убедиться, что он работает.
Нам не нужно беспокоиться об изменении каких-либо файлов конфигурации, так как это делается автоматически при обнаружении Apache.
Мы можем проверить, работает ли PHP, создав файл PHP в каталоге /var/www/html/
. Создание файла в этом каталоге позволит обрабатывать и отображать его при открытии в веб-браузере.
В нашем примере мы создадим файл PHP с именем example.php
. Мы можем создать этот файл, введя следующую команду.
3. В этот файл нам нужно добавить следующие строки кода PHP.
Приведенный выше код — невероятно простой PHP-скрипт, который выводит текущую дату, полученную с помощью PHP 9.0016 дата() функция. Достаточно будет сказать нам, что PHP действительно запущен и работает.
4. Теперь сохраните файл, нажав Ctrl + X , затем нажав Y и нажав ENTER .
5. В веб-браузере перейдите по адресу http://192.168.1.103/example.php
.
Убедитесь, что вы заменили 192.168.1.103
на IP-адрес вашего Raspberry Pi.
При переходе по следующему URL-адресу должно отображаться что-то вроде следующего.
Настройка виртуального хоста Apache
Виртуальные хосты являются неотъемлемой частью работы Apache. Apache использует эти файлы Virtualhost, чтобы знать, как обращаться с отдельным сайтом.
В этом разделе мы покажем вам, как создать базовый файл виртуального хоста на веб-сервере Raspberry Pi Apache. Виртуальные хосты — это способ Apache обрабатывать несколько веб-сайтов, при этом каждый файл виртуального хоста настраивает и настраивает определенный домен.
1. Начните с выполнения следующей команды, чтобы создать базовый файл виртуального хоста с именем example. com.conf
в папке /etc/apache2/sites-available
.
Если вы планируете использовать это для реального доменного имени, убедитесь, что вы заменили example.com
доменным именем.
2. В этом файле введите следующий текст.
Мы будем объяснять каждую часть файла виртуального хоста по ходу дела, чтобы у вас было представление о том, как настроить самый простой виртуальный хост.
Эта строка обозначает запуск виртуального хоста и то, что этот виртуальный хост должен прослушивать порт 80.
Для тех, кто не знает порт 80 является портом по умолчанию для http . Аналогично, порт, используемый для https , равен 443 .
Здесь мы добавляем две директивы к нашему виртуальному хосту. Первая из этих директив под названием ServerName
определяет базовый домен. Это имя сервера используется для сопоставления VirtualHost с доменным именем.
Вторая директива, ServerAlias
, определяет дополнительные доменные имена, которые будут сопоставляться, как если бы они были базовым доменным именем.
Эта директива полезна для сопоставления дополнительных имен, таких как www.
субдомен.
Директива DocumentRoot
определяет каталог, из которого Apache будет обслуживать все файлы.
В этих последних двух директивах ErrorLog
и CustomLog
мы указываем места, где мы хотим хранить файлы журнала.
Наконец, мы закрываем раздел VirtualHost.
3. Когда все будет готово, код должен выглядеть так, как показано ниже. Конечно, используя свое доменное имя, а не например.com
.
После этого сохраните файл, нажав CTRL + X , затем Y , затем ENTER .
4. Теперь создадим папку, в которой мы будем хранить наши файлы HTML. Мы также возьмем на себя ответственность за эту папку для группы www-data
.