Библиотека сайта rus-linux.net
Теперь мы рассмотрим настройку виртуальных хостов.
Допустим, у вас есть 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.
Также нужно, чтобы работал PHP. Кроме того,
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>
php_admin_value safe_mode on
php_admin_value allow_url_fopen off
php_admin_value max_execution_time 30
php_admin_value open_base_dir /var/www/www.host1.aa/
php_admin_value memory_limit 2M
php_admin_value default_charset KOI8-R
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>
php_admin_value safe_mode on
php_admin_value allow_url_fopen off
php_admin_value max_execution_time 30
php_admin_value open_base_dir /var/www/www.host2.aa/
php_admin_value memory_limit 2M
php_admin_value default_charset KOI8-R
AllowOverride None
Options FollowSymlinks
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
#Allow from all
</Directory>
Поясним ниже опции, которые мы использовали в нашем примере настройки:
ServerAdmin admin@host2.aa: эта опция определяет email-адрес, который будет появляться в сообщении при ошибках сервера. Иначе говоря, сервер будет предлагать обращаться администратору сервера по этому адресу.DocumentRoot /var/www/www.host1.aa/WebRoot: этим мы определяем корневой каталог для веб-сервера, где лежат на диске файлы вашего сайта.ServerName www.host2.aa: здесь мы указываем имя виртуального хоста, на которое сервер должен отзываться, когда его набирают в браузере.ServerAlias host2.aa: это псевдоним ServerName. Этим мы объясняем, что под именамиwww.host2.aaиhost2.aaбудет появляться один и тот же сайт. Таким образом можно перечислить все доменные имена, если их несколько, на которые будет отзываться данный виртуальный хост. Все эти доменные имена должны иметь соответствующую запись в DNS.AddType application/x-httpd-php .php: эта опция включает интерпретатор PHP для документов с расширением.php.ErrorLog /var/log/httpd/host2.aa-error_log: в этот файл пишется журнал ошибок сервера.CustomLog /var/log/httpd/host2.aa-access_log combined: в этот файл пишется журнал о посещениях вашего сайта.combinedозначает подробный лог. Если мало места на диске, можно использовать простой логcommon.DirectoryIndex index.html index.php index.htm: этим мы говорим, что индексными файлами каталогов будут файлы с именамиindex.html,index.php,index.htm.AddDefaultCharset KOI8-R: этим мы заставляем сервер слать вhttpзаголовке кодировкуKOI8-R. Если это не указывать, сервер шлет по умолчаниюISO-8859-1. Чтобы Apache вообще ничего не слал в заголовке, поставьтеAddDefaultCharset off. В таком варианте браузер будет руководствоваться тем, что написано в <META> ваших html документов.php_admin_value safe_mode on: эта опция заставляет PHP работать в безопасном режиме. Это значит, что блокируются некоторые опасные функции PHP.php_admin_value allow_url_fopen off: этим мы запрещаем PHP открывать соединения с внешними серверами с помощью функцийfopen(),file()и т.д.. То есть блокируем такие действия, как<? $content=file('http://lafox.net/');?>.php_admin_value max_execution_time 30: этим мы указываем, что скрипт PHP нужно обрывать после 30 секунд работы. Эта опция важна для предотвращения зацикливаний, а так же снижает опасность “DoS” атак на сервер (атак на отказ в обслуживании).php_admin_value open_base_dir /var/www/www.host2.aa/: этим мы запрещаем всем функциям PHP доступ к файлам, находящимся выше каталога/var/www/www.host2.aa/. Этот запрет не дает возможность вашим пользователям выполнять такие вредоносные операции, как<? $content=file('/etc/password');?>, что значительно увеличивает защиту сервера от атак и ошибок при программировании PHP-скриптов.php_admin_value memory_limit 2M: этим мы ограничиваем размер памяти, который может использовать PHP-скрипт. Это важный параметр, так как он предотвращает перегрузку сервера из-за ошибок в скриптах, вызывающих неограниченное использование памяти. Так же этим мы уменьшаем опасность “DoS” атак.php_admin_value default_charset KOI8-R: это заставляет PHP посылать вHTTPзаголовке информацию о кодировке данных. Обратите внимание, что опцияAddDefaultCharset, описанная выше, не действует на PHP скрипты.AllowOverride None: опция запрещает перекрывать настройки общего конфиг-файла файлом.htaccess. Если вы хотите оставить эту возможность, напишитеAllowOverride all.Options FollowSymlinks: разрешает использование символических ссылок.Order Deny,Allow: определяет порядок применения правил по запрещению и предоставлению доступа.Deny from all: запрещает доступ к этому виртуальному хосту отовсюду.Allow from 192.168.1.0/24: эта опция разрешает доступ к сайту из сети192.168.1.0/24.Allow from all: разрешает доступ к нашему виртуальному хосту отовсюду.
Для установки CGI версии php (это, например, полезно в случае, если нужно выполнять скрипты на php в командной оболочке), устанавливаем
# urpmi php-cgi
