Рубрики
apache \ nginx

LAMP настройка \ виртуальный хостинг / apache2

Источники:

http://easylinux.ru/node/291/
http://sys-it.ru/unix-admin/88-web-apache2-debian

Apache Virtual Hosts

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 ...

Структура и общая информация

Сайты на сервере размещаются в отдельных каталогах. 
Удобнее, да и правильнее с точки зрения безопасности, создать для каждого сайта подкаталоги для хранения самих страниц, временных файлов, возможно 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


Для каждого сайта в конфигурационный файл добавляем отдельную секцию


    ServerName first.ru
    ServerAlias http://www.first.ru
    DocumentRoot /var/www/vhosts/first.ru/httpdocs
    ErrorLog logs/first.ru-error.log



    ServerName second.ru
    ServerAlias http://www.second.ru
    DocumentRoot /var/www/vhosts/second.ru/httpdocs
    ErrorLog logs/second.ru-error.log



С реальными сайтами разобрались, теперь что произойдет с обращении к серверу по несуществующему адресу или при обращении по IP ? 
Если оставить все как есть, то будет открываться первый сайт first.ru , потому что, как ни странно:
The first VirtualHost section is used for requests without a known server name.

Поэтому перед секциями реальных сайтов добавляем секцию-ловушку, получается примерно так:

    ServerName default    


Теперь все запросы с неправильными именами сайтов и обращения по 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

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

Допишем в созданный файл:

ServerAdmin admin@joomla.ru
DocumentRoot /var/www/joomla

AllowOverride all
Order  allow,deny
Allow from all

ServerName joomla


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)/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

Добавить комментарий