Как настроить поддомен apache

UNIXHOME

Все о Linux на русском языке

Моментальное создание поддоменов в Apache

Решил облегчить себе жизнь и настроить работу с хостами в моей любимой Ubuntu.
Задача: Создаём директорию new_site в /home/web/ и браузер успешно находит new_site.dk (dk — имя машины). Первой мыслью было написание скриптов, сканирующих /home/web/ и вносящих изменения в настройки apache и файл hosts. Мне этот вариант не понравился. Но решение есть!

Как это сделать я спросил ТУТ и умные люди подсказали, в какую сторону нужно копать:

  1. модуль Apache mod_vhost_alias для web сервера
  2. dnsmasq для обработки поддоменов

Поставил, проверил — всё работает!
Ну а теперь подробнее от начала до конца (рассмотрим настройку для Ubuntu):

1) Установка web сервера Apache с поддержкой PHP:

2) Установка СУБД MySQL (если требуется):

3) PHPmyAdmin для удобной работы с базами (если требуется):

4) Включение модуля Rewrite в Apache (если требуется):

5) Включение модуля vhost:

Пришло время всё это хозяйство настроить! Всего несколько шагов:
1) Для настройки vhost_alias достаточно в /etc/apache2/sites-enabled/000-default дописать:

Для редактирования этого файла потребуются права супер-пользователя. Вариант решения:

Нужно обрать внимание на то, что мы обрабатываем запросы вида *.dk
Если вы хотите настроить ваши виртуальные хосты как-то по другому, то рекомендую к прочтению: www.softtime.ru/info/apache.php?id_article=103
Поздравляю! Теперь, создав директорию /home/web/new_site/public и дописав в /etc/hosts new_site.dk 127.0.0.1 мы обратимся к этой новой директории как к отдельному хосту! Следует обратить внимание на то, что индивидуальные настройки хоста следует проводить файлом .htaccess
Если работает, то возвращаем hosts к исходному виду.

2) Вам, как и мне, совсем не интересно при добавлении нового хоста править /etc/hosts? Замечательно! Приступим к настройке dnsmasq:
Смысл в том, что мы хотим запросы вида *.dk адресовывать на адрес 127.0.0.1, т.е. на нашу локальную машину. Сделает это для нас маленький DNS сервер. Хочу сразу обратить ваше внимание, что dnsmasq обладает гораздо большими возможностями, чем мы сейчас будем использовать!
В конфигурационном файле /etc/dnsmasq.conf раскомментируем и отредактируем одну единственую строку:

Этой строкой мы сообщаем нашему dns серверу, что все запросы *.dk хотим перенаправлять на 127.0.0.1
Перезапускаем dnsmasq:

Возможно потребуется поправитьфайл /etc/resolv.conf, вписав первой строчкой

Если IP-адрес вам выдаёт DHCP, то настройки resolv.conf при следующей загрузке будут утеряны. Для исправления ситуации в файле /etc/dhcp3/dhclient.conf раскомментируем строку:

Эти танцы с бубном нужны для того, чтобы задать последовательность обращения к dns серверам — в первую очередь локальный (127.0.0.1).

Источник

Как создать поддомен на Apache-сервере

Проверим состояние HTTP-сервера Apache:
$ service apache2 status

Создадим папки для веб-сайтов:
$ sudo mkdir -p /var/www/example.com/public_html
$ sudo chown -R $USER:$USER /var/www/example.com/public_html

$ sudo mkdir -p /var/www/subdomain.example.com/public_html

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

$ sudo chown -R $USER:$USER /var/www/subdomain.example.com/public_html

Установим права drwxr-xr-x на папку /var/www:

$ sudo chmod -R 755 /var/www

Добавим файлов:
$ nano /var/www/example.com/public_html/index.html

$ nano /var/www/subdomain.example.com/public_html/index.html

Создадим виртуальные хосты:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

$ sudo nano /etc/apache2/sites-available/example.com.conf

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/subdomain.example.com.conf

$ sudo nano /etc/apache2/sites-available/subdomain.example.com.conf

$ sudo a2ensite example.com.conf
$ sudo a2ensite subdomain.example.com.conf

$ sudo service apache2 restart

И наконец отредактируем файл /etc/hosts:

$ sudo nano /etc/hosts

И самое главное, в настройках хостинга нужно прописать А-запись. Внутри настроек example.com создать А-запись для subdomain.example.com.

Обновление DNS происходит в течении 8-24 часов.

Источник

Мультидоменность в Apache без лишних хлопот на локальном хосте

Интернет пестрит руководствами по настройке виртуальных хостов в Apache. Но, в большинстве случаев, создание такого поддомена представляется хлопотным делом.
По «стандартной» инструкции предлагается сделать следующее:

  1. Создать папку для сайта
  2. Создать конфигурационный файл с именем будущего домена
  3. Включить сайт специальной опцией
  4. Перезагрузить Apache
  5. Прописать наш домен в файле hosts

Некоторые пытаются оптимизировать данный процесс различными скриптами, но проблемы это, по сути, не решает.
Итак, попробуем добиться, чтобы процесс создания поддомена сводился лишь к созданию папки для сайта. Возможно ли это? Проверим.
Как устанавливать LAMP я рассказывать не буду, так как вы, скорее всего, можете сделать это с закрытыми глазами (смайл). Перейдем к самому интересному.

Настройка vhost_alias

Включаем модуль vhost_alias. Он то и будет главным действующим лицом.

Включаем, если нужно, mod_rewrite.

Открываем файл httpd.conf и приступаем к непосредственной настройке.

%-2 означает, что по хост будет выбран по предпоследней части доменного имени. Другими словами, создав директорию /home/%username%/web/habrahabr, мы сможем обратиться к ней как habrahabr.ru (или habrahabr.com, или даже habrahabr.xxx).
Можно также задать свои параметры выбора имени хоста:

  • %0 Полное имя
  • %1 Первая часть имени
  • %2 Вторая часть имени
  • %3 Третья часть имени
  • %-1 Последняя часть
  • %-2 Предпоследняя часть
  • %2+ Вторая и все последующие части
  • %-2+ Предпоследняя и все последующие части

Рестартуем Apache.

Наш сервер уже работает. Убедиться в этом мы можем, создав папку с нужным именем, например test и поместив туда index.php с каким-нибудь содержимым, например » «.
Ах да, нужно ведь еще прописать наш домен в файлике /etc/hosts.

Все, теперь можно открывать в браузере страничку.
Стоп, мы так не договаривались! Создание сайта должно сводиться к созданию директории под него. Ну что ж, давайте сделаем…

Настройка DNS-сервера

Для этого мы будем использовать DNS-сервер bind9. Все домены с суффиксом *.loc будут смотреть на нашу локальную машину.
Устанавливаем DNS-сервер

Открываем конфигурационный файл named.conf.options и добавляем

Создаем файлы для доменной зоны.

Наконец, открываем файл named.conf.local и дописываем туда

Остальсь подключиться к нашему DNS-серверу. Либо через файл /etc/resolv.conf, дописав строчку

либо через стандартный менеджер сетевых соединений. В свойствах подключения, на вкладке «Параметры IPv4» дописать адрес 127.0.0.1 в поле «Серверы DNS».

Для удобства создадим локальный хост для phpmyadmin

Теперь он доступен по адресу phpmyadmin.loc.

Некоторые замечания

Есть пара замечаний по работе с vhost_alias.

  • Неправильные данные дает переменная $_SERVER[‘DOCUMENT_ROOT’], поэтому приходится использовать либо dirname(__FILE__), либо realpath(). Смотря что нужно.
  • Если перестал работать mod_rewrite, не паникуем. В файле .htaccess после строчки

Источник

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

Apache — это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?

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

Как работают виртуальные хосты Apache?

Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.

Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.ru. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.

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

Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:

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

Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:

$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf

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

адрес_хоста_для прослушивания : порт >
ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined

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

ServerName site1.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1.ru/
ErrorLog $/error.log
CustomLog $/access.log combined

Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:

sudo a2ensite site1.ru

Затем перезапустите Apache:

sudo systemctl restart apache2

И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:

sudo vi /etc/hosts

Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:

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

Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog $/error.log
CustomLog $/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

SSLOptions +StdEnvVars

Теперь о каждой новой строчке более подробно:

  • — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl. Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
  • SSLEngine — включает поддержку SSL;
  • SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
  • SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.

Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:

sudo a2enmod ssl
sudo a2ensite site1.ru-ssl
sudo systemctl restart apache2

Затем откройте https адрес в браузере:

Выводы

В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Оцените статью