1

Тема: Все о настройке

разу хочу отметить, что 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 завершена. Если у Вас появились вопросы, то пишите в комментариях я обязательно на них отвечу.

Ну как то так....

2

Re: Все о настройке

Настройки модулей расположены в директории /etc/apache2/mods-available. Для подключения или отключения модулей (настроек модулей) следует использовать соответствующие команды a2enmod или a2dismod. Пример подключения модуля:

sudo a2enmod <mod-name>

Свои настройки следует сохранять в файлы, расположенные в директории /etc/apache2/conf-available. Для подключения или отключения своих настроек следует использовать соответствующие команды a2enconf или a2disconf. Пример подключения файла со своими настройками:

sudo a2enconf <config-name>

Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории /etc/apache2/sites-available. Для подключения виртуальных хостов следует использовать соответствующие команды a2ensite или a2dissite. Пример подключения виртуального хоста:

sudo a2ensite <site-name>

Ну как то так....