Настройка виртуальных хостов Apache на Ubuntu 16.04
Вступление
Веб-сервер Apache является наиболее популярным способом размещения веб-контента в Интернете. Более половины всех активных сайтов во всем мире используют именно его, так как Apache это крайне мощный и гибкий инструмент размещения веб-контента.
Apache разбит на отдельные блоки, каждый из которых отвечает за свою конкретную задачу и может быть настроен независимо от остальных блоков. Базовый блок, отвечающий за организацию использования доменов на вашем сервере, называется virtual host
.
Virtual host
позволяет администратору размещать несколько доменов или сайтов на одном сервере и одном ip-адресе. Это актуально для тех, кто желает размещать несколько сайтов на одном VPS.
Каждому домену, который вы настроите, будет присвоена своя отдельная директория на вашем сервере и посетители, попавшие на ваш сайт через разные домены, никогда не пересекутся и даже не будут знать, что на этом ip-адресе размещаются какие-либо другие сайты. Данная схема может включать неограниченное количество доменов, поддоменов и сайтов на них, возможности ограничены лишь мощностью железа , на котором установлен Apache.
В этой статье вы научитесь настраивать Virtual hosts
в системе Ubuntu 16.04 и предоставлять разным пользователям различное содержимое, в зависимости от домена, который они указали в адресной строке.
Подготовка
Прежде чем начать выполнять действия, описанные в этой статье, крайне рекомендуется создать пользователя с Root-привилегиями, если вы этого еще не сделали. Как это сделать вы можете прочитать в этой статье, выполнив шаги №1-4.
Кроме того, у вас должен быть установлен веб-сервер Apache2. Если вы этого еще не сделали, установите его выполнением следующих команд:
sudo apt-get update sudo apt-get install apache2
После выполнения вышеперечисленных шагов, мы можем начинать.
Для наглядности, в данном руководстве будут созданы виртуальные хосты для доменов example.com
и test.com
. В процессе всей статьи эти домены будут использованы во всех командах и конфигурационных файлах, когда же вы будете настраивать свой сервер, вы должны будете заменить эти два домена на те, что хотите использовать вы.
Если у вас еще нет доменов или вы какой-либо причине не хотите привязывать их к вашему VPS, в шестом шаге данного руководства есть инструкции, как можно эмулировать использование доменов при помощи файла hosts.
Шаг первый – Создаём дерево директорий
Первое, что вы должны сделать – это подготовить директории для ваших доменов. Корневая директория Apache находится по адресу /var/www
и именно тут мы будем создавать каталоги для каждого из доменов, которые хотим использовать. В каждом из этих каталогов мы создадим папку public_html
, где будем размещать файлы наших сайтов.
Для доменов, приведенных в качестве примера, команды на создание директорий будут выглядеть так:
sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/test.com/public_html
Красным цветом выделены домены, которые вы собираетесь обслуживать при помощи вашего VPS.
Шаг второй – назначение прав доступа
Мы создали структуру каталогов для наших доменов, но на данном этапе доступ к этим каталогам есть только у root пользователя. Если мы хотим, чтобы обычный пользователь имел возможность изменять файлы, мы должны настроить права доступа, выполнив следующие команды:
sudo chown -R $USER:$USER /var/www/example.com/public_html sudo chown -R $USER:$USER /var/www/test.com/public_html
Переменная $USER
принимает значение имени пользователя, под которым вы сидите в данный момент, сразу после нажатия кнопки Enter. Таким образом, после выполнения данных команд владельцем директорий public_html
, в которых вы будете хранить контент ваших сайтов, назначается наш текущий пользователь.
Помимо полного права доступа для текущего пользователя, вы должны быть убеждены что все ваши веб-папки открыты для чтения «для всех», это необходимо для корректной обработки запросов и отображения сайтов:
sudo chmod -R 755 /var/www
Теперь наш сервер имеет необходимые права доступа для показа контента посетителям, а наш пользователь может создавать и изменять этот контент в директориях.
Шаг третий – создание тестовых страниц для каждого виртуального хоста
Мы создали структуру директорий и настроили права на них. Пришло время размещать контент.
На данном этапе нам нужно будет лишь убедиться, что все правильно настроено и работает, поэтому ограничимся простенькими файлами index.html
для каждого хоста.
Давайте начнем с example.com
. Вы можете создать index.html и открыть его в текстовом редакторе, выполнив команду:
nano /var/www/example.com/public_html/index.html
Внутри этого файла разместим небольшой html-код, благодаря которому сможем понять, что попали на нужный нам сайт. Например такой:
<html> <head> <title>Добро пожаловать на Example.com!</title> </head> <body> <h2>Работает! Виртуальный хост example.com настроен правильно!</h2> </body> </html>
Сохраните и закройте файл.
Сделаем копию только что созданного файла, чтобы использовать её в качестве базы для аналогичного файла домена test.com
:
cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html
Откроем копию файла и изменим в ней несколько значений:
nano /var/www/test.com/public_html/index.html
<html>
<head>
<title>Добро пожаловать на Test.com!</title>
</head>
<body> <h2>Работает! Виртуальный хост test.com настроен правильно!</h2>
</body>
</html>
Сохраните и закройте файл. Теперь у нас есть страницы для проверки работы Виртуальных хостов.
Шаг четвёртый – создание конфигурационных файлов виртуальных хостов
Конфигурационные файлы виртуальных хостов – это такие файлы, в которых прописано, как должен вести себя Apache при запросах на различные домены.
По умолчанию в Apache уже существует один такой файл – 000-default.conf
, мы можем воспользоваться им в качестве образца и отправной точки.
Нам предстоит скопировать 000-default.conf
для первого домена, настроить его под наши нужды, после чего скопировать уже измененный файл и настроить его под второй домен, внеся небольшие поправки. Стоит отметить, что все названия конфигурационных файлов виртуальных хостов в Ubuntu должны заканчиваться на .conf
Создадим первый конфигурационный файл
Начнем с копирования файла 000-default.conf
для нашего первого домена:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Откройте новый файл в текстовом редакторе с привилегиями root пользователя:
sudo nano /etc/apache2/sites-available/example.com.conf
Вы должны увидеть приблизительно следующую картину (комментарии удалены из файла для повышения наглядности):
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Как вы можете видеть, структура конфига довольно проста. Мы изменим несколько параметров, а также добавим несколько своих, чтобы этот файл описывал наш первый домен. Благодаря этому файлику будут обрабатываться любые запросы, поступившие на 80 порт – стандартный порт HTTP-запросов.
Для начала изменим параметр ServerAdmin
, поместим туда адрес электронной почты, на которую администратор сайта будет получать сообщения:
ServerAdmin [email protected]
После этого вы должны добавить два параметра. Первый, ServerName
, определяет домен, запросы на который будет обрабатывать данный виртуальный хост. Второй, ServerAlias, определяет дополнительные имена вашего сайта, которые будут обрабатываться точно также как основной домен. Это полезно, например, для сопоставления вашего основного и www.***
домена.
ServerName example.com ServerAlias www.example.com
Последняя вещь, которую нам нужно изменить в базовом конфигурационном файле, это параметр DocumentRoot
, определяющий расположение директории, из которой будет грузиться наш сайт. Вы уже создали нужные директории в первом шаге нашего руководства, так что запишем нужный адрес в файл:
DocumentRoot /var/www/example.com/public_html
После проведенных манипуляций наш файл должен выглядеть примерно так:
<VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Сохраним и закроем его.
Скопируем первый Виртуальный Хост и настроим его для обработки второго домена
Теперь, когда первый конфигурационный файл готов, мы можем скопировать его и настроить под второй домен.
sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf
Откроем новый файл с привилегиями root:
sudo nano /etc/apache2/sites-available/test.com.conf
Теперь мы должны изменить все параметры, настроив их под второй домен. Должно получится что-то вроде этого:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Когда закончите, сохраните и закройте файл.
Шаг пятый – активация виртуальных хостов
Теперь, когда мы создали конфигурационные файлы хостов, необходимо их активировать. Apache располагает несколькими инструментами, которые позволяют проводить операции по активации и деактивации хостов.
Используйте инструмент a2ensite
для активации ваших хостов. Пример использования:
sudo a2ensite example.com.conf sudo a2ensite test.com.conf
После выполнения данных команд, необходимо отключить стандартный хост:
sudo a2dissite 000-default.conf
Чтобы изменения вступили в силу, необходимо перезапустить Apache:
sudo systemctl restart apache2
Для перезапуска вы также можете использовать другую команду:
sudo service apache2 restart
Эта команда также сработает, но вы можете не получить результат если попробуете использовать её в других дистрибутивах, в отличии от systemctl
.
Шаг шестой – настройка файла hosts (не обязательно)
Если вы настроили ваши виртуальные хосты для реально существующих доменов и настроили DNS так, чтобы запросы на домены перенаправлялись на ваш сервер, то все хорошо. Если же у вас еще нет доменов или же вы по какой-то причине пока что не хотите прицеплять их к вашему серверу, вы можете использовать файл hosts
вашего локального компьютера, чтобы имитировать переход через нужный домен для проверки работы virtual host
.
При выполнении описанных ниже действий запросы на определенные домены с вашего локального компьютера будут перехватываться и принудительно перенаправляться на ip-адрес вашего VPS, в обход DNS-серверов. При этом данные перенаправления будут обрабатываться исключительно для вашего локального компьютера, что очень удобно для тестирования различных систем на этапе создания сайтов, в том числе для тестирования virtual host
.
Убедитесь что вы настраиваете локальный компьютер, а не VPS. У вас должны быть права администратора или вы должны знать пароль от учетной записи администратора для внесения изменений в файл hosts
. Если вы используете операционную систему семейства Linux или Mac, выполните следующую команду:
sudo nano /etc/hosts
Если вы используете операционную систему Windows, вы найдете файл hosts по адресу:
C:\Windows\System32\drivers\etc\hosts
В системе Windows данный файл скрыт и является системным, возможно вам придется включить отображение скрытых и системных файлов в настройках папок.
Вы должны добавить в файл домены, которые использовали в данном руководстве и публичный ip-адрес вашего VPS. Для доменов, которые использовал я, при условии что ip-адрес моего VPS 111.111.111.111
записи, которые необходимо добавить, будут выглядеть так:
127.0.0.1 localhost
111.111.111.111 example.com
111.111.111.111 test.com
Сохраните и закройте файл. Теперь все запросы на домены example.com
и test.com
будут автоматически перенаправляться на наш VPS 111.111.111.111
и обрабатываться виртуальными хостами так, как если бы мы использовали реальные домены.
Шаг седьмой – проверка работоспособности
Теперь все настроено и вы можете проверить работу Virtual hosts
, введя в адресую строку вашего браузера examle.com
. Если всё хорошо, вы увидите следующую страницу:
Аналогично, при запросе к домену test.com
вы увидите соответствующую страницу:
Если обе страницы открываются нормально, можно считать что на вашем сервере настроены и исправно работают два виртуальных хоста. Если вы вносили изменения в файл hosts
, можете удалить их чтобы не засорять системные настройки ненужной информацией.
Заключение
Если вы внимательно выполнили все пункты данного руководства, то ваш сервер успешно настроен на работу двух виртуальных хостов. Вы можете продолжить и, повторив все пункты, добавить столько доменов, сколько считаете необходимым. Можете не стесняться, Apache не имеет программных ограничений на количество virtual hosts
, количество доменов и сайтов, которые может обрабатывать сервер, ограничено лишь техническими возможностями железа, на котором установлен Apache.
Перевод статьи Digitalocean community. Автор оригинальной статьи Brennen Bearnes.
Понравилось? Сохрани к себе
Настройка VDS на Ubuntu 14.04. Часть 6. Установка и настройка APACHE – База знаний Timeweb Community
Мы продолжаем рассказывать о пошаговой настройке VDS с операционной системой Ubuntu 14.04.
Предыдущая статья нашего цикла была посвящена веб-серверу Nginx, а сегодня мы поговорим об Apache.
Наряду с Nginx, Apache является одним из самых распространенных веб-серверов в мире и демонстрирует свою надежность уже не один десяток лет. Впрочем, подробнее о нем мы уже рассказывали в одной из предыдущих статей.
Для начинающих администраторов Apache может стать даже более подходящим выбором, чем его альтернативы — являясь гибким и мощным инструментом, Apache при этом достаточно прост в настройке и использовании.
Установка Apache
Для того, чтобы установить веб-сервер Apache, мы будем использовать менеджер пакетов Ubuntu apt:
$ sudo apt-get update $ sudo apt-get install apache2
После завершения установки введите в адресной строке браузера IP-адрес Вашего сервера. Если установка прошла успешно, Вы увидите стандартное приветственное окно Apache:
На этом же этапе можно установить дополнительные необходимые модули.
Например, если Вам в дальнейшем потребуются инструменты для анализа работы сервера, рекомендуем установить модуль utils — он содержит полезные утилиты для тестирования и администрирования сервера.
$ sudo apt-get install apache2-utils
Если Вам будет необходимо разделять права между пользователями, рекомендуем также установить модуль mpm-itk. При этом нужно будет настроить дополнительные параметры виртуальных хостов — информацию об этом Вы можете найти в открытых источниках сети.
В рамках данной инструкции мы не будем касаться установки и настройки данного модуля.
Для работы сервера с различными языками программирования (а также для расширения функционала сервера) можно установить библиотеки.
Если Ваш сайт использует PHP, необходимая библиотека устанавливается следующим образом:
$ sudo apt-get install libapache2-mod-php5
При использовании python полезно расширение libapache2-mod-wsgi;
при использовании Rails and Rack — libapache2-mod-passenger.
Установка происходит аналогичным образом — просто замените наименование библиотеки в команде.
Теперь перейдем к непосредственной настройке Apache.
Настройка виртуальных хостов
Важной особенностью Apache является возможность создания виртуальных хостов, настраиваемых независимо друг от друга, что позволяет размещать на VDS-сервере сразу несколько сайтов. За конфигурацию каждого сайта будет отвечать конкретный виртуальный хост.
Даже если на начальном этапе Вы планируете размещать только один сайт на сервере, мы рекомендуем в любом случае использовать виртуальные хосты. Это обеспечит Вам удобство администрирования и обслуживания Вашего проекта, а в дальнейшем и легкость расширения при необходимости.
По умолчанию Apache содержит стандартный файл конфигурации 000-default.conf, который хранится в директории /etc/apache2/sites-available.
Файлы наших виртуальных хостов будут храниться здесь же, и мы сформируем их на основе 000-default.conf.
Однако сначала мы отключим стандартный файл конфигурации командой:
$ sudo a2dissite 000-default
Теперь скопируем его содержимое в файл, который будет содержать настройки Вашего сайта.
В наших примерах в качестве имени сайта мы будем использовать site1, Вам необходимо заменить это значение на имя Вашего сайта.
Вы можете давать конфигурационным файлам любые названия, но мы рекомендуем обозначать их так, чтобы в дальнейшем Вы легко могли определить, к какому сайту относится конкретный файл.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site1.conf
Далее нам нужно отредактировать конфигурационный файл. Откроем его командой:
$ sudo nano /etc/apache2/sites-available/site1.conf
Приведем содержимое файла к следующему виду:
<VirtualHost *:80> ServerName site1.com DocumentRoot /var/www/site1/public_html <Directory /var/www/site1/public_html> AllowOverride All Require all granted </Directory> ErrorLog /var/www/site1/error.log CustomLog /var/www/site1/access.log combined </VirtualHost>
Поясним приведенные выше параметры.
Блок <VirtualHost> включает в себя набор директив, задающих настройки для конкретного виртуального хоста.
Имя этого хоста Вы указали в параметре ServerName — полное доменное имя Вашего сайта.
Далее следует директива DocumentRoot — она задает путь до директории, в которой хранятся файлы сайта site1 (все необходимые директории мы создадим позже).
Следующий параметр — блок <Directory>. Он задает настройки, которые будут применены для конкретной папки.
В данном случае:
- AllowOverride All — разрешение допускать настройки, заданные в .htaccess;
- Require all granted — доступ к каталогу разрешен всем.
В параметре ErrorLog мы указали расположение файла с логами ошибок.
В CustomLog — расположение файла с логами доступа.
Этого набора директив достаточно для функционирования виртуального хоста, хотя список не является исчерпывающим. Дополнительно могут указываться, например, ServerAdmin (e-mail администратора сервера), ServerAlias (альтернативное имя сайта), AssignUserID (пользователь; настройка этого параметра необходима при использовании mpm-itk) и др. Со списком всех возможных директив и их описанием можно ознакомиться на сайте Apache (информация на английском языке).
После указания всех необходимых параметров закройте файл, сохранив изменения.
Далее мы создадим все необходимые папки, которые мы прописали в конфигурационном файле, и установим права на них:
$ sudo mkdir /var/www/site1/ $ sudo chown www-data:www-data /var/www/site1/ $ sudo mkdir /var/www/site1/public_html $ sudo chown www-data:www-data /var/www/site1/public_html
На этом этапе настройка виртуального хоста завершена, но желательно, конечно, проверить корректность его работы.
Для этого рекомендуем Вам создать index-файл в директории public_html:
$ nano /var/www/site1/public_html/index.html
Внесите в него любой самый простой html-код для проверки и сохраните документ.
Например:
<html> <head> <title>Удалось!</title> </head> <body> <h2>Виртуальный хост работает!</h2> </body> </html>
Далее включите сайт следующей командой:
И выполните перезагрузку Apache:
$ sudo service apache2 restart
Теперь необходимо ввести в браузере адрес сайта, виртуальный хост для которого Вы настраивали. Если все работает, как нужно, на экране будет отражено содержимое созданного Вами индексного файла.
Надеемся, все получилось 🙂
Модули Apache
Apache имеет множество разнообразных модулей, с помощью которых можно расширять его функциональность.
Список доступных модулей можно просмотреть в директории /etc/apache2/mods-available
Список уже включенных модулей — в директории /etc/apache2/mods-enabled
Перейти в директорию можно командой cd, например:
$ cd /etc/apache2/mods-enabled
Чтобы просмотреть содержимое текущего каталога, наберите:
$ ls
Для включения и выключения нужных Вам модулей используйте команды a2enmod и a2dismod.
Например, Вы можете включить CGI-скрипты следующей командой:
С информацией о каждом модуле можно ознакомиться на сайте Apache.
Команды для управления сервером Apache
Для запуска веб-сервера используйте команду:
$ sudo service apache2 start
Для перезагрузки:
$ sudo service apache2 restart
Если Вам требуется сделать «мягкую» перезагрузку, то есть перезапуск без завершения всех процессов, вводите:
$ sudo service apache2 reload
Для остановки веб-сервера существует следующая команда:
$ sudo service apache2 stop
Мы надеемся, что информация в этой статье оказалась для Вас полезной и помогла справиться с установкой и настройкой веб-сервера Apache.
Если у Вас возникли вопросы, спрашивайте в комментариях, мы будем рады Вам помочь.
Как настроить virtual hosts в Apache на Ubuntu 16.04
Веб сервер Apache наиболее популярный веб сервер для размещения сайтов в интернете. Хорошо, когда на одном сервере или VPS всего один сайт, а когда их несколько? Для этого нужно настроить virtual hosts Apache.
Настройка virtual hosts Apache наиболее востребована в случае если вы решили перейти с shared-hosting на свой, например VPS.
Виртуальные хосты (virtual hosts) позволяют администратору использовать один сервер для размещения нескольких сайтов (в рамках одного интерфейса или IP-адреса). Каждый домен, настроенный таким образом, будет направлять посетителя на соответствующий сайт. Количество виртуальных хостов на одном сервере ограничивается исключительно ресурсами этого сервера.
Данное руководство поможет настроить виртуальные хосты (virtual hosts Apache) на VPS с Ubuntu 16.04, что позволит размещать любое количество своих сайтов.
Условия
В данном примере будем настраивать virtual hosts для двух вымышленных доменов test.com и virtual.com (Не забудьте поменять их на свои домены).
Шаг № 1 Установка веб сервера Apache
Для установки выполним следующие команды:
sudo apt update sudo apt install apache2
sudo apt update sudo apt install apache2 |
Шаг № 2 Настройка директорий для виртульнных хостов (virtual hosts)
По умолчанию веб сервере apache настроен на просмотр основной директории для размещения сайтов /var/www В ней будем создавать новые директории для наших сайтов
sudo mkdir -p /var/www/test.com/html sudo mkdir -p /var/www/virtual.com/html
sudo mkdir -p /var/www/test.com/html sudo mkdir -p /var/www/virtual.com/html |
Контент сайтов будем размещать в папку /html
Настроим права доступа для всех папок и подпапок в директории /var/www командой:
sudo chmod -R 755 /var/www
sudo chmod -R 755 /var/www |
Структура для будущих сайтов test.com и virtual.com — готовы.
Шаг № 3 Создаем тестовую страницу для каждого из сайтов (virtual hosts)
Для каждого из сайтов создадим простую страниц вида index.html
Выполним следующую команду:
sudo nano /var/www/test.com/html/index.html
sudo nano /var/www/test.com/html/index.html |
В созданный файл добавим следующий текст:
<!DOCTYPE html> <html lang=»ru-RU»> <head> <meta http-equiv=»content-type» content=»text/html; charset=UTF-8″> <title>test.com</title> </head> <body> <h2>Домен: test.com</h2> <h2>Виртуальный хост для сайта test.com — настроен</h2> </body> </html>
<!DOCTYPE html> <html lang=»ru-RU»> <head> <meta http-equiv=»content-type» content=»text/html; charset=UTF-8″> <title>test.com</title> </head> <body> <h2>Домен: test.com</h2> <h2>Виртуальный хост для сайта test.com — настроен</h2> </body> </html> |
Сохраняем файл и выходим.
Создаем такой же файл для сайт virtual.com
sudo nano /var/www/virtual.com/html/index.html
sudo nano /var/www/virtual.com/html/index.html |
И добавляем такой же текст. Меня только название домена
<!DOCTYPE html> <html lang=»ru-RU»> <head> <meta http-equiv=»content-type» content=»text/html; charset=UTF-8″> <title>virtual.com</title> </head> <body> <h2>Домен: virtual.com</h2> <h2>Виртуальный хост для сайта test.com — настроен</h2> </body> </html>
<!DOCTYPE html> <html lang=»ru-RU»> <head> <meta http-equiv=»content-type» content=»text/html; charset=UTF-8″> <title>virtual.com</title> </head> <body> <h2>Домен: virtual.com</h2> <h2>Виртуальный хост для сайта test.com — настроен</h2> </body> </html> |
Шаг № 4 Создаем virtual hosts файлов
Virtual hosts Apache файл содержит все настройки для каждого из сайтов.
В Apache есть файл по умолчания для virtual hosts он называется 000-default.conf
Возьмем его за основу для настройки наших сайтов. По умолчанию каждый файл для virtual hosts должен заканчиваться на .conf
Создание директив для сайта test.com
Копируем файл по умолчанию и редактируем его для сайт test.com
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf |
Открываем новый файл для редактирования
sudo nano /etc/apache2/sites-available/test.com.conf
sudo nano /etc/apache2/sites-available/test.com.conf |
Пример файла виртуального хоста с убранными комментариями для удобства восприятия
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Первым делом меняем директиву ServerAdmin, указав в нем электронный адрес администратора этого сайта, например:
ServerAdmin [email protected]
ServerAdmin [email protected] |
После этого добавим две директивы. Первая будет называться ServerName, где мы указываем реальный домен своего сайта и вторую ServerAlias, где так же указываем свой домен но добавляем в начале www, в итоге они буду выглядеть:
ServerName test.com ServerAlias www.test.com
ServerName test.com ServerAlias www.test.com |
Теперь настроим путь к нашему новому виртуальному хосту (virtual hosts). Это путь где будет размещен наш новый сайт
DocumentRoot /var/www/test.com/html
DocumentRoot /var/www/test.com/html |
В итоге файл настройки virtual hosts для для домена test.com будет выглядеть:
<VirtualHost *:80> ServerAdmin [email protected] ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
<VirtualHost *:80> ServerAdmin [email protected] ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Сохраняем и закрываем файл. (В редакторе nano это комбинация клавиш ctrl + x)
Создание директив для сайта virtual.com
Копируем настройки уже готового сайта test.com
sudo cp /etc/apache2/sites-available/test.com.conf /etc/apache2/sites-available/virtual.com.conf
sudo cp /etc/apache2/sites-available/test.com.conf /etc/apache2/sites-available/virtual.com.conf |
Открываем файл virtual.com.conf
sudo nano /etc/apache2/sites-available/virtual.com.conf
sudo nano /etc/apache2/sites-available/virtual.com.conf |
И приводим его к виду:
<VirtualHost *:80> ServerAdmin [email protected] ServerName virtual.com ServerAlias www.virtual.com DocumentRoot /var/www/virtual.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
<VirtualHost *:80> ServerAdmin [email protected] ServerName virtual.com ServerAlias www.virtual.com DocumentRoot /var/www/virtual.com/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Сохраняем и закрываем файл.
Шаг № 5 Активируем virtual hosts наших сайтов
Для активации воспользуемся утилитой Apache a2ensite
sudo a2ensite test.com.conf sudo a2ensite virtual.com.conf
sudo a2ensite test.com.conf sudo a2ensite virtual.com.conf |
Отключаем стандартный файл конфигурации
sudo a2dissite 000-default.conf
sudo a2dissite 000-default.conf |
Когда мы закончили, для применения изменений перезапустим веб сервер Apache
sudo service apache2 restart
sudo service apache2 restart |
Шаг № 6 Настройка файлов host (опционально)
Данный шаг, нужен если вы экспериментируете с настройками apache на своем компьютере, на котором веб сервер Apache развернут например в VirtualBox. Если вы настраиваете виртуальные хосты на своем VPS сервере, данный шаг можно пропустить.
Если на рабочем компьютере установлен Mac или Linux (например на моем рабочем компьютере установлена Ubuntu 16.04), то для работы с виртуальными хостами вносим изменения в файл /etc/hosts
Если у тестового сервера ip адрес 192.168.0.110 то на основном компьютере, на котором установлен VirtualBox настройки файла /etc/hosts будут выглядеть следующим образом
127.0.0.1 localhost 127.0.1.1 desktop 192.168.0.110 test.com 192.168.0.110 virtual.com
127.0.0.1 localhost 127.0.1.1 desktop 192.168.0.110 test.com 192.168.0.110 virtual.com |
Шаг № 7 Проверяем результат
Если вы работаете с VPS не забудьте в панели управления доменов, добавить A-запись для каждого из доменов с ip адресом VPS сервера.
Вводим в браузере:
Если все сделано правильно, увидим результат:
Вывод
Поздравляю! Мы настроили virtual hosts на веб сервере Apache в Ubuntu 16.04 server. Теперь можно размещать любое количество веб сайтов, но с учетом допустимых ресурсов сервера.
Удачи !
Виртуальные хосты Apache2 в Ubuntu 16.04 и Ubuntu 14.04
Во время разработки, одним хостом не обойдешься. На одном можно разрабатывать, на другом тестировать, а на третьем еще один проект.
Плюс ко всему, в Apache2 по умолчанию файлы сайта хранятся в /var/www, у меня же они будут находиться в моей домашней папке, /home/goodigy/sites.
Apache2 может определять хосты по ip-адресам, по доменным именам и по портам.
Мы будем использовать второй вариант, то есть определение хостов по доменным именам.
В Apache2, установленном в Ubuntu 16.04 и Ubuntu 14.04, для этого уже почти все готово.
В папке /etc/apache2/sites-available будут храниться все конфигурационные файлы виртуального хоста.
Затем мы его просто будем включать и выключать по надобности.
Один файл там уже есть, на основе его мы и сделаем свой.
Скопируем под именем example (наш хост будет называться example, и в браузере станет доступен по ссылке http://example)
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.conf
В предыдущих версиях apache2 (до версии 2.4), не использовались расширения файлов .conf. В новых версиях (с версии 2.4) это приведет к ошибке.
Теперь надо отредактировать, вновь созданный, файл
sudo nano /etc/apache2/sites-available/example.conf
Файл приводим к следующему виду:
<VirtualHost *:80>
ServerName example
DocumentRoot /home/goodigy/sites/example
<Directory /home/goodigy/sites/example>
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /home/goodigy/sites/example/error.log
CustomLog /home/goodigy/sites/example/access.log combined
</VirtualHost>
Разъяснение настроек:
- ServerName example — указание доменного имени по которому будет определяться хост.
- DocumentRoot /home/goodigy/sites/example — привязывает папку к хосту.
- <Directory /home/goodigy/sites/example>
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory> — это настройки папки, - Options Indexes FollowSymlinks — если нет индексного файла (index.html, index.php), показывать список файлов, удобно на локальном сервере.
- AllowOverride All — разрешает переопределять настройки в .htaccess.
- Require all granted — доступ разрешен всем.
- ErrorLog — указывает расположение файла с логом ошибок, я их храню в папке с сайтом.
- CustomLog — указывает расположение файла с логом доступа, я их храню в папке с сайтом.
Сохраняем.
Создаем папки, указанные в конфигурационном файле
mkdir /home/goodigy/sites
mkdir /home/goodigy/sites/example
Включаем сайт
sudo a2ensite example.conf
И отключаем тот, который по умолчанию
sudo a2dissite 000-default.conf
Перезапускаем Apache2
sudo service apache2 restart
Далее, нам нужно добавить доменное имя в файл /etc/hosts. Открываем его на редактирование
sudo nano /etc/hosts
Выглядит он, примерно, так
127.0.0.1 localhost
127.0.1.1 googidy-comp
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Туда надо добавить указание на наш домен example
127.0.0.1 localhost
127.0.1.1 igy-nout
127.0.0.1 example
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Сохраняем.
Все, теперь по адресу http://example доступен наш новый хост. В браузере должна отобразиться папка с файлами, так как там отсутствует индексный файл.
Далее, Шпаргалка по путям к конфигурационным файлам LAMP.
В этом руководстве мы расскажем, как настроить виртуальный хост apache или vhost в ubuntu.
Использование виртуального хоста позволяет администратору использовать один сервер для размещения нескольких доменов или сайтов с одного интерфейса или IP-адреса с помощью соответствующего механизма.
В принципе, вы можете использовать один IP-адрес для сервера нескольких доменных имен.
Метод виртуального хоста широко используется в провайдере виртуального хостинга.
Предпосылки
Прежде чем вы начнете с этим руководством, вы должны, по крайней мере, иметь базовые знания о linux, знать базовую команду оболочки для Linux, учетную запись пользователя root или не-root с привилегиями sudo, установленными на вашем сервере.
Также у вас был установлен apache.
Вы должны указать свое доменное имя на IP-адрес вашего сервера.
Для примера в этом руководстве мы создадим виртуальный хост со следующими настройками:
Domain name : test1.example.com Document root : /var/www/example.com/
Шаг 1 — Создайте структуру каталогов
Корень документа — это каталог верхнего уровня, на который смотрит Apache, чтобы найти контент для обслуживания.
Обычно используют имя public_html, чтобы его было легко распознать.
Например, для наших сайтов мы собираемся сделать наши каталоги такими:
$ sudo mkdir -p /var/www/test1.example.com/public_html
Шаг 2 — Создать пример страницы для виртуального хоста
Мы создадим простой HTML-файл и поместим в виртуальный хост.
$ nano /var/www/test1.example.com/public_html/index.html
В этом файле создайте простой HTML-документ с указанием сайта, к которому он подключен. Мой файл выглядит так:
<html> <head> <title>Welcome to test1.example.com!</title> </head> <body> <h2>Success! The test1.example.com virtual host is working!</h2> </body> </html>
Шаг 3 — Создайте новые файлы конфигурации виртуального хоста
Apache поставляется с файлом виртуального хоста по умолчанию с именем 000-default.conf, который используется по умолчанию или для захвата неопределенного виртуального хоста.
Мы будем использовать в качестве шаблонов для создания нашего виртуального хоста.
Как перечислить все виртуальные хосты на веб-сервере Apache
Создайте наш файл конфигурации виртуального хоста на основе файла 000-default.conf, используя следующую команду:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test1.example.com.conf
Откройте новый файл конфигурации виртуального хоста, используя nano
$ sudo nano /etc/apache2/sites-available/test1.example.com.conf
Отредактируйте этот файл так:
<VirtualHost *:80> ServerAdmin [email protected] ServerName test1.example.com ServerAlias test1.example.com DocumentRoot /var/www/test1.example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Примечание: вы можете использовать ServerAlias для создания виртуального хоста с другим именем, но с тем же корнем документа, например, www.example.com и example.com. Конфигурация будет такой
ServerName example.com ServerAlias www.example.com
Шаг 4 — Включите новую конфигурацию виртуального хоста для Apache
Теперь, когда мы создали наши файлы виртуального хоста, мы должны включить их.
Apache включает в себя некоторые инструменты, которые позволяют нам сделать это.
Мы используем a2ensite для включения конфигурации
$ sudo a2ensite test1.example.com.conf
Вам нужно перезапустить Apache, чтобы изменения вступили в силу:
Please follow and like us:
Настройка Apache2 на Ubuntu, VirtualHosts, ServerName
Ну вот и дошла пора более серьезно заняться настройкой своего Apache сервера на рабочей машине.
Так как на моем компе установлена Ubuntu Linux, а установка приложений с помощью менеджера пакетов Synaptic — сплошное удовольствие, то получилось так, что я установил с его помощью Apache и мне хватало его дефолтных установок. Но захотелось мне навести красоту, разместить несколько веб-сайтов и иметь к ним доступ по разным доменным именам.
Итак, имеем задачу:
Настроить несколько веб-сайтов, на локальном сервере Apache2, установленного на рабочей машине с Ubuntu Linux, и чтобы доступ к ним был по адресам, например таким:
- 1й сайт — www.test1.my и test1.my
- 2й сайт — www.test2.my и test2.my
и так далее, в том же духе.
При попытке привести все к красоте, возникло несколько интересных ошибок, которые, надеюсь нелишне описать.
Итак, первое, в Ubuntu состав директории /etc/apache2 немного отличается от привычных директорий настройки Apache в Unix-подобных системах.
conf.d/ sites-available/ sites-enabled/ mods-available/ mods-enabled/ apache2.conf envvars httpd.conf ports.conf
В Ubuntu основным файлом настройки Apache2 является не httpd.conf, а apache2.conf, но тут он играет роль системного файла, в котором собраны основные и самые важные настройки сервера.
А вот файл httpd.conf — пустой и предназначен для добавления дополнительных настроек, он включен в основной файл настройки apache2.conf
В файле envvars описаны переменные среды, необходимые для функционирования Apache-сервера.
В ports.conf вынесены настройки портов на которые можно будет подключиться к серверу или конкретному сайту на нем.
В папке conf.d находятся дополнительные конфигурационные файлы.
Для описания всех доступных сайтов используется папка sites-available в которой расположены файлы с описанием виртуальных хостов — VirtualHosts, опубликованные же сайты находятся в папке sites-enabled в виде ссылок на файлы доступных сайтов из папки sites-available.
Таким же образом в папках mods-available и mods-enabled настраивается доступность модулей используемых сервером.
Разобравшись со структурой файлов и папок, уже можно приступать к настройке. Первым делом создаем новый файл в папке sites-available, с именем хоста, так будет понятнее при просмотре директории.
#sudo touch test1.my
после этого с помощью любого доступного текстового редактора добавляем в этот файл следующие строки
<VirtualHost *:80> ServerName test1 ServerAlias test1.my www.test1.my DocumentRoot /var/www/test1.my/www </VirtualHost>
таким образом можно создать необходимое колличество виртуальных хостов и направить их в нужные директории на винчестере.
Теперь необходимо как-то научить нашу операционную систему распознавать домен .my. Для этого достаточно прописать необходимые строки в файле /etc/hosts, например так:
127.0.0.1 test1.my www.test1.my
Так, теперь мы имеем настройку сайта как виртуального хоста (VirtualHost), имеем настроенный доменный адрес, но сайт еще не доступен для просмотра в браузере. А почему? А потому, что для начала необходимо разместить ссылку на VirtualHost в папку sites-enabled, и перечитать конфигурацию сервера Apache. Для создания ссылки можно выполнить такую команду:
#sudo a2ensite /etc/apache2/sites-available/test1.my
и перечитаем параметры:
#sudo /etc/init.d/apache2 reload
приведеная команда, перечитает параметры настройки сервера без его перезагрузки.
И вот тут мы столкнемся со второй неприятностью, не критической, но неприятной. После перечитки параметров будет выведено информационное сообщение:
Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
Что-то некрасиво получается, зачем нам такое. Но, мы помним, что у нас есть файл httpd.conf в котором желательно прописывать дополнительные настройки. Итак, открываем этот файл в текстовом редакторе, не забываем, что это надо делать с правами суперпользователя, и прописываем туда такую строчку
ServerName имя_вашего_сервера
сохраняем, закрываем файл и перечитываем параметры настройки:
#sudo /etc/init.d/apache2 reload
Сообщение пропало и теперь мы имеем красиво настроенный веб-сервер Apache. Сейчас для добавления новых сайтов достаточно создать файл виртуального хоста, вписать в него параметры настройки для хоста, добавить его в видимые хосты и перечитать параметры. Вот так вот, оказывается, все просто делается в нелегком админском деле.
У Вас есть товары, которые подлежат сертификации пожарной безопасности? Тогда вам просто необходим пожарный сертификат.
Как разместить нескольких сайтов на одном сервере под Ubuntu 18.04
Достоинством использования Ubuntu 18.04 и Apache является возможность размещения нескольких сайтов на одном сервере. Это очень выгодно, потому что можно использовать один сервер для всех своих доменов.
Эта особенность называется виртуальным хостингом. Например, она нужна для того, чтобы разместить домены example.com и test.com на одном публичном IP-адресе.
Виртуальный узел Apache направляет пользователей в разные папки, где хранятся файлы каждого домена. При открытии сайта пользователь не видит, что на этом сервере размещены другие виртуальные узлы.
Количество сайтов, которые можно разместить на сервере под Ubuntu 18.04, ограничивается лишь местом на диске и пропускной способностью канала.
В этом руководстве мы опишем процесс настройки для размещения 2-х различных сайтов на одном сервере под Ubuntu 18.04 VPS.
Что потребуется:
- Ubuntu 18.04 VPS
- Стандартный пользователь с возможностью выполнения sudo-команд
- Веб-сервер Apache
Установка Apache2
Для установки Apache необходимо выполнить следующую команду:
$ sudo apt-get install apache2
Для примера будем использовать вымышленные доменные имена example.com и test.com. Также в руководстве опишем, как изменить файл hosts на компьютере, чтобы проверить виртуальные хосты.
Создание структуры каталогов
Для начала необходимо создать структуру каталогов для новых сайтов. Apache имеет свой корневой каталог /var/www, в котором размещаются все сайты. Создадим две папки для двух новых доменов.
Для этого выполним команды в терминальном окне:
$ sudo mkdir -p /var/www/test.com/public_html
$ sudo mkdir -p /var/www/example.com/public_html
Изменение владельца каталогов
Права на редактирование содержимого в каталогах принадлежат системному пользователю root. Для разрешения доступа в каталог текущего пользователя необходимо воспользоваться командой chown:
$ sudo chown -R $USER:$USER /var/www/example.com/public_html
$ sudo chown -R $USER:$USER /var/www/test.com/public_html
Изменение прав доступа к файлам
Для того чтобы сайты были доступны пользователям в браузере, необходимо дать права на чтение файлов в этих каталогах.
Для этого необходимо выполнить команду:
$ sudo chmod -R 755 /var/www
Создание контента для каждого виртуального узла
Теперь структура каталогов и доступ к файлам настроены. Создадим index.html для каждого веб-сайта, используя nano редактор:
Для домена test.com:
$ sudo nano /var/www/test.com/public_html/index.html
Скопируйте текст в редактор
<html>
<body>
This is our test.com website
</body>
</html>
Для домена example.com:
$ sudo nano /var/www/example.com/public_html/index.html
Скопируйте в редактор в текст
<html>
<body>
This is our example.com website
</body>
</html>
Не забывайте закрывать и сохранять каждый файл, нажимая CTR+X и Y.
Создание файлов конфигурации для новых сайтов
При установке Apache на Ubuntu 18.04 по умолчанию создается файл конфигурации. Найти его можно здесь:
/etc/apache2/sites-available/000-default.conf
Для создания нового файла конфигурации можно использовать уже имеющийся. Чтобы сделать его копию, выполните команду ниже:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Файлы конфигурации Apache должны иметь расширение «.config».
После этого откроем в редакторе наши файлы. Для этого будем использовать команду:
$ sudo nano /etc/apache2/sites-available/test.com.conf
Отредактируем файл следующим образом:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Выше мы указали каталог /var/www/test.com/public_html, потому что все файлы сайта test.com будут размещены в нем.
Повторим операцию для второго сайта example.com
$ sudo nano /etc/apache2/sites-available/example.com.conf
В конфигурационном файле укажем следующее:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Добавление виртуальных хостов
Мы создали конфигурационные файлы для виртуальных хостов. Теперь их нужно включить:
$ sudo a2ensite test.com.conf
$ sudo a2ensite example.com.conf
Перезапуск Apache
После добавления виртуального сервера на Ubuntu 18.04 необходимо перезапустить Apache:
$ sudo service apache2 restart
Изменение локального файла hosts
Наши виртуальные хосты настроены. Для проверки вымышленных адресов нам необходимо отредактировать файл hosts на локальном компьютере (НЕ на сервере!).
Это позволит компьютеру обратиться к правильному публичному IP-адресу сервера. Предположим, что публичный IP-адрес сервера xxx.xxx.xxx.xxx, поэтому на нашем компьютере нужно будет отредактировать файл hosts следующим образом:
xxx.xxx.xxx.xxx example.com
xxx.xxx.xxx.xxx test.com
Если Вы используете ПК под Linux, необходимо отредактировать файл /etc/hosts с помощью команды:
$ sudo nano /etc/hosts
Внесите в него изменения и сохраните.
Если на компьютере установлена ОС Windows, отредактируйте файл c:\windows\system32\drivers\etc\hosts, используя текстовый редактор (блокнот).
Не забудьте заменить xxx.xxx.xxx.xxx на публичный IP-адрес Вашего сервера.
Проверка новых сайтов в браузере
Теперь нужно проверить сайты example.com и test.com в браузере. Если все выполнено по инструкции, то в браузере Вы должны увидеть следующее:
test.com
This is our test.com website
example.com
This is our example.com website
Заключение
Хостинг нескольких сайтов на одном сервере под Ubuntu 18.04 прост и удобен: можно не переплачивать за отдельные виртуальные сервера.