воскресенье, 28 ноября 2010 г.

Virtual Host Apache2

Устройство виртуальных хостов в web-servere Apache2 в дистрибутиве Debian

Источники:
http://httpd.apache.org/docs/2.0/ru/vhosts/name-based.html
http://httpd.apache.org/docs/2.0/ru/vhosts/examples.html

Обычно для создания виртуальных хостов используеться конфигурационный файл /etc/apache2/httpd.conf. В нем создаеться конфиг в соответсвии с инструкциями с оф-сайта(см.выше)

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

root@fox:/home/vitaliy# ls -l /etc/apache2/sites-available/
итого 16
-rw-r--r-- 1 root root 972 Ноя 29 01:14 default
-rw-r--r-- 1 root root 7469 Окт 9 22:02 default-ssl
-rw-r--r-- 1 root root 407 Ноя 29 00:58 vito



Влючаются же сайты при помощи символических ссылок в паке /etc/apache2/sites-enabled/ которые ссылаються на файлы в /etc/apache2/sites-available/

root@fox:/home/vitaliy# ls -l /etc/apache2/sites-enabled/
итого 0
lrwxrwxrwx 1 root root 26 Ноя 14 23:54 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 33 Ноя 29 00:48 vito -> /etc/apache2/sites-available/vito

В дебиане по умолчанию уже создан дефолтный виртуальный хост default. В случае когда клиент делает запрос и в поле хост указан хост которого нет на сервере то он будет перекинут на дефаулт виртуал хост.

root@fox:/home/vitaliy# less /etc/apache2/sites-available/default
#NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
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 ${APACHE_LOG_DIR}/error.log

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

CustomLog ${APACHE_LOG_DIR}/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>


Если вы хотите добавить несколько виртуальных хостов создайте файлы к примеру vhost, vhost2, vhostn в папке /etc/apache2/sites-available/

root@fox:/home/vitaliy# nano /etc/apache2/sites-available/vhost1
<VirtualHost *:80>
DocumentRoot /home/vitaliy/workspace4
ServerName vhost1
ServerAlias vhost1 vhost1.mysite.net


<Directory /home/vitaliy/workspace4/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

</Directory>

# Other directives here

</VirtualHost>

Строки "Listen 80" и "NameVirtualHost *:80" необходимые для настроки виртуалных хостов в Дебиане находятся в /etc/apache2/ports.conf

root@fox:/home/vitaliy# less /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>


ПРИМЕР:

# My Virtual Hosts Config File for Two Domains
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin webmaster@theos.in
DocumentRoot "/usr/local/docs/theos.in"
ServerName www.theos.in
ServerAlias theos.in
ErrorLog "/var/log/theos.in-error_log"
CustomLog "/var/log/theos.in-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@nixcraft.com
DocumentRoot "/usr/local/docs/nixcraft.com"
ServerName www.nixcraft.com
ServerAlias nixcraft.com
ErrorLog "/var/log/nixcraft.com-error_log"
CustomLog "/var/log/nixcraft.com-access_log" common
</VirtualHost>