LXF84:Apache
(викификация, оформление) |
Текущая версия на 14:34, 29 января 2009
|
|
|
- Новая серия! Web-сервер Apache для начинающих web-мастеров и администраторов
Содержание |
[править] Apache: друг "бледнолицых"
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- ЧАСТЬ 1: По данным http://www.netcraft.com, более 60% web-серверов по всему миру работают под управлением Apache. Причиной такой популярности является непревзойдённая гибкость и мощь этого сервера наряду с высокой скоростью работы. Сергей Супрунов поможет вам принять его на службу...
[править] Немного истории
В начале 90-х годов прошлого века основным сервером только-только зарождающейся Всемирной паутины был httpd, в разработке которого активное участие принимал Национальный Центр Суперкомпьютерных Приложений (NCSA). Однако, когда в 1994 году проект покинул один из ведущих разработчиков, работы были свернуты. К счастью, NCSA был правительственной организацией, и он не старался заполучить себе все права, так что исходный код httpd был доступен всем желающим. Благодаря этому даже после официально- го закрытия проекта люди продолжали писать к серверу исправления, дополнения и т.д.
И вот в начале 1995 года Брайан Белендорф (см. LXF80) и Клиф Скольник, взяв за основу последнюю версию httpd, выпущенную NCSA, и применив к ней огромное количество найденных в сети патчей, выпустили первую версию того, что ныне известно под именем Apache [Собственно, название происходит от «A patchy server» – пропатченный сервер, – прим.ред.]. С тех пор сервер активно развивается, и сейчас является одним из самых успешных открытых проектов.
[править] Установка
В настоящее время идет разработка трех ветвей сервера – Apache 1.x (текущая версия – 1.3.37) и две ветки Apache 2.x (последние версии - 2.0.59 и 2.2.3 соответственно). Конкретные дистрибутивы могут содержать более ранние версии.
Если Apache включен в состав вашего дистрибутива или доступен для установки из репозитория, предпочтительно использовать эту возможность. Впрочем, при необходимости инсталляцию можно выполнить и из исходных кодов. В данной статье я использовал версию 2.0.55, установленную в Ubuntu с помощью Synaptic. Про инсталляцию из исходных текстов рассказано в «Ручная работа».
[править] Ручная работа
Менеджер пакетов, это, конечно, хорошо. Но какой же настоящий линуксоид не попробует хотя бы раз в жизни поставить что-то из исходников? Благо, и повод у нас для этого весьма благородный – хочется 2.2.3, а в репозитарии есть только 2.0.55. Так что – в путь!
1. Скачайте архив с последней версией с сайта http://httpd.apache.org:
wget http://apache.rinet.ru/dist/httpd/httpd-2.2.3.tar.bz2
2. Распакуйте его в свой домашний каталог:
tar xvjf httpd-2.2.3.tar.bz2
3. Сконфигурируйте исходный код:
cd httpd-2.2.3 ./configure --prefix=/usr/local/apache22
С помощью --prefix мы изменили каталог установки, чтобы случайно не затереть уже установленный 2.0.55. С помощью опций enable/disable вы можете изменить «умолчательный» состав модулей, которые будут собраны в основном двоичном файле.
4. Наконец, традиционная сборка и инсталляция:
make sudo make install #
или
su -c ‘make install’
в дистрибутивах, отличных от Ubuntu
[править] Настройка
К сожалению, разработчики дистрибутивов пока не пришли к единому мнению на счет того, как же лучше именовать те или иные файлы. В «чистом» пакете, скачанном с http://Apache.org, предполагается, что основной двоичный файл именуется httpd, главный файл конфигурации – httpd.conf, а утилита управления - Apachectl. То есть так, как это принято и в версиях 1.х.
Однако в некоторых дистрибутивах применяют несколько иные схемы. Например, Ubuntu, Knoppix (да, похоже, и все семейство Debian) размещают конфигурацию в /etc/Apache2, а главный файл конфигурации называется Apache2.conf. Файл httpd.conf тоже присутствует, но используется в основном для обратной совместимости. А, скажем, Fedora Core придерживается на сей счет более «официальной» точки зрения, и размещает основной файл настройки в /etc/httpd/conf/httpd.conf, с той лишь разницей, что часть вспомогательных настроек вынесена в отдельные файлы в каталоге conf.d.
В принципе, вариантов не так уж и много, и свой конфигурационный файл, думаю, вы отыщете без труда. В дальнейшем я буду ссылаться на него как на Apache2.conf, так что не забывайте вносить соответствующие поправки...
Итак, заглянув в Apache2.conf, вы увидите там несколько видов строк:
- начинающиеся с символа «#» - это комментарии, они игнорируются при анализе файла и служат лишь для пояснения нижележащих опций;
- начинающиеся с «<» - это синтаксические конструкции, разделяющие конфигурационный файл на так называемые секции;
- обычные директивы вида «имя значение».
Секции тоже можно условно разделить на два типа: «ограничители» и «условия». Первые ограничивают область действия заключенных в них директив. Например, секция <Directory /var/www/special> будет влиять только на запросы файлов, размещенных в указанном каталоге. Секция <Location /server-status> будет отвечать за запросы ресурса с URL вида http://yourserver.ru/server-status/... Секция <Limit GET> окажет влияние только на GET-запросы. К этому же виду секций можно отнести и виртуальные хосты, с которыми мы познакомимся чуть позже.
Секции-условия позволяют применять те или иные директивы только в том случае, если выполняется некоторое условие, например, если подключен конкретный модуль: <IfModule prefork.c>. Причем влияют эти директивы на конфигурацию всего сервера (или той секции-ограничителя, в которую вложена данная секция-условие).
Директивы отвечают за самые различные аспекты поведения web-сервера – от прослушиваемых портов до подключения модулей и обработчиков (handlers). Обращайте особое внимание на директивы Include, которые позволяют вставлять в текущий файл настройки строки из других файлов (особенно этим «грешит» Ubuntu). Другие важные для нас директивы будут рассмотрены по ходу дальнейшего изложения.
[править] Первая страничка
Перейдем к практике. Apache мы поставили и даже можем увидеть его тестовую страницу, если введем в браузере http://yourdomain.ru (если вы ставите сервер на той же машине, на которой работаете, то можно ввести http://localhost). Опять-таки, в зависимости от дистрибутива, это может быть либо страничка с «перышком», либо оглавление каталога (как в Ubuntu), либо просто строчка «It works!» (как в официальном пакете). Давайте посмотрим, откуда она берется.
В конфигурационном файле отыщите строку DocumentRoot - она укажет вам на каталог, который Apache считает корневым для сайта. В зависимости от дистрибутива и способа инсталляции это может быть /var/www, $prefix/htdocs (где $prefix - каталог, куда выполнялась установка), /var/www/html. В нем вы должны найти файл с именем index.html. Если вы вернетесь к конфигурации и найдете строку DirectoryIndex, то убедитесь, что файл с таким именем и должен возвращаться на запрос, в котором конкретное имя ресурса не указано. Таким образом, чтобы вместо этой открывался ваш html-файл, просто замените им индексный (главное, чтобы он был доступен для чтения пользователю www-data, с правами которого обычно работает Apache). Впрочем, никто не запретит вам указать здесь свой каталог.
[править] Автоиндекс
А что Apache будет делать, если в каталоге отсутствует индексный файл? Это также зависит от настроек. По умолчанию сервер собирается с поддержкой модуля mod_autoindex (для проверки выполните команду Apache2 -l или httpd -l, в зависимости от имени исполняемого файла в вашем дистрибутиве), так что Apache, используя его возможности, автоматически построит страничку-оглавление со ссылками на все файлы, содержащиеся в запрошенном каталоге. С помощью директивы IndexOptions можно подстраивать вид этой страницы.
Данная функция удобна для создания каталога файлов или чего-то еще, организованного по принципу FTP-сервера. Но если вы считаете такую возможность излишне опасной (не всегда и не всем нужно показывать, что и где у вас лежит), то этот модуль можно отключить:
Options -Indexes
Кстати говоря, директива Options очень важна и для других аспектов безопасности. Обязательно ознакомьтесь с ней подробнее в документации. После изменения конфигурации не забудьте перезагрузить сервер: Apachectl restart (в некоторых дистрибутивах эта утилита называется Apache2ctl).
[править] Домашние страницы
Вы, имея привилегии root в системе, можете без ограничений править свою интернет-страничку. Но что, если вы хотите предоставить такую возможность своему другу, который зарегистрирован в вашей системе, но без прав суперпользователя? Не давать же ему неограниченный доступ?
Для решения этой задачи предназначен модуль mod_userdir. Если он подключен, то вы можете указать в конфигурации такой фрагмент (скорее всего, он там уже есть, но закомментирован):
UserDir public_html
<Directory /home/*/public_html>
Options Indexes
AllowOverride Indexes
</Directory>
Здесь мы указываем, что при получении запроса вида http://yourserver.ru/~vasya нужно открывать индексный файл из домашнего каталога пользователя vasya, т.е. из /home/vasya/public_html. Ну а там Вася пусть делает все, что ему захочется. Чтобы он не сильно шалил, его возможности можно ограничить в последующей секции <Directory> для каталогов, соответствующих указанной маске (в примере мы устанавливаем ему опцию Indexes и позволяем ее переопределять самому). Кстати, о переопределении конфигурации...
[править] Файл .htaccess
Конфигурационный файл позволяет настроить любые опции для любого каталога. Но здесь есть два неудобства – во-первых, для его редактирования нужны права суперпользователя, и во-вторых, после каждого изменения нужно перегружать сервер (для чего, опять-таки, нужно обладать правами root).
Apache позволяет управлять параметрами доступа к каталогам более гибко - путем размещения в них специальных файлов, обычно с именем .htaccess. Если для данного каталога действует опция AllowOverride All, то в .htaccess-файле можно указывать практически любые опции, допустимые для секции <Directory>. Однако администратор может ограничить эти возможности, задав более жесткие ограничения, как в примере выше.
Учтите, что использование .htaccess существенно повышает нагрузку на сервер – для каждого запроса серверу придется проверять наличие этого файла в каждом каталоге от корня файловой системы до месторасположения запрошенного файла, так что если в них нет острой необходимости, лучше пользуйтесь общим файлом конфигурации. Полностью запретить эти файлы можно с помощью директивы AllowOverride None.
[править] Виртуальные хосты
Домашние странички пользователей достаточно удобны для задач «домашнего» уровня. Но Apache предоставляет более мощное средство размещения нескольких сайтов на одном сервере (и под одним IP-адресом) - виртуальный хостинг. Рассмотрим простейший пример:
NameVirtualHost 127.0.0.1 <VirtualHost localhost> DocumentRoot /var/www/localhost </VirtualHost> <VirtualHost toshiba> DocumentRoot /var/www/toshiba </VirtualHost>
Здесь мы указали, что у нас будут виртуальные хосты по адресу 127.0.0.1, и дальше перечисляем секции <VirtualHost> для каждого доменного имени. В этих секциях обязательно нужно указать корень сайта (DocumentRoot) и, при желании, любые другие настройки. Разместив в указанных каталогах индексные файлы с различным содержанием, вы получите два сайта, открывающиеся в зависимости от того, какое доменное имя будет указано в запросе.
Чтобы виртуальный хостинг работал правильно, все доменные имена должны быть описаны на сервере DNS (для тестирования будет достаточно файла /etc/hosts), а браузер клиента должен поддерживать протокол HTTP/1.1, так как HTTP/1.0 не поддерживает поле Host: заголовка, в котором и передается имя домена. А поскольку запрос направляется по IP-адресу, то для Apache это поле - единственный способ узнать, какой же из сайтов запрашивается клиентом.
Изложенных сегодня сведений должно быть достаточно, чтобы начать работать с Apache и создавать несложные статические странички. Главное - не бойтесь экспериментировать! LXF

