Apache2 настройка virtualhost – Минимальный конфиг виртуального хоста Apache 2 для настройки работы домена в связке Apache + NGiNX

Содержание

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

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

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

Содержание статьи:

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

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

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

«Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

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

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

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

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив 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

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

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

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

<VirtualHost *:80>
ServerName site1.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1.ru/
ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Здесь мы используем звездочку вместо 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 site1.ru

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

site1.ru

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

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

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>
</IfModule>

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

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

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

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

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

https://site1.ru

 

Выводы

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

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

Загрузка…

losst.ru

Настройка virtualhost на apache2 « Все о WEB программировании

Ромчик

1

Создание virtualhost на apache2

Доброго времени суток дорогой читатель блога “WEB программирование от А до Я”. Сегодня мы немного отойдем от web программирования и поговорим об инструментах web разработчика. А точнее мы остановимся на virtualhost для apache2. Многие разработчики делают и поддерживают несколько проектов. Так, например, у меня есть проект на Joomla, другой проект на WordPress, а также есть несколько тестовых проектов на, которых я оттачиваю мастерство. И тут возникает вопрос: “А как на одной машине развернуть несколько хостов?” Дальше я постараюсь наиболее понятно ответить на данный вопрос.
Небольшое замечание на моей рабочей машине стоит операционная система Ubuntu, сервер apache2. Поэтому и настройки virtualhost я буду приводить для этой связки. Но разницы между конфигурацией virtualhost на ubuntu ни чем не будет отличаться от конфигурации virtualhost на Windows или какой либо другой операционной системы. Одно отличие это расположение конфигурационных файлов для virtualhost. А теперь давайте приступим…

Сразу хочу отметить, что apache2 у Вас уже установлен. В Ubuntu apache устанавливается из репозитория. Для Windows существуют пакеты Denver и XAMPP.
Теперь давайте разберемся с понятием virtualhost. Virtualhost — это размещение нескольких хостов на  одной машине.

Конфигурационные файлы apache2 в ubuntu находятся в /etc/apache2
Файл apache2.conf — это основной файл конфигурации.
А виртуальные хосты находятся в папке /etc/apache2/sites-available
Для каждого виртуального хоста в данной папке есть свой конфигурационный файл.
Но это актуально для ubuntu. Для других операционных систем настройки virtualhost содержаться в самом файле конфигурации apache2 apache2.conf в разделе <VirtualHost>.
Любое описание виртуального хоста начинается с <VirtualHost> и заканчивается </VirtualHost>.  Это обязательно!!!
Также virtualhost вы можете привязать к определенному ip-адресу и порту. Это делается следующим образом:



<VirtualHost <ip>:<port>>
настройка virtualhost
</VirtualHost>


или привязать один virtualhost к нескольким ip-адресам:


<VirtualHost <ip> <ip>:<port>>
настройка virtualhost
</VirtualHost>

Давайте приведем пример действующего virtualhost:


<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName kohana
    ServerAlias kohana
    DocumentRoot /var/www/kohana
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/kohana>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/www/kohana/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/www/kohana/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

И разберем каждую строчку:

  1. <VirtualHost *:80> — этот тег обозначает, что дальше будут следовать настройки виртуального хоста. Виртуальный хост будет срабатывать при обращении на любой адрес по порту 80.
  2. ServerAdmin — директива содержит e-mail адрес администратора данного хоста и будет показываться в сообщениях об ошибке. В нашем случае — это webmaster@localhost
  3. ServerName — эта директива определяет имя хоста и порт, по которому сервер идентифицирует себя. Это необходимо при создании URL. Так, например, у Вас есть хост first.example.com, а сервер имеет еще название www.example.com и Вы хотите, чтоб веб-сервер определял Ваш хост и по этому имени, тогда в этой директиве должны прописать ServerName www.example.com
  4. ServerAlias — данная директива устанавливает альтернативные имена хостов.
  5. DocumentRoot — директива устанавливает каталог, где находятся файлы для обработки apache2. Т.е. в данном каталоге хранятся Ваши файлы сайта.
  6. <Directory /> в данной директиве мы можем прописать различные правила для каталога. Данная директива обязательна должна закрываться тегом </Directory>. Так например, мы прописываем правила для каталога home:

<Directory /home/>
AllowOverride FileInfo
</Directory>

Также в пути к каталогу мы можем применять и регулярные выражения.
Теперь давайте рассмотрим какие правила мы можем прописать в данной директиве

  • AllowOverride данный параметр может содержать следующие значения: None — тогда файл .htaccess будет полностью игнорироваться, All — тогда в .htaccess допускаются все директории.
  • Options — устанавливает особенности сервера для данного каталога. Может принимать следующие значения: None — тогда ни одна из опций не допускается, All — допускаются все опции кроме MultiViews, ExecCGI — разрешает выполнение CGI скриптов, FollowSymLinks  -сервер будет следовать за символическими связями, Includes — разрешается Server-Site-Includes (SSI), IncludesNOEXEC — разрешается SSI, но запрещается комманды #exec и #include CGI скриптов, Indexes — если по ссылке в каталоге ничего не найдено, то сервер возвратит содержание каталога, MultiViews — разрешает MultiViews (действие MultiViews заключается в следующем пользователь в адресной строке набирает <каталог_1>/<каталог_2> и если вдруг <каталог_2> не существует, то сервер ищет в <каталог_1> файл <каталог_2>.*), SymLinksIfOwnerMatch — сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя что и связь.
  • Order — данной директивой мы устанавливаем порядок проверки, т.е. в начале проверяем на запрет и если все у нас проходит, то разрешаем
  • Deny — в данной директиве мы указываем доступ к серверу на основе хоста или ip-адреса. В данной директиве мы перечисляем запрещенные хосты
  • allow — в данной директиве мы указываем доступ к серверу, перечисляем разрешенные хосты.
  1. ErrorLog — в данной директиве мы указываем путь к файлу логов.
  2. LogLevel — в данной директиве мы указываем уровень сообщений, которые будут записываться в лог-файл. Существуют следующие уровни:
  • emerg — чрезвычайные ситуации — система непригодна для использования.
  • alert  — действий должны быть приняты немедленно.
  • crit — критическое условие.
  • error — возникновение ошибки.
  • warn — предупреждения.
  • notice — нормальное состояние.
  • info — информация.
  • debug — debug сообщения
  1. CustomLog — директива в которой указываем путь к файлу логов, где регистрируются запросы к серверу.

Фуф, с файлом конфигурации для virtualhost мы разобрались.
Теперь давайте создадим виртуальный хост. Для этого в Ubuntu в папке /etc/apache2/sites-available/ создаем файл с названием нашего хоста например test. И помещаем туда следующий код:


<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName test
    ServerAlias test
    DocumentRoot /var/www/test
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/test>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/www/test/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/www/test/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Теперь в папке /var/www/ создаем папку test (тут и будут находиться файлы нашего virtualhost)
Кофигурацию для нашего хоста мы создали. Осталось включить этот виртуальный хост. Для этого вводим команду:


sudo a2ensite test

Перезагрузить сам apache:


sudo /etc/init.d apache2 restart

И все наш virtualhost работает.
Давайте в файле /etc/hosts добавим строку 127.0.0.1    test
Теперь введя в браузере адрес test мы попадаем на virtualhost на нашем локальном сервере.
На этом настройка virtualhost на apache2 завершена. Если у Вас появились вопросы, то пишите в комментариях я обязательно на них отвечу.
И не забывайте следить за обновлениями на моем блоге, подписавшись на RSS-рассылку.

Понравилась статья? Поделись с друзьями.

web-programming.com.ua

apache2 настройка virtualhost

Для настройки виртуальных хостов на web сервере apache2 под ubuntu 7.10, 8.04, 8.10, 9.04, 9.10, Debian 5 необходимо в самое начало или конец (вне инструкций ) файла /etc/apache2/sites-available/default добавить директиву:


NameVirtualHost 192.168.0.1

Там необходимо указать IP адрес либо DNS имя компютера на котором размещён вебсервер, можно указать localhost или 127.0.0.1

Затем, учитывая организацию конфигов apache2 в Debian, необходимо создать файл виртуального хоста в директории: /etc/apache2/sites-available/
например ваш сайт называется supebreys.ru, значит логичнее создать чтото вроде /etc/apache2/sites-available/supebreys_ru.conf. В любом случае это название должно вам говорить для чего этот файл и будет лучше если вы будете придерживаться какого то одного правила создания таких файлов. Затем в этот файл добавляем такой текст:


<VirtualHost *:80>
        DocumentRoot "/home/httpd/breys.ru/www"
        ServerName    breys.xxx 
        <Directory />
                allow from all
                Options +Indexes
       </Directory>
        ScriptAlias /cgi-bin/ "/home/httpd/breys.ru/cgi-bin/"
        CustomLog  /home/httpd/breys.ru/access.log common
        ErrorLog /home/httpd/breys.ru/error.log
</VirtualHost>

Здесь мы создали виртуальный хост которых будет обрабатывать запросы на 80 порту с любого доступного адреса

Также тут указана корневая директория сайта, директория с cgi скриптами и пути к файлам журналов работы вебсервера

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

После создания этого файла веб сервер ещё не видит его. Если внимательно посмотреть на файлы в директориях /etc/apache2/sites-enabled/ и /etc/apache2/sites-available/ то должно стать ясно, то что в директории /etc/apache2/sites-available лежат файлы описывающие виртуальные хосты, а в папке/etc/apache2/sites-enabled/ лежат симлинки на файлы в sites-available.  Исходя из названий становится ясно, что:
sites-available — все доступные виртуальных хосты
sites-enabled — включаемые вебсервером
то есть, чтобы добавить виртульный хост в apache2, необходимо либо создать файл нового виртуального хоста в sites-available либо дописать(не желательно) его в уже имеющийся там файл, а чтобы включить виртуальный хост, необходимо чтобы директории sites-enabled была ссылка на файл описывающий виртуальных хост

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

Итак, включаем наш, только что созданный, новых виртуальный хост:


ln -s /etc/apache2/sites-available/breys_ru.conf /etc/apache2/sites-enabled/breys_ru.conf

Этой командой мы создаём симлинк(символическую ссылку на один файл в другой директории) на рабочий файл виртуального хоста, который будет обработан при следующем перезапуске вебсервера

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

Например, у меня имеются зеркала моих сайтов и я работаю с ними дома используя имена сайтов + моя домашняя зона .xxx, тоесть для сайта breys.ru у меня есть домашнее зеркало breys.xxx, но вполне вероятна ситуация когда нужно показать зеракло ещё кому то, тогда я могу использовать DNS зону зарегистрированную за мной на DYNDNS.COM, тоесть это зеркало имеет дополнительный адрес в виде:breys.ffsdmad.homelinux.org, ещё более частая ситуация когда нужно иметь имя www.breys.ru и соответственноwww.breys.ffsdmad.homelinux.org
Чтобы включить этого необходимо в файл виртального хоста, внутри инструкций .. добавить список необходимых алиасов:


<VirtualHost *:80>
 ....другие инструкции
  ServerName breys.xxx
  ....
  ServerAlias www.breys.xxx
  ServerAlias breys.ffsdmad.homelinux.org
  ServerAlias www.breys.ffsdmad.homelinux.org
  ....
</VirtualHost>

Вполне возможно придётся заниматься отладкой модуля mod_rewrite, для этого необходимо в файл виртуального хоста добавить строки:


<VirtualHost *:80>
 ....другие инструкции
 RewriteLog /home/httpd/breys.ru/rewrite.log
 RewriteLogLevel 9 
</VirtualHost>

Начните с небольшого примера и постепенно расширяйте возможности своего виртуального хостинга различными возможностями вебсервера apache2 (а их у него предостаточно) и постепенно вы поймёте насколько проста и логична такая структура в условиях такого сложного сервиса как вебхостинг

Также следует заметить, что если вы поставили на локальную машину сервер apache2 и виртуальные хосты прописаны в /etc/hosts (соответствия имени ip адресу), то начинаются тормоза при обращении к вебсерверу. Дело в том, что браузер сначала пытается распознать ip адрсе у dns сервера, который у вас прописан в /etc/resov.conf, а не проверять файл /etc/hosts. Это можно исправить заменив в файле /etc/host.conf последовательность перебора сервисов разрешения имён, но лучше всего настроить bind и забыть про тормоза и проблемы с обратным разрешением имени по IP

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

Эта заметка висит здесь уже второй год и на неё не прекращается поток запроса, а это наталкивает меня на мысль, что люди не могут разобраться с этой системой, а значит нужно объяснять ещё более доходчиво, в этоге эта заметка переписывалась уж три раза

Если у вас остались или возникли какие то вопросы или неясности, не стесьняйтесь, спрашивайте, система коментариев мгновенно оповещает меня через Jabber, таким образом я реагирую практически моментально

 

breys.ru

Настройка виртуальных хостов на Apache для начинающих / Sandbox / Habr

В прошлых статьях мы установили и настроили на локальном компьютере сервер Apache. В принципе, на этом можно было бы остановиться, так как сервер находится в рабочем состоянии и его можно спокойно использовать в работе. Но, по личному опыту, могу сказать, что использование только одного хоста localhost не очень удобно при разработке нескольких сайтов, так как для каждого сайта нужно будет создавать в каталоге localhost отдельный каталог и со временем в ней (папке localhost) будет очень трудно разобраться и что-то найти. Да и при тестировании разрабатываемого проекта гораздо удобнее набирать в браузере адрес вида test, чем localhost/test. Поэтому мы приступаем к настройке виртуальных хостов на локальном сервере.

Вообще, существует два способа конфигурирования виртуальных хостов: на основе имени и на основе IP-адреса. Но, так как мы настраиваем локальный сервер и у нас только один IP (кстати, для локалки он 127.0.0.1), то вариант с привязкой к IP нам не подходит и мы будем рассматривать вариант с привязкой к имени.

В прошлой статье я уже упоминал, что в файле конфигурации httpd.conf сервера есть строчка Include conf/extra/httpd-vhosts.conf. Мы ее уже раскомментировали, поэтому собственно и переходим к этому файлу. Найти его можно в папке Apache/conf/extra/.

Начнем рассматривать содержимое файла.
Первая директива – это NameVirtualHost *:80 привязывает виртуальные хосты, указываемы далее, к именам сайтов указанных в секциях <VirtualHost …>. Здесь вместо звездочки можно вписать IP 127.0.0.1, но тогда во всех секциях <VirtualHost> нужно будет указать то же самый IP. Принцип работы этой директивы заключается в том, что при обращении, допустим, к адресу localhost, сервер проверяет, соответствует ли входящий адрес и порт, описанным в секциях VirtualHost и имеется ли запись 127.0.0.1:80 в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. Таким образом, запрос 127.0.0.1:80 будет распределяться только между виртуальными хостами, в которых он указан.

Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.
<VirtualHost *:80>
DocumentRoot “D:/server/localhost/www”
ServerName localhost
ErrorLog “D:/server/logs/localhost.error.log”
CustomLog “D:/server/logs/localhost.access.log” common

Директива DocumentRoot в этой секции указывает на папку, к которой будет происходить обращение при вызове адреса localhost.
ServerName как раз содержит имя нашего виртуального хоста, то есть его адрес. Сюда можно вписывать как адреса вида localhost, test, site, так и адреса localhost.ru, test.com, www.site.org.
В ErrorLog и CustomLog мы указываем, где будут хранится логи этого виртуального хоста. Обратите внимание, имеет смысл для каждого хоста добавлять в имя файла лога название этого хоста, чтобы в будущем было легко найти лог требуемого хоста. Эти директивы можно и не указывать, но тогда логи этого виртуального хоста будут храниться в общих логах сервера.

В таком виде секция виртуального хоста уже работоспособна и на этом можно остановиться. Но можно добавить такие директивы как:

  • ServerAdmin [email protected] – адрес электронки администратора виртуального хоста
  • ServerAlias www.site.ru – зеркало хоста

Кроме того, можно добавить секции для индивидуальной настройки хоста:

<IfModule alias_module>
ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”

Создает ссылку на папку скриптов cgi-bin для хоста host_name.

<Directory “d:/server/host_name/www”>
Options Indexes Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

Настройки директории хоста host_name, их мы разбирали в прошлой статье.

После настройки файла httpd-vhosts.conf проверим правильность его конфигурации. В каталоге D:\server\Apache\bin\ создайте файл httpd-S.cmd с содержимым:
“D:\server\Apache\bin\httpd.exe” –S
pause

После запуска этого файла вы увидите окно с отчетом о проверке, Syntax OK в конце говорит о том, что все настройки в порядке.

Теперь нужно прописать созданные хосты в файл C:\Windows\system32\drivers\etc\hosts. Для этого открываем его текстовым редактором и вносим следующие записи:

127.0.0.1 www.host1.ru host1.ru #Чтобы не набирать www перед именем сайта, создаем зеркало
127.0.0.1 www.host2 host2 #Можно и без .ru создавать хосты
127.0.0.1 host3 #Самый распространенный вариант для локалки
127.0.0.1 localhost # Обычно уже указано, проследите чтобы случайно не удалили и не закомментировали.

Сохраните файл и перезапустите Apache. Попробуйте разместить в каталогах созданных вами виртуальных хостов какие-нибудь тестовые файлы (например index.html) и из браузера открыть хосты по адресам, указанным в директории ServerName каждого хоста.

Если вам приходится часто создавать виртуальные хосты и не очень хочется каждый раз редактировать все эти файлы и перезапускать Apache вручную, создайте в папке сервера (D:\server\) файл createVH.cmd с таким содержимым:

@cls
@rem Получаем текущую папку. Если у вас структура папок сервера как у меня, но он установлен, например на другом диске, укажите здесь вместо %~dp0 путь с нему (например, D:\server\) косая черта в конце обязательна.
@set server_path=%~dp0
:dir_exist
@set /P new_dir="Enter new VHost name:"
@set /P ip_add="Enter your IP address:"
@ if exist %server_path%%new_dir% echo "VHost %new_dir% already exist. Please re-enter Vhost name."
@ if exist %server_path%%new_dir% goto dir_exist
@md %server_path%%new_dir%

@rem Здесь указывается путь до конфиг файла виртуальных хостов, если у вас другой , поменяйте
@set outputfile=%server_path%Apache\conf\extra\httpd-vhosts.conf
@echo. >> %outputfile%
@echo ^<VirtualHost %ip_add%:80^> >> %outputfile%
@echo ServerName %new_dir% >> %outputfile%
@echo DocumentRoot «%server_path%%new_dir%» >> %outputfile%
@echo ErrorLog «%server_path%logs\%new_dir%.error.log» >> %outputfile%
@echo CustomLog «%server_path%logs\%new_dir%.access.log» common >> %outputfile%
@echo ^</VirtualHost^> >> %outputfile%
@if %ip_add%==* set ip_host=127.0.0.1
@if not %ip_add%==* set ip_host=%ip_add%
@set hostfile=%windir%\system32\drivers\etc\hosts
@echo. >> %hostfile%
@echo %ip_host% %new_dir% >> %hostfile%
@set htmlfile=%server_path%%new_dir%\index.html
@echo ^<html^> >> %htmlfile%
@echo ^<head^> >> %htmlfile%
@echo ^<title^>%new_dir%^</title^> >> %htmlfile%
@echo ^</head^> >> %htmlfile%
@echo ^<body^> >> %htmlfile%
@echo %new_dir% >> %htmlfile%
@echo ^</body^> >> %htmlfile%
@echo ^</html^> >> %htmlfile%
@rem Здесь путь до самого сервера, если у вас другой, поменяйте
@start %server_path%Apache\bin\httpd.exe -k restart

Теперь для создания хоста просто запустите этот файл, впишите в ответ имя нового хоста и IP, который будет указываться в секции VirtualHost файла httpd-vhosts.conf. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.

Обратите внимание, программа рассчитана на то, что структура каталогов сервера соответствует той, которую я указывал в первой статье. Если у вас установлен сервер по другим путям, поправьте файл в соответствии с ними.

habr.com

Как настроить виртуальные хосты в Apache на Ubuntu, 16.04/18.04 версии

Каждый владелец VPS сталкивается с вопросом, как разместить несколько сайтов на одном сервере с одним IP-адресом. Если вы используете в качестве веб-сервера Apache,виртуальные хосты (virtual hosts) — верное решение для разделения ресурсов и отдельной конфигурации для каждого сайта.

Предварительная настройка

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

Создание пользователя

По умолчанию после создания сервера для доступа к нему создаётся root пользователь. В целях безопасности не рекомендуем работать под суперюзером.

Чтобы создать пользователя, введите команду:

Где UserName — имя нового пользователя.

Система попросит ввести пароль для нового пользователя и дополнительную информацию:

Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:

        usermod -aG sudo UserName
    

Где UserName — имя созданного ранее пользователя.

Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.

Установка Ubuntu Apache

Чтобы выполнить действия ниже, у вас должен быть установлен Apache. Для полноценной работы сайта рекомендуем установить LAMP (Linux Apache MySQL PHP). Это минимальный набор ПО, который чаще всего используется для размещения и запуска сайта. Как установить LAMP, вы можете узнать в инструкции.

Подготовка доменов

Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.

Обратите внимание

В данной инструкции будут приведены примеры с доменами faq-reg.ru и support-faq.ru. В тех местах, где они будут встречаться, измените домены на свои.

Подготовка каталогов

Подготовим структуру каталогов. Рабочая директория Apache — /var/www. В данной директории мы будем создавать отдельные каталоги для каждого домена (виртуального хоста).

Чтобы создать каталоги, выполните команды:

        sudo mkdir -p /var/www/faq-reg.ru/
    
        sudo mkdir -p /var/www/support-faq.ru/
    

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

        sudo chmod -R 755 /var/www
    
        sudo chown -R $USER:$USER /var/www/faq-reg.ru/
    
        sudo chown -R $USER:$USER /var/www/support-faq.ru/
    

Готово. Структура каталогов и права доступа настроены. Далее подготовим демостраницы.

Создание демостраниц

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

Для faq-reg.ru:

        echo "<h2>faq-reg.ru</h2>" > /var/www/faq-reg.ru/index.html
    

Для support-faq.ru:

        echo "<h2>support-faq.ru</h2>" > /var/www/support-faq.ru/index.html
    

Не забудьте заменить доменные имена на ваши.

Готово. Теперь после настройки виртуальных хостов мы сможем проверить корректность их работы.

Создание конфигурационных файлов и настройка

Файл конфигурации Ubuntu Apache virtual hosts отвечает за обработку запросов к разным доменам. У Apache существует дефолтный файл 000-default.conf, который можно использовать в качестве шаблона. Для каждого виртуального хоста необходимо будет скопировать его, задать произвольное имя (рекомендуем использовать имя домена) и произвести определённые настройки. Обязательное условие — соблюдение расширения файла: .conf

Создание конфига для faq-reg.ru

  1. 1.

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

            sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/faq-reg.ru.conf
        
  2. 2.

    Откройте созданный файл командой:

            sudo nano /etc/apache2/sites-available/faq-reg.ru.conf
        

  3. 3.

    В файле присутствует секция VirtualHost для обработки запросов на 80 порт (порт для HTTP-запросов). Измените следующие строки:

            ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
        

    Вместо webmaster@localhost укажите электронный адрес администратора, вместо /var/www/html укажите каталог домена, который мы создали на этапе подготовки, в нашем случае это /var/www/faq-reg.ru/

    Затем добавьте ещё две строки:

            ServerName   faq-reg.ru
    ServerAlias  www.faq-reg.ru
        

    Сохраните изменения в файле и закройте его.

    Результат:

  4. 4.

    Настройка виртуального хоста для первого домена завершена. Скопируйте этот файл для второго домена с помощью команды:

            sudo cp /etc/apache2/sites-available/faq-reg.ru.conf /etc/apache2/sites-available/support-faq.ru.conf
        

    Не забудьте изменить faq-reg.ru.conf и support-faq.ru.conf на имена ваших доменов.

  5. 5.

    Откройте файл для редактирования:

            sudo nano /etc/apache2/sites-available/support-faq.ru.conf
        
  6. 6.

    Измените DocumentRoot, ServerName и ServerAlias в соответствии с данными для второго домена и сохраните изменения:

  7. 7.

    Деактивируйте конфиг по умолчанию командой:

            sudo a2dissite 000-default.conf
        

    И активируйте созданные конфиги:

            sudo a2ensite faq-reg.ru.conf
        
            sudo a2ensite support-faq.ru.conf
        
  8. 8.

    Перезапустите Apache командой:

            sudo service apache2 restart
        

Готово. Создание и настройка виртуальных хостов завершена. Далее можем проверить результат.

Проверка работы виртуальных хостов

Если вы заранее привязали ваши домены к серверу и делегирование уже произошло, при переходе по домену должна открыться страница, которую мы создали на этапе «Создание демостраниц».

Если с момента изменения DNS прошло менее 24 часов и домен ещё не делегирован, увидеть результат вы можете, настроив локальные хосты в файле hosts. Подробнее в инструкции.

При переходе по домену faq-reg.ru:

При переходе по домену support-faq.ru:

Готово. Файл index.html можно удалить. Далее вы можете загрузить файлы сайта в созданные директории.

Помогла ли вам статья?

3 раза уже
помогла

www.reg.ru

Apache2 настройка виртуального хоста — Вэб-шпаргалка для интернет предпринимателей!

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 совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

В прошлых статьях мы установили и настроили на локальном компьютере сервер Apache. В принципе, на этом можно было бы остановиться, так как сервер находится в рабочем состоянии и его можно спокойно использовать в работе. Но, по личному опыту, могу сказать, что использование только одного хоста localhost не очень удобно при разработке нескольких сайтов, так как для каждого сайта нужно будет создавать в каталоге localhost отдельный каталог и со временем в ней (папке localhost) будет очень трудно разобраться и что-то найти. Да и при тестировании разрабатываемого проекта гораздо удобнее набирать в браузере адрес вида test, чем localhost/test. Поэтому мы приступаем к настройке виртуальных хостов на локальном сервере.

Вообще, существует два способа конфигурирования виртуальных хостов: на основе имени и на основе IP-адреса. Но, так как мы настраиваем локальный сервер и у нас только один IP (кстати, для локалки он 127.0.0.1), то вариант с привязкой к IP нам не подходит и мы будем рассматривать вариант с привязкой к имени.

В прошлой статье я уже упоминал, что в файле конфигурации httpd.conf сервера есть строчка Include conf/extra/httpd-vhosts.conf. Мы ее уже раскомментировали, поэтому собственно и переходим к этому файлу. Найти его можно в папке Apache/conf/extra/.

Начнем рассматривать содержимое файла.
Первая директива – это NameVirtualHost *:80 привязывает виртуальные хосты, указываемы далее, к именам сайтов указанных в секциях . Здесь вместо звездочки можно вписать IP 127.0.0.1, но тогда во всех секциях нужно будет указать то же самый IP. Принцип работы этой директивы заключается в том, что при обращении, допустим, к адресу localhost, сервер проверяет, соответствует ли входящий адрес и порт, описанным в секциях VirtualHost и имеется ли запись 127.0.0.1:80 в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. Таким образом, запрос 127.0.0.1:80 будет распределяться только между виртуальными хостами, в которых он указан.

Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.

DocumentRoot “D:/server/localhost/www”
ServerName localhost
ErrorLog “D:/server/logs/localhost.error.log”
CustomLog “D:/server/logs/localhost.access.log” common

Директива DocumentRoot в этой секции указывает на папку, к которой будет происходить обращение при вызове адреса localhost.
ServerName как раз содержит имя нашего виртуального хоста, то есть его адрес. Сюда можно вписывать как адреса вида localhost, test, site, так и адреса localhost.ru, test.com, www.site.org.
В ErrorLog и CustomLog мы указываем, где будут хранится логи этого виртуального хоста. Обратите внимание, имеет смысл для каждого хоста добавлять в имя файла лога название этого хоста, чтобы в будущем было легко найти лог требуемого хоста. Эти директивы можно и не указывать, но тогда логи этого виртуального хоста будут храниться в общих логах сервера.

В таком виде секция виртуального хоста уже работоспособна и на этом можно остановиться. Но можно добавить такие директивы как:

  • ServerAdmin[email protected] – адрес электронки администратора виртуального хоста
  • ServerAlias www.site.ru – зеркало хоста

Кроме того, можно добавить секции для индивидуальной настройки хоста:

ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”

Создает ссылку на папку скриптов cgi-bin для хоста host_name.

Options Indexes Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

Настройки директории хоста host_name, их мы разбирали в прошлой статье.

После настройки файла httpd-vhosts.conf проверим правильность его конфигурации. В каталоге D:serverApachebin создайте файл httpd-S.cmd с содержимым:
“D:serverApacheinhttpd.exe” –S
pause

После запуска этого файла вы увидите окно с отчетом о проверке, Syntax OK в конце говорит о том, что все настройки в порядке.

Теперь нужно прописать созданные хосты в файл C:Windowssystem32driversetchosts. Для этого открываем его текстовым редактором и вносим следующие записи:

127.0.0.1 www.host1.ru host1.ru #Чтобы не набирать www перед именем сайта, создаем зеркало
127.0.0.1 www.host2 host2 #Можно и без .ru создавать хосты
127.0.0.1 host3 #Самый распространенный вариант для локалки
127.0.0.1 localhost # Обычно уже указано, проследите чтобы случайно не удалили и не закомментировали.

Сохраните файл и перезапустите Apache. Попробуйте разместить в каталогах созданных вами виртуальных хостов какие-нибудь тестовые файлы (например index.html) и из браузера открыть хосты по адресам, указанным в директории ServerName каждого хоста.

Если вам приходится часто создавать виртуальные хосты и не очень хочется каждый раз редактировать все эти файлы и перезапускать Apache вручную, создайте в папке сервера (D:server) файл createVH.cmd с таким содержимым:

@cls
@rem Получаем текущую папку. Если у вас структура папок сервера как у меня, но он установлен, например на другом диске, укажите здесь вместо %

dp0 путь с нему (например, D:server) косая черта в конце обязательна.
@set server_path=%

dp0
:dir_exist
@set /P new_dir=»Enter new VHost name:»
@set /P ip_add=»Enter your IP address:»
@ if exist %server_path%%new_dir% echo «VHost %new_dir% already exist. Please re-enter Vhost name.»
@ if exist %server_path%%new_dir% goto dir_exist
@md %server_path%%new_dir%

@rem Здесь указывается путь до конфиг файла виртуальных хостов, если у вас другой , поменяйте
@set outputfile=%server_path%Apacheconfextrahttpd-vhosts.conf
@echo. >> %outputfile%
@echo ^ >> %outputfile%
@echo ServerName %new_dir% >> %outputfile%
@echo DocumentRoot «%server_path%%new_dir%» >> %outputfile%
@echo ErrorLog «%server_path%logs\%new_dir%.error.log» >> %outputfile%
@echo CustomLog «%server_path%logs\%new_dir%.access.log» common >> %outputfile%
@echo ^ >> %outputfile%
@if %ip_add%==* set ip_host=127.0.0.1
@if not %ip_add%==* set ip_host=%ip_add%
@set hostfile=%windir%system32driversetchosts
@echo. >> %hostfile%
@echo %ip_host% %new_dir% >> %hostfile%
@set htmlfile=%server_path%%new_dir%index.html
@echo ^ >> %htmlfile%
@echo ^ >> %htmlfile%
@echo ^ %new_dir%^ >> %htmlfile%
@echo ^ >> %htmlfile%
@echo ^ >> %htmlfile%
@echo %new_dir% >> %htmlfile%
@echo ^ >> %htmlfile%
@echo ^ >> %htmlfile%
@rem Здесь путь до самого сервера, если у вас другой, поменяйте
@start %server_path%Apacheinhttpd.exe -k restart

Теперь для создания хоста просто запустите этот файл, впишите в ответ имя нового хоста и IP, который будет указываться в секции VirtualHost файла httpd-vhosts.conf. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.

Обратите внимание, программа рассчитана на то, что структура каталогов сервера соответствует той, которую я указывал в первой статье. Если у вас установлен сервер по другим путям, поправьте файл в соответствии с ними.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Каждый владелец VPS сталкивается с вопросом, как разместить несколько сайтов на одном сервере с одним IP-адресом. Если вы используете в качестве веб-сервера Apache,виртуальные хосты (virtual hosts) — верное решение для разделения ресурсов и отдельной конфигурации для каждого сайта.

Предварительная настройка

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

Создание пользователя

По умолчанию после создания сервера для доступа к нему создаётся root пользователь. В целях безопасности не рекомендуем работать под суперюзером.

Чтобы создать пользователя, введите команду:

Где UserName — имя нового пользователя.

Система попросит ввести пароль для нового пользователя и дополнительную информацию:

Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:

Где UserName — имя созданного ранее пользователя.

Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем.

Установка Ubuntu Apache

Чтобы выполнить действия ниже, у вас должен быть установлен Apache. Для полноценной работы сайта рекомендуем установить LAMP (Linux Apache MySQL PHP). Это минимальный набор ПО, который чаще всего используется для размещения и запуска сайта. Как установить LAMP, вы можете узнать в инструкции.

Подготовка доменов

Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.

В данной инструкции будут приведены примеры с доменами faq-reg.ru и support-faq.ru. В тех местах, где они будут встречаться, измените домены на свои.

Подготовка каталогов

Подготовим структуру каталогов. Рабочая директория Apache — /var/www. В данной директории мы будем создавать отдельные каталоги для каждого домена (виртуального хоста).

Чтобы создать каталоги, выполните команды:

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

Готово. Структура каталогов и права доступа настроены. Далее подготовим демостраницы.

Создание демостраниц

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

Не забудьте заменить доменные имена на ваши.

Готово. Теперь после настройки виртуальных хостов мы сможем проверить корректность их работы.

Создание конфигурационных файлов и настройка

Файл конфигурации Ubuntu Apache virtual hosts отвечает за обработку запросов к разным доменам. У Apache существует дефолтный файл 000-default.conf, который можно использовать в качестве шаблона. Для каждого виртуального хоста необходимо будет скопировать его, задать произвольное имя (рекомендуем использовать имя домена) и произвести определённые настройки. Обязательное условие — соблюдение расширения файла: .conf

Создание конфига для faq-reg.ru

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

Откройте созданный файл командой:

В файле присутствует секция VirtualHost для обработки запросов на 80 порт (порт для HTTP-запросов). Измените следующие строки:

Вместо webmaster@localhost укажите электронный адрес администратора, вместо /var/www/html укажите каталог домена, который мы создали на этапе подготовки, в нашем случае это /var/www/faq-reg.ru/

Затем добавьте ещё две строки:

Сохраните изменения в файле и закройте его.

Настройка виртуального хоста для первого домена завершена. Скопируйте этот файл для второго домена с помощью команды:

Не забудьте изменить faq-reg.ru.conf и support-faq.ru.conf на имена ваших доменов.

Откройте файл для редактирования:

Измените DocumentRoot, ServerName и ServerAlias в соответствии с данными для второго домена и сохраните изменения:

Деактивируйте конфиг по умолчанию командой:

И активируйте созданные конфиги:

Перезапустите Apache командой:

Готово. Создание и настройка виртуальных хостов завершена. Далее можем проверить результат.

Проверка работы виртуальных хостов

Если вы заранее привязали ваши домены к серверу и делегирование уже произошло, при переходе по домену должна открыться страница, которую мы создали на этапе «Создание демостраниц».

Если с момента изменения DNS прошло менее 24 часов и домен ещё не делегирован, увидеть результат вы можете, настроив локальные хосты в файле hosts. Подробнее в инструкции.

Рекомендуем к прочтению

web-shpargalka.ru

Настройка виртуальных хостов apache2 (ubuntu)

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

Мне не удобно хранить файлы сайтов в var/www так как там постоянная проблема с правами на файлы поэтому я сделал свою папку с сайтами и положил ее в /home/user и назвал webhost. Но что бы сайты запускались именно от туда нужно отредактировать файл:

sudo gedit /etc/apache2/apache2.conf

И добавляем в конец. (не забудьте изменить строку /home/user/webhost/ и написать имя своего пользователя и название свой папки с сайтами)

<Directory /home/user/webhost/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

 

Теперь для каждого сайта нужно будет добавлять записи в hosts и 000-default.conf. Открываем:

sudo gedit /etc/hosts

Заменяем 127.0.0.1 localhost на 127.0.0.1 localhost.localdomain localhost и добавляем на следующей строке 127.0.0.2 test. Получится:

127.0.0.1 localhost.localdomain  localhost
127.0.0.2 test
 
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Открываем:

sudo gedit /etc/apache2/sites-available/000-default.conf

И пишем в самый низ

<VirtualHost 127.0.0.2:80>
  DocumentRoot /home/user/webhost/test/www
</VirtualHost>

 

Не забываем изменить пути на свои и создать нужные папки с сайтом.

Теперь перезапускаем apache:

sudo service apache2 restart

Настройка виртуальных хостов для ubuntu 10.04 10.10 12.04

Для создания виртуального хоста в apache под ubuntu необходимы 2 файла:

1) Останавливаем apache2

sudo /etc/init.d/apache2 stop 

Открываем /etc/hosts. Этот файл при первом запуске у меня имел вид такой:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Далее я добаил сследующую строку

127.0.0.2  test

И заменил запись

127.0.0.1  localhost

На

127.0.0.1  localhost.localdomain  localhost

Таким образом получился файл /etc/hosts со следующим содержанием:

127.0.0.1  localhost.localdomain  localhost
127.0.0.2 test

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

2) Для дальнейшей настрйки виртуальных хостов apache2 необходим файл /etc/apache2/httpd.conf. Открываем.

sudo gedit /etc/apache2/httpd.conf

Добавляем следующую запись ( я написал в самый конец файла)

NameVirtualHost 127.0.0.2  

ServerName test 
DocumentRoot "/home/user/project/test/www"

3) Запускаем apache2

sudo /etc/init.d/apache2 start

Когда разворачивал на ubuntu 14.04 то с файлом httpd.conf не вышло сделал в /etc/apache2/sites-available/000-default.conf. В него нужно добавить (внизу):

<VirtualHost 127.0.0.2:80>
	ServerAdmin webmaster@localhost
	DocumentRoot /home/user/project/test/www
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 

И в браузере пишем test — открываеться хост test.

Возможные трудности

При запуске хоста выдает ошибку:

Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0
Fatal error: Unknown: Failed opening required '/home/user/host/test/www/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0

Решение http://forum.ubuntu.ru/index.php?topic=45252.0 А именно изменил права на папку где лежат все мои сайты

sudo chmod -R 777 /home/user/host

Еще одна фишка при старте или рестарте apache2 выдает в консоле следующее

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Вылечил так: в файле /etc/hosts есть такие записи

127.0.0.1 localhost
127.0.1.1 имя компьютера

Их нужно изменить

127.0.0.1 localhost.localdomain localhost
127.0.1.1 localhost.localdomain имя компьютера

После чего все Нормально запускается

www.opengs.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *