Тема: Все о настройке
разу хочу отметить, что 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>
И разберем каждую строчку:
<VirtualHost *:80> — этот тег обозначает, что дальше будут следовать настройки виртуального хоста. Виртуальный хост будет срабатывать при обращении на любой адрес по порту 80.
ServerAdmin — директива содержит e-mail адрес администратора данного хоста и будет показываться в сообщениях об ошибке. В нашем случае — это webmaster@localhost
ServerName — эта директива определяет имя хоста и порт, по которому сервер идентифицирует себя. Это необходимо при создании URL. Так, например, у Вас есть хост first.example.com, а сервер имеет еще название www.example.com и Вы хотите, чтоб веб-сервер определял Ваш хост и по этому имени, тогда в этой директиве должны прописать ServerName www.example.com
ServerAlias — данная директива устанавливает альтернативные имена хостов.
DocumentRoot — директива устанавливает каталог, где находятся файлы для обработки apache2. Т.е. в данном каталоге хранятся Ваши файлы сайта.
<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 — в данной директиве мы указываем доступ к серверу, перечисляем разрешенные хосты.
ErrorLog — в данной директиве мы указываем путь к файлу логов.
LogLevel — в данной директиве мы указываем уровень сообщений, которые будут записываться в лог-файл. Существуют следующие уровни:
emerg — чрезвычайные ситуации — система непригодна для использования.
alert — действий должны быть приняты немедленно.
crit — критическое условие.
error — возникновение ошибки.
warn — предупреждения.
notice — нормальное состояние.
info — информация.
debug — debug сообщения
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 завершена. Если у Вас появились вопросы, то пишите в комментариях я обязательно на них отвечу.