Debian apache2 настройка виртуальных хостов

Обновлено: 03.07.2024

Настраиваем веб-сервер на базе Apache в Debian / Ubuntu Server

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

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

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

Для установки мы будем использовать платформу Debian / Ubuntu. Системы, в зависимости от релиза, отличаются набором ПО, но все изложенное ниже будет одинаково применимо к любой из них. Существующие отличия будут оговорены отдельно. На момент написания статьи актуальны следующие релизы систем и версии ПО:

  • Debian 8 Jessie: Apache 2.4.10, PHP 5.6.7, MySQL 5.5.43
  • Debian 7 Squeeze: Apache 2.2.22, PHP 5.4.39, MySQL 5.5.43
  • Ubuntu Server 14.04 LTS: Apache 2.4.7, PHP 5.5.9, MySQL 5.5.43
  • Ubuntu 12.04 LTS: Apache 2.2.22, PHP 5.3.10, MySQL 5.5.43

Все вышеуказанные выпуски содержат относительно современные версии ПО, но есть некоторые особенности. Так входящий в состав Ubuntu 14.04 и Debian 8, Apache 2.4 имеет достаточно серьезные отличия от Apache 2.2 и не все CMS (системы управления контентом, "движки") и веб-приложения умеют работать с ним, особенно это касается старых версий. Так, например, вы не сможете использовать Apache 2.4 для веб-доступа к базам 1С:Предприятие. Поэтому, если вы решили выбрать версию 2.4 - уточните совместимость с нею всех планируемых к размещению CMS и веб-приложений.

Кроме того, MySQL из состава Ubuntu Server 12.04 / 14.04 не работает внутри контейнеров OpenVZ, которые широко используются для предоставления услуги VPS. Проблема решается заменой MySQL из репозитория на версию от MySQL Community (разработчики) или один из форков, например, MariaDB.

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

Мы не будем останавливаться на установке и подготовке серверной ОС, более подробно вы можете ознакомиться с этим процессом в наших статьях для Debian и Ubuntu Server. Также не забудьте правильно настроить язык и региональные стандарты системы. Все приведенные ниже действия следует выполнять с правами суперпользователя, например, с помощью команды sudo.

Установка Apache

Установка веб-сервера предельно проста:

Для проверки его работы наберите в браузере IP-адрес сервера, и вы увидите стандартную страницу заглушку:

LAMP-Debian-Ubuntu-001.jpg

Для Apache 2.4 она выглядит несколько иначе, но смысл от этого не меняется.

Настройки сервера содержатся в /etc/apache2/apache2.conf, к которому подключаются дополнительные файлы из директорий mods-enabled и sites-enabled. При этом никто не мешает вам внести все указанные настройки непосредственно в apache2.conf - все будет работать, но это резко снижает удобство администрирования, так как требует постоянной правки основного файла конфигурации, в то время как настройки во внешних файлах легко включаются и отключаются при помощи специальных инструментов.

С этой целью каталоги mods-enabled и sites-enabled не содержат файлов конфигурации, а только символические ссылки на директории mods-available и sites-available, где следует располагать сами файлы. Как понятно из названий, в данных каталогах находятся настройки модулей и виртуальных хостов. Если с модулями дело приходится иметь редко, то управлять таким образом виртуальными хостами, т.е. сайтами, очень удобно.

Следующий вопрос, который следует решить, это права доступа к файлам и папкам сайта. По умолчанию их владельцем должен являться веб-сервер (пользователь и группа www-data), в противном случае скрипты могут работать неожиданным образом или не работать вообще. Более удобно и безопасно запускать содержимое сайтов от имени пользователя, а не веб-сервера. Для этого установим следующий пакет:

В Ubuntu 14.04 при установке данного пакета вы можете столкнуться с ошибкой:

Это известный баг, для его исправления выполните:

Если мы заглянем в папку sites-enabled, то увидим там уже готовую конфигурацию для сайта по умолчанию, т.е. того, что будет показано при наборе IP-адреса сервера. Данная настройка указывает на папку /var/www или /var/www/html для Apache 2.4, где расположена страница заглушка. После того как вы добавите свои сайты, выводиться будет первый по списку сайт.

Теперь создадим файл виртуального хоста и приступим к его заполнению:

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

Внутри разместите следующий текст:

Разберем содержимое более подробно. Начинается секция виртуального хоста с ее определения <VirtualHost 1.2.3.4:80>, где указывается IP-адрес и порт, на котором данный хост работает, если вы хотите принимать соединения на всех сетевых интерфейсах, то вместо адреса поставьте "звездочку" - *. Внутри секции располагаются следующие директивы:

  • ±Includes - разрешает / запрещает SSI (Server Side Includes -- включения на стороне сервера), в нашем случае выключено в целях безопасности. Имеет смысл включать только в том случае, если ваш сайт явно требует данной опции.
  • ±Indexes - разрешает / запрещает показывать содержимое каталога при отсутствии индексного файла, отключено в целях безопасности.
  • ±ExecCGI - разрешает / запрещает выполнение сценариев CGI, отключаем в целях безопасности.

За ней следует директива AllowOverride, которая устанавливает использование директив из файлов .htaccess, по умолчанию сервер устанавливает для /var/www данную директиву в None, что запрещает использовать директивы .htaccess во всех вложенных директориях. Для того чтобы разрешить использование директив .htaccess установите данную директиву в All, что разрешит использовать в .htaccess любые директивы.

Этим список доступных опций (как и директив) не исчерпывается, но их рассмотрение выходит за рамки данной статьи и будет рассмотрено в отдельном материале. Вы можете самостоятельно ознакомиться с ними в официальной документации.

Закрываем открытые секции: </Directory> и </VirtualHost>, затем сохраняем файл. Конфигурация виртуального хоста готова.

Чтобы включить сайт необходимо сделать символьную ссылку на файл конфигурации в каталоге sites-enabled, а, чтобы выключить - удалить эту ссылку. Это можно сделать вручную, при помощи команды ln -s, или использовать специальную утилиту apache:

Данная команда включит сайт, для выключения введите:

В качестве опции команде передается имя конфигурационного файла из sites-available, в случае Apache 2.4 без расширения. После каждого такого действия веб-сервер необходимо перезапустить:

Чтобы проверить работу виртуального хоста разместите в его корневой директории любой html-файл и обратитесь к серверу по имени домена (при этом А-запись домена должна быть настроена и указывать на ваш веб-сервер).

Например, создадим индексный файл:

И разместим в нем строку:

В итоге в браузере вы должны увидеть следующее:

LAMP-Debian-Ubuntu-002.jpg

Установка PHP

Если веб-сервер был нужен вам для размещения статического содержимого или сторонних веб-приложений, например, публикации баз 1С:Предприятия, то дальше можно не читать. Но если вы собираетесь создать сайт на основе популярных CMS - вам потребуется поддержка скриптового языка PHP, на базе которого разработаны большинство современных "движков".

Важно! В современных дистрибутивах используется более новая версия PHP7, чтобы работать с новой версией языка вместо php5 в приведенных ниже командах следует указывать php7.x или просто php, например, вместо php5-imagick нужно набрать php7.0-imagick или php-imagick.

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

По умолчанию PHP устанавливается с базовым набором модулей, который удовлетворяет большинство потребностей, однако применяемая вами CMS может требовать дополнительных модулей, которые нужно будет установить отдельно.

Например, для работы с графикой вам потребуется поддержка графической библиотеки GD2, поэтому установим соответствующий модуль:

После чего не забудьте перезапустить веб-сервер:

Кстати, GD2, на наш взгляд не самый лучший выбор, в актив библиотеки можно записать низкое потребление ресурсов и высокую скорость работы, но по качеству работы с изображениями она уступает альтернативной утилите imagemagick, иногда значительно. Поэтому имеет смысл установить обе утилиты и выбрать ту, работа которой наиболее вам подойдет. Если ресурсы сервера позволяют, то предпочтительно использовать imagemagick.

Установим утилиту и модуль PHP для нее:

Для проверки работы PHP создадим в корневой директории сайта специальный скрипт:

И внесем в него следующий текст:

Миниатюра изображения для LAMP-Debian-Ubuntu-003.jpg

Установка MySQL

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

Установим сервер баз данных и модуль PHP для работы с ним:

Важно! В свежих выпусках Debian (и его производных) вместо пакета mysql-server следует установить mariadb-server, который полностью совместим с MySQL.

В процессе установки вам будет предложено ввести пароль для суперпользователя MySQL (root), которого не следует путать с суперпользователем системы.

LAMP-Debian-Ubuntu-004.jpg

Для удобного управления базами данных имеет смысл установить phpMyAdmin - удобную веб-утилиту для управления сервером MySQL:

LAMP-Debian-Ubuntu-005.jpg

В Ubuntu 14.04 мы столкнулись с небольшой проблемой, утилита сообщила нам, что расширение mcrypt не найдено, хотя соответствующий модуль PHP был установлен среди зависимостей.

LAMP-Debian-Ubuntu-006.jpg

Проверим. В /etc/php5/apache2/conf.d ссылка на данный модуль отсутствует, в то время как в /etc/php5/mods-available нужный файл есть. Следовательно, модуль установлен, но, по какой-то причине, не подключен. Возможно это связано с Apache 2.4 и тогда подобная ситуация может иметь место и в Debian 8.

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

LAMP-Debian-Ubuntu-007.jpg

Никаких дополнительных настроек MySQL сервер не требует, благо кодировка UTF-8 стала стандартом де-факто. В принципе на этом можно закончить, но все базы данных размещаемые на сервере будут работать с правами суперпользователя MySQL, что небезопасно. Поэтому следует создать пользователей сервера баз данных с ограниченными правами, чтобы они могли управлять только своими базами.

Откроем phpMyAdmin и перейдем на страницу Привилегии (Пользователи), где выберем Добавить нового пользователя.

LAMP-Debian-Ubuntu-009.jpg

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

Для проверки создадим базу данных phpMyAdmin - Базы данных - Новая база данных.

LAMP-Debian-Ubuntu-010.jpg

При создании БД обращайте внимание на кодировку. Сегодня большинство движков и веб-приложений работают с UTF-8 (utf8_general_ci), однако старые версии движков могут использовать национальные кодировки, поэтому нужно будет правильно указать их еще на стадии создания базы, в противном случае, залив в базу, созданную в UTF-8 дамп в кодировке Windows-1252 вместо русских букв на сайте окажутся "крякозяблики".

LAMP-Debian-Ubuntu-011.jpg

Создав базу, проверим ее привилегии, нажав одноименную ссылку рядом с именем базы.

LAMP-Debian-Ubuntu-012.jpg

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

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

Виртуальные хосты Apache позволяют запускать более одного веб-сайта на одной машине. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

В этой статье описывается, как настроить виртуальные хосты Apache на сервере Debian 10.

Подготовка

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

  • Доменное имя, указывающее на IP вашего публичного сервера. системе CentOS .
  • Вы вошли в систему как root или пользователь с привилегиями sudo .

Создайте структуру каталогов

Мы будем использовать следующую структуру каталогов:

Каждый домен, размещенный на сервере, будет иметь корневой каталог документа /var/www/<domain_name>/public_html .

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

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

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

Создать виртуальные хосты

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

Откройте нужный текстовый редактор и создайте следующий базовый файл конфигурации виртуального хоста:

  • ServerName : домен, который должен соответствовать данной конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : все другие домены или субдомены, которые также должны соответствовать этому виртуальному хосту, обычно субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Options : эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : если этот параметр включен, Apache будет следовать символическим ссылкам.

    Отредактируйте файл в соответствии с вашими потребностями и сохраните его.

    Вы можете назвать файл конфигурации как хотите. Лучше всего использовать доменное имя в качестве имени файла конфигурации виртуального хоста.

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

    После включения конфигурации проверьте правильность синтаксиса:

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

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

    Выводы

    В этом руководстве мы показали вам, как создать конфигурацию виртуального хоста Apache в Debian 10, Buster. Вы можете повторить описанные выше шаги и создать дополнительные виртуальные хосты для всех ваших доменов.

    Если вы хотите защитить свой веб-сайт с помощью сертификата SSL, вы можете создать и установить бесплатный сертификат Letsencrypt SSL .

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

    Favorite

    Добавить в избранное

    Главное меню » Операционная система Debian » Как настроить виртуальные хосты Apache на Debian 9

    Как настроить виртуальные хосты Apache на Debian 9

    • SSH-доступ с привилегиями root на ваш сервер Debian 9
    • правильно установленный и настроенный веб-сервер Apache

    1. Войдите на свой сервер

    Сначала позвольте нам войти на ваш сервер через SSH:

    2. Проверьте установку Apache

    Убедитесь, что apache уже установлен и запущен на вашем сервере. Вы можете сделать это с помощью следующей команды:

    Если apache не установлен, вы можете сделать это, выполнив следующие команды. Во-первых, убедитесь, что системные репозитории обновлены:

    Чтобы установить веб-сервер Apache, выполните следующие действия:

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

    Вы также можете проверить состояние службы Apache с помощью следующей команды:

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

    3. Что такое виртуальный хост?

    • Виртуальные хосты на основе имен
    • Виртуальные хосты на основе IP

    4. Создайте каталоги webroot

    Перед настройкой виртуальных хостов нам необходимо создать корневые каталоги документов для наших веб-сайтов. Создадим их в каталоге /var/www/html со следующими командами:

    Создайте новую страницу index.html с помощью:

    Добавьте следующий контент:

    Добавьте следующий контент:

    Теперь мы успешно создали тестовые страницы для обоих доменов. Чтобы наш веб-сервер Apache имел возможность доступа к этим файлам, нам также необходимо предоставить им соответствующие разрешения и установить пользователя и группу в www-data. Мы обновляем разрешения для всего каталога /var/www/html с помощью следующей команды.

    5. Создайте файлы виртуальных хостов

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

    И добавьте в файл следующий контент:

    И добавьте следующий код:

    Ниже приведено краткое описание каждой строки в наших файлах виртуального хоста.

    Следующие строки показывают, что виртуальный хост прослушивает порт 80:

    DocumentRoot определяет место, где должен искать Apache при обработке запроса для домена, определенного в ServerName или ServerAlias.

    Последние две строки определяют местоположение файлов журнала:

    6. Включение виртуальных хостов

    Следующим шагом будет создание виртуальных хостов, которые мы только что создали. Вы можете сделать это со следующими командами:

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

    Вот и все. Если вы все инструкции правильно, вы должны теперь открыть каждый из доменов в своем веб-браузере и получить результат с текстом:

    Как настроить виртуальные хосты Apache на Debian 9

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    Как настроить виртуальные хосты Apache в Debian 9

    Виртуальные хосты Apache позволяют размещать более одного домена на одной машине. При использовании виртуальных хостов вы можете указать другой корень документа (каталог, содержащий файлы веб-сайта) для каждого домена или поддомена, создать отдельную политику безопасности, использовать разные сертификаты SSL и многое другое.

    Хотя это руководство написано для Debian 9, те же шаги применимы для всех дистрибутивов на основе Debian.

    Прежде чем продолжить

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

    Создайте структуру каталогов

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

    Каждый домен, размещенный на нашем сервере, будет иметь корневой каталог документа /var/www/<domain_name>/public_html .

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

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

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

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

    Создать виртуальный хост

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

    Откройте нужный текстовый редактор и создайте следующий базовый файл конфигурации виртуального хоста:

    • ServerName : Домен, который должен соответствовать этой конфигурации виртуального хоста. Это должно быть ваше доменное имя.
    • ServerAlias : Все другие домены или субдомены, которые также должны соответствовать этому виртуальному хосту, обычно www субдомен.
    • DocumentRoot : Каталог, из которого Apache будет обслуживать файлы домена.
    • Options : Эта директива контролирует, какие функции сервера доступны в определенном каталоге.
      • -Indexes : Предотвращает отображение каталогов.
      • FollowSymLinks : Когда эта опция включена, Apache будет следовать по символическим ссылкам.

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

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

      В системах Debian вы можете включить виртуальный хост с помощью вспомогательного скрипта с именем a2ensite :

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

      После включения конфигурации проверьте правильность синтаксиса, набрав:

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

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



      Заключение

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

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