создание мультихостового сервера на apache или настройка виртуальных хостов


Мультихостинговый сервер - это сервер на котором располагаються до несколько сайтов со  своей структурой каталогов и персональными настройками. Еще это можно рассматривать как конфигурацию виртуальных хостов на веб-сервере apache.

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

mkdir -p /home/www/site1/{htdocs,cgi-bin,conf,logs}

Из созданных каталогов видим, что:

htdocs - служит для хранения файлов самого сайта

cgi-bin - служит для хранения скриптов cgi сайта

conf - служит для модификационных файлов конфигурации apache, php, mysql и т.п.

logs - служит для логов сайта

После создания каталогов идем править основной конфигурационный файл веб-сервера apache:

# vim /etc/apache2/apache2.conf

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

ServerName site

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

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/site1

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

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

# vim /etc/apache2/sites-available/site1

Вот приблизительное содержимое такого файла

<VirtualHost *:80>
  ServerName site1
  ServerAlias www.site1
  ServerAdmin postmaster@site1

  DocumentRoot /home/www/site1/htdocs
  <Directory /home/www/site1/>
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /home/www/site1/htdocs/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>

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

  ErrorLog /home/www/site1/logs/error.log
  LogLevel warn
  CustomLog /home/www/site1/logs/access.log combined

</VirtualHost>

Он может изменяться главное следите за путями которые указываете и именами хостов (ServerName), как правило тут можно накуралесить и долго думать в чем ошибка :)

Теперь необходимо перейти в каталог с конфигурационными файлами, если вы еще не в нем :)

cd /etc/apache2/sites-available/

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

# a2dissite default

И включить новонастроенный конфигурационный файл нашего сайта (site1):

# a2ensite site1

Перезагружаем веб-сервер apache:

# /etc/init.d/apache2 reload

Ну и не забудьте добавить файлы вашего сайта в /home/www/site1/htdocs. Потом проверяем все ли в порядке, если все отлично работает радуемся, нет ищем где накосячили.

После того как убедились что все работает можем добавить еще один сайт создаем для него каталог со своей структурой каталогов (у меня в /home/www) и в /etc/apache2/sites-available добавляем и корректируем собственный файл конфигурации для этого сайта (например с именем site2), после чего включаем его:

# a2ensite site2

и перезагружаем веб-сервер:

# /etc/init.d/apache2 reload

Проверяем и радуемся ;)