Настройка локальной рабочей станции для обслуживания нескольких сайтов с использованием VirtualHost в Apache

06.08.2011, рубрики: how-to | Теги: | 3 комментариев »

Вроде о настройке виртуальных хостов на вашей локальной рабочей станции уже было сказано много, но как не странно, никакого более-менее внятного материал на русском мне обнаружить не удалось. У буржуев ситуация получше. В любом случае это важный вопрос, так как все хостеры используют эту технлогию, «вешая» на один IP-адрес по многу сайтов. Например, если проверить мой домен, то станет ясно, что по мимо моего сайта, на том же самом IP-адресе «висит» еще 64 сайта. Это не так уж много, бывает и сотни и тысячи. Реализовать подобный механизм у себя на локальной машине очень просто, а главное это будет удобно использовать. Как это сделать, имея уже готовый Web-сервер на основе Apache, установленный на платформе Debian, написано под катом.

Теория

Тут стоит обратить внимание на официальную документацию. На сайте Apache, раздел Name-based Virtual Host Support c описанием директив и всевозможных комбинаций. Так же, обратите внимание на документацию Drupal’a, там есть очень полезная статья HowTo: Configure your local workstation to serve multiple sites using Drupal’s multisite configurations and Apache’s VirtualHost. Все они на английском.

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

Давайте рассмотрим такую ситуацию, когда вы тестируете разные сайты, у себя на компьютере. Вы можете иметь виртуальные хосты, на вашем localhost (127.0.1.1). Правильно сконфигурировав файлы /etc/hosts и конфиг Apache /etc/apache2/sites-available/default вы можете получить сколько угодно сайтов на одном IP-адресе.

Давайте рассмотрим такую ситуацию, вы хотите иметь два разных сайта на одном IP-адресе (127.0.1.1), для примера:

1) Первый сайт будет работать на Drupal
2) Второй сайт будет работать на WordPress.

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

Обычно, Apache предлагает хранить сайты в директории /var/www, мне это не мешает на данный момент, если же вам не нравится, поменяйте.

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

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

Первое что необходимо сделать, это настройть файл /etc/hosts:

  1. sudo nano /etc/hosts

Туда впишите следующие:

  1. 127.0.0.1       localhost
  2. 127.0.1.1       drupal.local
  3. 127.0.1.1       wordpress.local

Где drupal.local будет вашим локальным адресом, по которому будет доступен сайт на Drupal’e.
Где wordpress.local будет вашим локальным адресом, по которому будет доступен сайт на WordPress’e.

Теперь приступим к настройке виртуальных хостов в файле /etc/apache2/sites-available/default

  1. sudo nano /etc/apache2/sites-available/default

Там стоит вписать минимальную конфигурацию для каждого виртуального хоста:

  1. <VirtualHost *:80>
  2. ServerName drupal.local
  3.  
  4. #LOGS
  5. ErrorLog "/var/log/apache2/error.log"
  6. CustomLog "/var/log/apache2/access.log" file
  7.  
  8. DocumentRoot /var/www/users/drupal
  9. </VirtualHost>
  10.  
  11. #===========================================================
  12.  
  13. <VirtualHost *:80>
  14. ServerName wordpress.local
  15.  
  16. #LOGS
  17. ErrorLog "/var/log/apache2/error.log"
  18. CustomLog "/var/log/apache2/access.log" file
  19.  
  20. DocumentRoot /var/www/users/wordpress
  21. </VirtualHost>

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

  1. sudo /etc/init.d/apache2 restart

Что-бы попасть на сайт Drupal’a перейдите по адресу drupal.local

Что-бы попасть на сайт WordPress’a перейдите по адресу wordpress.local

Надеюсь статья вам понравилась!


3 комментариев на запись “Настройка локальной рабочей станции для обслуживания нескольких сайтов с использованием VirtualHost в Apache”

  1. 1 Пупкин Вася сказала в 15:28, 08.08.2011:

    Спасибо. Вопрос по поводу:
    127.0.1.1 drupal.local
    127.0.1.1 wordpress.local
    Во многих мануалах пишут, что при добавлении нового сайта изменяется и адрес – 127.0.1.2, 127.0.1.3 и т.д. Есть ли разница?

  2. 2 admin сказала в 23:27, 09.08.2011:

    Нет, разницы нет, сайт можно подвесить на любой IP, на внешний, на внутренний, на IP loopback интерфеса, что лучше всего для тестирования

  3. 3 andry сказала в 2:50, 01.09.2011:

    Интересно… Спасибо!


Оставить комментарий

  • Доступные теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">

  • *