Источники:
1 2 |
http://easylinux.ru/node/291/ http://sys-it.ru/unix-admin/88-web-apache2-debian |
Apache Virtual Hosts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Apache Virtual Hosts - несколько сайтов на одном сервере Допустим на нашем сервере должны располагаться несколько сайтов и необходимо, чтобы при переходе по имени сайта открывались соответствующие этому сайту страницы, а при переходе по IP-адресу или по любому другому имени, кроме избранных, открывался сайт-заглушка, например со списком имеющихся сайтов или просто предупреждением. Все это можно организовать с помощью так называемых виртуальных хостов. Основным конфигурационным файлом web-сервера является /etc/httpd/conf/httpd.conf и /etc/apache2/conf/apache2.conf соответственно. * В конфигурационный файл свежи установленного web-сервера можно внести некоторые косметические исправления. Для этого среди многочисленных (и полезных) комментариев находим и раскомментируем директивы ServerAdmin admin@mysite.ru # почтовый адрес администратора ServerName mysite.ru:80 # имя сервера в строке LanguagePriority переставляем ru на первое место LanguagePriority ru en ca cs da de el eo es et fr he hr ... |
Структура и общая информация
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
Сайты на сервере размещаются в отдельных каталогах. Удобнее, да и правильнее с точки зрения безопасности, создать для каждого сайта подкаталоги для хранения самих страниц, временных файлов, возможно cgi-скриптов и других полезностей. Можно пойти ещё дальше и организовать для каждого сайта отдельного SSH-пользователя. В таком случае удобно размещать сайт в домашнем каталоге этого пользователя. Соответственно каталоги сайта будут иметь вид: /home/site_user/mysite.ru/httpdocs # для страниц /home/site_user/mysite.ru/tmp # для хранения сессий и временных файлов /home/site_user/user/mysite.ru/cgi-bin # для скриптов Однако в небольших системах, где SSH-доступом обычно пользуется только администратор сервера, в этом нет необходимости. Поэтому сайты размещают внутри папки /var/www, которую по умолчанию использует web-сервер. /var/www/vhosts/mysite.ru/httpdocs # для страниц /var/www/vhosts/mysite.ru/tmp # для хранения сессий и временных файлов /var/www/vhosts/mysite.ru/cgi-bin # для скриптов Собственно допустим наши сайты называются first.ru и second.ru. Раскомментируем директиву NameVirtualHost *:80 в третьей секции конфигурационного файла. Создаем папки общую $ mkdir /var/www/vhosts для первого сайта $ mkdir /var/www/vhosts/first.ru $ mkdir /var/www/vhosts/first.ru/httpdocs и для второго $ mkdir /var/www/vhosts/second.ru $ mkdir /var/www/vhosts/second.ru/httpdocs Для каждого сайта в конфигурационный файл добавляем отдельную секцию <VirtualHost *:80> ServerName first.ru ServerAlias http://www.first.ru DocumentRoot /var/www/vhosts/first.ru/httpdocs ErrorLog logs/first.ru-error.log </VirtualHost> <VirtualHost *:80> ServerName second.ru ServerAlias http://www.second.ru DocumentRoot /var/www/vhosts/second.ru/httpdocs ErrorLog logs/second.ru-error.log </VirtualHost> С реальными сайтами разобрались, теперь что произойдет с обращении к серверу по несуществующему адресу или при обращении по IP ? Если оставить все как есть, то будет открываться первый сайт first.ru , потому что, как ни странно: The first VirtualHost section is used for requests without a known server name. Поэтому перед секциями реальных сайтов добавляем секцию-ловушку, получается примерно так: <VirtualHost *:80> ServerName default </VirtualHost> Теперь все запросы с неправильными именами сайтов и обращения по IP направляются в папку /var/www/html, где можно разместить простейшую индексную страницу. Для вступления всех изменений в силу перезапускаем сервер service httpd restart /etc/init.d/apache2 restart Дальше больше Приведенные выше секции содержат минимальный набор директив. Со временем возникает необходимость в дополнениях, которые описывают, например, свойства PHP или возможности .htaccess. Apache позволяет управлять достаточно большим количеством настроек. При необходимости следует обращаться к официальной документации http://httpd.apache.org Приведу пример секции VirtualHost для сайта domain.tld с синонимом another_domain.tld одного реально действующего сервера AllowOverride All Options +Includes php_admin_value open_basedir /var/www/vhosts/domain.tld/ php_admin_value doc_root /var/www/vhosts/domain.tld/httpdocs php_admin_value upload_tmp_dir /var/www/vhosts/domain.tld/tmp/ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fphp-sender@domain.tld" |
Пример Debian и установка CMS Joomla на Apache2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Apache – веб-сервер. Его задача – отдавать контент на запросы клиентов. Apache обладает большим функционалом за счет подключаемых модулей. 1)Установим классическую связку — Apache + PHP + MySQL: #apt-get install apache2 mysql-server-5.0 php5 php5-gd php5-mysql acl 2)Создадим каталог для сайта и распакуем туда предварительно закаченную CMS joomla: # mkdir /var/www/joomla 3)Сменим владельца каталога: chown -R www-data.www-data /var/www/joomla/ 4)Сменим права на каталог: chmod -R 755 /var/www/joomla/ 5)Создадим виртуальный хост для CMS joomla, по аналогии можно создать еще дополнительные виртуальные хосты (сайты): vim /etc/apache2/sites-available/joomla.conf Допишем в созданный файл: <pre class="lang:default decode:true " > <VirtualHost *:80> ServerAdmin admin@joomla.ru DocumentRoot /var/www/joomla <Directory /var/www/joomla> AllowOverride all Order allow,deny Allow from all </Directory> ServerName joomla </VirtualHost> 6)В /etc/apache2/apache2.conf дописать: ServerName localhost 7)Включим сайт: a2ensite joomla 8)После выполнения этих команд нужно обновить конфигурацию apache: # /etc/init.d/apache2 reload 9)Создаем БД для сайта: #mysql -p CREATE DATABASE joomla; GRANT ALL PRIVILEGES ON joomla.* TO joomla_admin@localhost IDENTIFIED BY 'password'; |
Дополнительно:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
1)/etc/apache2/apache2.conf - главный конфигурационный файл 2)Каталоги в /etc/apache2/: mods-available - установленные в систему модули, хранит сами модули и их конфигурационные файлы mods-enabled - подключенные модули, хранит ссылки на файлы в mods-available sites-available - доступные сайты, хранит файлы описывающие виртуальные хосты sites-enabled - подключенные сайты, хранит ссылки на файлы в sites-available 3)Четыре команды, которыми будем создавать и удалять ссылки в диалоговом режиме: a2enmod - подключает модуль a2dismod - отключает модуль a2ensite - подключает сайт a2dissite - отключает сайт 4) Если у Вас возникли проблемы с кодировкой веб-страниц, надо в конфиге apache2 (/etc/apache2/apache2.conf), задать параметр: AddDefaultCharset Off |