Показаны сообщения с ярлыком apache. Показать все сообщения
Показаны сообщения с ярлыком apache. Показать все сообщения

четверг, 18 марта 2010 г.

Делаем virtual hosts на Apache OS X Leopard

У меня работает так.

Шаг 1:
Правим файл /etc/apache2/httpd.conf в любом редакторе, удаляем комментарии # в строке:

#LoadModule vhost_alias_module libexec/httpd/mod_vhost_alias.so

и ставим коммент на

#LoadModule userdir_module libexec/apache2/mod_userdir.so
#LoadModule alias_module libexec/apache2/mod_alias.so

Шаг 2:
Ищем строку:
# Supplemental configuration

и отключаем
# Fancy directory listings
#Include /private/etc/apache2/extra/httpd-autoindex.conf
# User home directories
#Include /private/etc/apache2/extra/httpd-userdir.conf
# Local access to the Apache HTTP Server Manual
#Include /private/etc/apache2/extra/httpd-manual.conf
# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf




Шаг 3:
добавляем строки после второго шага 2:

UseCanonicalName Off
VirtualDocumentRoot /Library/WebServer/Documents/%0
так настраиваем перенаправление для виртуальных хостов т.е. http://foo.homelinux.net -> /Library/WebServer/Documents/foo.homelinux.net/

Шаг 4:
Сохраняем файл и рестартуем апач (отключаем веб шаринг и включаем его снова).




Ну и наконец создаем необходимые директории для виртуальных хостов например для
foo.homelinux.net и bar.homelinux.net делаем следующие директории:

/Library/WebServer/Documents/foo.homelinux.net
/Library/WebServer/Documents/bar.homelinux.net

заливаем в них нужные файлы и все работает
если не работает смотрим вывод команды
apachectl -t
и правим httpd.conf


в дополнение я использую www.dyndns.org для своих хостов ( айпишник внешний но динамический)



среда, 24 сентября 2008 г.

Зеркалирование репозитариев Ubuntu

Команда Ubuntu apt-mirror используется для автоматического
создания зеркала репозиториев, указанных в файле /etc/apt/mirror.list.
sudo apt-get install apt-mirror
Можно закомментировать ненужные строки, поставив в их начало символ решетки (#).
Если же вы хотите загрузить только пакеты main и restricted, поместите решетку перед ‘universe’ или ‘multiverse’, чтобы закомментировать их.
С зеркала, расположенного в вашей стране, загрузка может проходить быстрее.
Отредактировав файл сохраняем его Ctrl+O Ctrl+X
Запускаем копирование выбранных репозитариев
sudo apt-mirror
В зависимости от сделанных вами изменений, размер загрузки может достигать 40 ГБ, если не больше! К счастью, apt-mirror запоминает, где остановился, если вы отменили его работу, не дождавшись конца, и вы можете выполнять загрузку несколько ночей, пока она не закончится. Все данные сохранятся в /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu и будут готовы к использованию.

Ubuntu уже позаботился о включении соответствующего задания Cron под названием apt-mirror, в закомментированном виде, в /etc/cron.d/.
По умолчанию установлено ежедневное обновление в 16-00, но вы можете изменить это как вам удобнее.

Теперь настраиваем Apache
Делаем ссылку
sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/ubuntu

рестартуем апач
sudo /etc/init.d/apache2 restart
Теперь можно использовать свой локальный репозитарий исправив /etc/apt/mirror.list на всех компьютерах локальной сети

пятница, 16 мая 2008 г.

How-to Apache2 и vhost_alias

ставим Apache
# apt-get install apache2
После установки у нас появилась директория /var/www (здесь расположен сайт по умолчанию. Все документы в этой директории доступны через броузер по адресу http://localhost/ или IP адресу сервера.

ставим PHP5 и MySql
# apt-get install libapache2-mod-php5
# apt-get install mysql-server
# apt-get install php5-mysql
рестартуем apache
# /etc/init.d/apache2 restart
Проверяем работу PHP
# echo "<?php echo phpinfo() ?>" > /var/www/info.php
смотрим броузером http://localhost/info.php и видим результат работы PHP.
если предлагается загрузить файл проверяем файлы /etc/apache2/apache2.conf или /etc/apache2/mods-enabled/php5.conf на наличие строки
AddType application/x-httpd-php .php .phtml .php3
если потребовались изменения делаем рестарт апача
# /etc/init.d/apache2 restart
Настраиваем Dynamic Virtual Hosting по именам сайтов (url):
разрешаем запуск модуля vhost_alias
# a2enmod vhost_alias
для того чтобы модуль заработал правим /etc/apache2/apache2.conf
отключаем canonical name ,если нужно настраиваем логи по каждому виртуальному хосту, и указываем директорию виртуальных хостов
# берем имя сервера из Host: header
UseCanonicalName Off
# директории с виртуальными хостами
VirtualDocumentRoot /var/www/vhosts/%0
VirtualScriptAlias /var/www/vhosts/%0/cgi-bin
создаем директорию для виртуальных хостов
# mkdir /var/www/vhosts
# chown -r www-data:www-data /var/www/vhosts
Создаем темплейт виртуального хоста и копируем туда например joomla 1.5
# mkdir -p /var/www/vhosts/template/cgi-bin

Рестартуем апач
# /etc/init.d/apache2 restart
Все готово для создания виртуальных хостов.
Просто копируем темплейт хоста в директорию с именем будущего сайта например для сайта www.mysite.ru
# cp -r /var/www/vhosts/template /var/www/vhosts/www.mysite.ru
теперь все HTTP запросы к серверу с Host-header www.mysite.ru будут перенаправляться на сайт в директории /var/www/vhosts/www.mysite.ru

Для того чтоб до сайта можно было добраться правим записи DNS
или правим /etc/hosts file и добавляем запись
127.0.0.1 localhost www.mysite.ru

понедельник, 14 апреля 2008 г.

Массовый хостинг с помощью mod_vhost_alias

Автор: Голышев С.В. (glsv)
e-mail: glsv@yandex.ru

В статье описывается работа с модулем Apache mod_vhost_alias. Данный модуль предназначен для уменьшения трудоемкости создания и поддержки большого количества виртуальных хостов на сервере Apache. Модуль организует динамическое создание виртуальных хостов на основе запрошенного доменного имени и не требует внесения изменений в конфигурационные файлы сервера при создании новых виртуальных хостов.

При большом числе виртуальных хостов (десятки и сотни) время запуска и перезагрузки веб-сервера занимает значительное время, в течение которого он недоступен посетителям. Такая ситуация является критической для хост-провайдеров и серверов на которых расположены популярные сайты. Уменьшить время запуска сервера и упростить работу c большим количеством виртуальных хостов может модуль Apache с названием mod_vhost_alias.

Данный модуль позволяет не создавать отдельный контейнер для каждого виртуального хоста, а динамически формирует пути к директориям сайтов на основе запрошенных доменных имен или IP-адресов. Для создания сотен виртуальных хостов модуль mod_vhost_alias использует всего 4 директивы, с помощью которых определяются правила формирования путей к директориям сайтов. 2 из них предназначены для работы с виртуальными хостами на основе имен и 2 для работы с виртуальными хостами на основе IP-адресов.

  • VirtualDocumentRoot – определение директории DocumentRoot на основе запрошенного доменного имени.
  • VirtualScriptAlias - определение директории для CGI-скриптов на основе запрошенного доменного имени.
  • VirtualDocumentRootIP– определение директории DocumentRoot на основе запрошенного IP-адреса.
  • VirtualScriptAliasIP- определение директории для CGI-скриптов на основе запрошенного IP-адреса.

В директивах модуля могут использоваться следующие параметры:

  • %% - символ %
  • %p – номер запрошенного порта
  • %N.M – имя хоста или часть имени, определяемая значениями N и M.

Параметр N определяет часть имени хоста, которое следует использовать. Параметр M определяет номер используемого символа из части N. Ниже показаны возможные значения параметра N и примеры на основе доменного имени www.st-host.ru.

Разбиение имен хостов на части происходит по символу точки слева направо. Т.е. для имени www.st-host.ru первой частью будет являться - www, а последней - ru.

%N Описание Пример
0% Полное имя www.st-host.ru
1% Первая часть имени www
2% Вторая часть имени st-host
3% Третья часть имени ru
-1% Последняя часть ru
-2% Предпоследняя часть st-host
%2+ Вторая и все поcледующие части st-host.ru
%-2+ Предпоследняя и все последующие части st-host.ru

Рассмотрим применение данных параметров на примере директивы VirtualDocumentRoot.

VirtualDocumentRoot /www/%-2/htdocs

При запросе по адресу http://www.st-host.ru директива VirtualDocumentRoot сгенерирует путь к файлу на основе запрошенного имени хоста и Apache будет искать файл на диске по адресу /www/st-host/htdocs/index.php

Параметр M определяет номер используемого символа в параметре N. При положительном значении M отсчитывается с левой стороны строки, при отрицательном – с правой стороны.

%N.M Пример
%0.1 w
%2.1 s
%2.2 t
%-2.1 s
%-2.-1 t

Ниже приведены примеры директивы VirtualDocumentRoot и сгенерированные пути для запроса http://www.st-host.ru/.

/www/%0/htdocs Путь: /www/www.st-host.ru/htdocs
/www/%-1/%-2/htdocs Путь: /www/ru/st-host/htdocs
/www/%-1/%-2.1/%-2/htdocs Путь: /www/ru/s/st-host/htdocs
/www/%-1/%-2.1/%-2.1%-2.2/%-2/htdocs Путь: /www/ru/s/st/st-host/htdocs

Если на сервере используется большое количество виртуальных хостов, то директории хранения сайтов удобно распределять по именам доменов первого уровня (ru, com, net, org и т.п.). При размещении нескольких сотен сайтов их можно распределять по папкам, имена которых соответствуют первым символам доменных имен.

Недостатки модуля mod_vhost_alias

Удобный способ создания виртуальных хостов с помощью модуля mod_vhost_alias не лишен ряда недостатков.

  • Нельзя разделить логи сервера по виртуальных хостам – все обращения к разным сайтам записываются в общий журнальный файл.
  • Для эффективного использования модуля mod_vhost_alias конфигурация всех виртуальных хостов должно быть одинакова. В противном случае, для настройки каждого виртуального хоста необходимо применять контейнер , что лишает модуль mod_vhost_alias своего основного преимущества.

Индивидуальная настройка виртуальных хостов, созданных mod_vhost_alias

Модуль mod_vhost_alias не имеет средств индивидуальной настройки виртуальных хостов и вследствие этого конфигурации всех виртуальных хостов, созданных модулем, получаются одинаковыми. При необходимости индивидуального конфигурирования виртуальных хостов применяется контейнер , в котором производится настройка работы Apache индивидуально для каждой директории.

Рассмотрим пример. Необходимо произвести уникальную настройку сайта www.mega-site.ru. При этом для создания виртуальных хостов используется модуль mod_vhost_alias со следующими директивами.

VirtualDocumentRoot /www/%-1/%-2/htdocs

Согласно директиве VirtualDocumentRoot файлы сайта www.mega-site.ru должны храниться в директории /www/ru/mega-site/htdocs. Для того чтобы настроить работу Apache для этой директории необходимо в файле httpd.conf создать следующие директивы.


# Директивы конфигурирования
# уникальные для сайта www.mega-site.ru

Внутри контейнера необходимо разместить директивы, которые необходимо применить к конкретному сайту (виртуальному хосту).

Примечание

Частичное конфигурирование виртуальных хостов можно производить также через файлы .htaccess, размещаемые непосредственно в директории сайта.

Русская версия English

воскресенье, 30 марта 2008 г.

Настраиваем Apache

Отдаем ява-скрипты и таблицы стилей в сжатом виде:


SetOutputFilter DEFLATE


Кешируем на стороне клиента файлы мультимедиа:


Header set Cache-Control «public»
Header set Expires «Thu, 15 Apr 2010 20:00:00 GMT»


Отключаем мехнизм ETag, который передает значение хеша файла и определяет изменился ли файл:

Header unset ETag
FileETag None

Отключаем заголовок Last-Modified:


Header unset Last-Modified


В почту пришел вопрос об ошибке:

Invalid command ’Header’, perhaps misspelled or defined by a module not included in the server configuration failed!

Для работы инструкции «Header» необходимо загружать модуль mod_headers:

LoadModule headers_module modules/mod_headers.so

Сервер после данных манипуляций будет гораздо быстрее отдавать контент.

Конвертация php-скриптов в статику

Предположим, у Вас есть сайт, созданный при помощи php-скриптов и базы данных MySQL. В определенное время сервер перестает нормально работать, так как перегружен посетителями - слишком много запросов.
Как быть? Искусственно ограничить запросы - это значит отбросить посетителей. Наращивать мощности сервера накладно. Оптимизировать скрипты нет времени.
Именно в таком случае поможет тотальная конвертация всего сайта в статический HTML код и отдача его при помощи nginx.

Прежде всего необходимо определить дискретность, с которой происходит обновление информации (допустим, раз в час) и выполнять зеркалирование сайта при помощи команды wget:
wget -m -q -k http://мой.домен/
После этого полученное зеркало синхронизируем с директорией, откуда файлы обрабатывает nginx (предположим, что это /usr/local/html):
rsync -tgu --delete --force мой.домен /usr/local/html
После чего осталось синхронизировать те файлы, которые wget не отзеркалит, например, *.js - java скрипты:
rsync -a --include '*/' --include '*.js' --exclude '*' /путь/к/файлам/сайта/ /usr/local/html/
Это все. Теперь осталось запускать этот код каждый час (или реже) и всю нагрузку возьмет на себя nginx.
Для того, чтобы сохранить доступ к админке CMS, необходимо повесить какой-то поддомен сайта на реальный IP и обращаться к нему.

Benchmark Apache

с Апачем идет тулза для его бенчмаркинга.
Запускаем:

ab -c10 -n500 http://mydomen.dom/index.php