logo
Методичка - Администрирование

Apache-сервер под Linux

Источник: ru.wikipedia.org, Lafox.Net

Установка и настройка

Инсталляция :

# urpmi apache

Запуск сервера:

# apachectl start

Останов сервера:

# apachectl stop

Перезапуск сервера :

# apachectl restart

Проверка работоспособности сервера:

# links http://localhost/

Для того, чтобы правильно отображались русскоязычные документы, в файле /etc/httpd/conf/commonhttpd.conf нужно изменить строчку : AddDefaultCharset ISO-8859-1 на AddDefaultCharset KOI8-R или на AddDefaultCharset CP1251.

В файле /etc/httpd/conf/httpd2.conf можно изменить:

DocumentRoot /var/www/html - это место, где находится корень ваших html-документов, публикуемых в сети.

ServerName имя_вашего_домена.

Сервер полностью готов к работе. Подробнее, какие еще опции полезно настраивать, смотрите ниже в разделе про виртуальные хосты.

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

Допустим, у вас есть IP-адрес xxx.xxx.xxx.xxx и следующие доменные имена: host1.aa, www.host1.aa, а также host2.aa, www.host2.aa, которые указывают на IP-адрес xxx.xxx.xxx.xxx.

Задача состоит в следующем: нам нужно, чтобы на два первых домена (host1.aa и www.host1.aa) отзывался web-сайт, файлы которого находятся в каталоге /var/www/www.host1.aa/WebRoot, а на два других (host2.aa и www.host2.aa) отзывался web-сайт, файлы которого находятся в каталоге /var/www/www.host2.aa/WebRoot. Кроме того, web-сайт по адресу www.host2.aa должен быть доступен только из нашей внутренней сети (так как это внутренний сайт для корпоративного пользования), а вот сайт www.host1.aa должен быть доступен также и из внешнего мира.

Для этого мы сделаем следующее: в файл /etc/httpd/conf/vhosts/Vhosts.conf добавляем следующие строки:

NameVirtualHost xxx.xxx.xxx.xxx:80

<VirtualHost xxx.xxx.xxx.xxx:80>

ServerAdmin admin@host1.aa

DocumentRoot /var/www/www.host1.aa/WebRoot

ServerName www.host1.aa

ServerAlias host1.aa

AddType application/x-httpd-php .php

ErrorLog /var/log/httpd/host1.aa-error_log

CustomLog /var/log/httpd/host1.aa-access_log combined

DirectoryIndex index.html index.php index.htm

AddDefaultCharset KOI8-R

</VirtualHost>

<Directory /var/www/www.host1.aa>

AllowOverride None

Options FollowSymlinks

Allow from all

</Directory>

#############################################

<VirtualHost xxx.xxx.xxx.xxx:80>

ServerAdmin admin@host2.aa

DocumentRoot /var/www/www.host2.aa/WebRoot

ServerName www.host2.aa

ServerAlias host2.aa

AddType application/x-httpd-php .php

ErrorLog /var/log/httpd/host2.aa-error_log

CustomLog /var/log/httpd/host2.aa-access_log combined

DirectoryIndex index.html index.php index.htm

AddDefaultCharset KOI8-R

</VirtualHost>

<Directory /var/www/www.host2.aa>

AllowOverride None

Options FollowSymlinks

Order Deny,Allow

Deny from all

Allow from 192.168.1.0/24

#Allow from all

</Directory>

Поясним ниже опции, которые мы использовали в нашем примере настройки:

Ограничение доступа

Допустим, нам необходимо ограничить доступ в определенный каталог web-сервера по адресу, например http://www.host2.aa/private/. Мы хотим, чтобы туда могли попасть только пользователи из сети 10.10.11.0/24. Этот web-адрес в нашем случае соответствует физическому каталогу на диске /var/www/www.host2.aa/WebRoot/private/. Тогда нам нужно добавить в конфиг-файл такой блок:

<Directory /var/www/www.host2.aa/WebRoot/private>

Order Deny,Allow

Deny from all

Allow from 10.10.11.0/24

</Directory>

Теперь, допустим, нам нужно чтобы при входе на web-адрес http://www.host2.aa/admin/, что соответствует физическому каталогу на диске /var/www/www.host2.aa/WebRoot/admin, сервер запрашивал логин и пароль и пропускал туда только пользователей admin и manager с паролями adminpass и manpass соответственно. Тогда сначала добавляем в конфигурационный файл такой блок:

<Directory /var/www/www.host2.aa/WebRoot/admin>

AuthName "ADMINSTRATOR AREA"

AuthType basic

AuthUserFile "/var/www/www.host2.aa/.htpasswd"

Require valid-user

Allow from All

</Directory>

Затем создаем файл с логинами и паролями /var/www/www.host2.aa/.htpasswd. Для этого выполняем следующую команду:

htpasswd -c /var/www/www.host2.aa/.htpasswd admin

и вводим дважды пароль. Ключик -c говорит о том, что мы создаем новый файл паролей. Соответственно, при добавлении новых пользователей этот ключик использовать нельзя. Теперь добавим второго пользователя:

htpasswd /var/www/www.host2.aa/.htpasswd manager

По запросу дважды вводим пароль (в нашем примере manpass). Перегружаем сервер и проверяем, что теперь при входе на http://www.host2.aa/admin/, сервер запросит логин и пароль.

Внимание: важно, чтобы файл /var/www/www.host2.aa/.htpasswd имел права на чтение для пользователя apache.

Задания:

  1. Установить и настроить Apache.

  2. Разместить на сервере 2 сайта с разными именами, используя виртуальные хосты.

  3. Для каждого сайта создайте простую страничку index.htm (можно просто “Привет!”)

  4. Создайте на вашем сервере (на 1-ом сайте) папку admin и в ней файл index.htm, разместите ссылку на него с первой страницы

  5. Поставьте пароль на доступ в эту папку (т.е. чтобы посетитель сайта должен был вводить пароль)

  6. Разрешить доступ ко 2-му сайту только из локальной сети 192.168.0.1-192.168.0.9