72 (+1)

Apache & PHP - удобные технологии

Установка и конфигурирование web-сервера Apache
Подробное описание директив httpd.conf
Установка PHP под Windows

Поиск по сайтуДля желающих написать письмоПослать ссылку другуВерсия для распечатки


Соединение Apache и PHP в заголовке данной статьи не случайно. Именно связка этих двух технологий на данный момент представляет собой наиболее удобное решение для небольших и средних по размеру сайтов. Обе программы разрабатываются на принципах OpenSource и совершенно бесплатны. Любой желающий может скорректировать код под свои нужды. Впрочем, в этом нет необходимости - обе программы развиваются уже достаточно давно и большинство нужных возможностей уже реализовано. Над каждой из программ работает большая группа профессиональных программистов, оперативно исправляющая ошибки и добавляющая поддержку новых технологий. Давайте скажем им спасибо и с благодарностью воспользуемся плодами их трудов.

Я не буду "сталкивать" технологии друг с другом, доказывая, что PHP лучше или, наоборот, хуже, чем ASP, mod_perl, ColdFusion и т.д. - этот вывод вы сделаете сами. У меня другая цель - ознакомить Вас с этими технологиями и показать на конкретных примерах, каким образом, используя связку Apache плюс PHP, можно решать типичные задачи, возникающие при создании динамических web-сайтов.

Для начала мы совершим экскурс в историю и проследим, каким путем шло развитие серверного программирования, а потом вернемся в день сегодняшний - попробуем установить на локальном компьютере версии Apache и PHP для Windows.



Часть I

С чего все началось?

Изначально разрабатываемый по лицензии GNU, Apache в настоящее время стал самым популярным сервером. Более 60% узлов, поставляющих информацию в интернет, используют в качестве web-сервера именно Apache. Открытость кода пошла ему на пользу, и на данный момент это один из самых надежных и непрерывно развивающихся web-серверов. Он поддерживает все самые современные технологии и позволяет расширять свои функции за счет подключения внешних модулей.

Откуда взялось название Apache?


Несмотря на столь явную ассоциацию, ничего общего с индейцами данное название не имеет. Оно трансформировалось из фразы "A PAtCHy server". Patch в переводе с английского - "заплатка", а в программировании - "дополнение к программе, исправляющее некоторые ошибки или изменяющее поведение программы". Первоначальный код web-сервера был написан на основе нескольких уже существующих фрагментов кода, к которым и были добавлены несколько патчей. Вот так и возникло уже хорошо известное название Apache.

Имея web-сервер, можно легко запустить небольшой статический сайт, но чтобы создать сложный, динамический сайт, требуется применение дополнительных технологий, которые позволяют строить системы с применением баз данных и осуществлять взаимодействие с пользователем. Еще на заре WWW был придуман протокол, позволяющий броузеру и серверу обмениваться информацией. Этот протокол называется CGI, Common Gateway Interface - общий шлюзовый интерфейс. Для его использования необходимо написать внешнюю программу, призванную осуществлять всю необходимую логику. Сам же стандарт CGI описывает только механизм, при помощи которого web-сервер сможет запустить внешнюю программу, и получив от нее ответ, отправить его обратно броузеру.

Так выглядит заглавная страничка сайта http://httpd.apache.org/
В качестве языка программирования для написания CGI-программ может быть использован практически любой, но наибольшее распространение получил Perl. Благодаря его интерпретируемости скорость разработки и отладки на нем были гораздо выше, чем, к примеру, на C. Разумеется, это сказывалось на скорости выполнения программ, но для небольших скриптов, которые применяются на web-сайтах, это не было критичным.

При формировании сложной динамической странички (а она, как правило, состоит из нескольких фрагментов) необходим механизм, который позволяет встраивать результат работы внешней программы в код странички. Первой технологией, позволяющей осуществлять предварительную обработку кода странички на сервере, была SSI, Server Side Includes - включения на стороне сервера. Название прозрачное, не правда ли?

Страничка, разрабатываемая с применением этой технологии, использовала внутри своего кода специальные SSI-теги, которые web-сервер заменял на реальные данные непосредственно перед выдачей их броузеру. Для того чтобы сервер легко находил такие вставки, они предварялись специальной конструкцией:

<!--#command param -->

Как вы, наверное, заметили, серверный код помещался внутри HTML-комментария, так что даже в случае ошибки броузер получал корректный код и не обрабатывал команды сервера, принимая их за обычный комментарий. Впоследствии способ внедрения серверных команд прямо в HTML-код странички стал общепринятым, хотя и различающимся в разных технологиях. К примеру, ASP использует конструкцию <% %>, а PHP, к рассмотрению которого мы перейдем чуть позже, - <? ?>. Как видите, в процессе эволюции отказались от помещения команд внутри html-комментария - разумно рассудив, что в сложных страничках невозможность обработки серверных тегов не спасет положение и пользователь все равно не сможет увидеть адекватную по смыслу страничку.

Стандарт SSI определял всего несколько серверных команд и, по сути, позволял делать лишь простейшие операции: вставку фрагмента кода из внешнего файла, определение переменных и их обработку в простейших условиях сравнения. Но главное - SSI позволял запускать внешнюю программу и вставлять результат в код страницы. Внешней программой чаще всего служил скрипт, написанный на Perl. Таким образом, весь процесс создания сложного сайта делился на две части - написание HTML-кода страничек с нужными SSI-вставками и написание логики программы, в том числе и для доступа к базам данных при помощи внешнего языка программирования.

Так выглядит первая страничка официального сайта разработчиков PHP
Запуск нужной программы брал на себя Apache. Но как определить, что данная страничка является не обычной, а требует предварительной обработки сервером? Для этого в конфигурации сервера прописывается новое расширение и ему назначается соответствующий обработчик. Для сайтов, использующих SSI, практически стандартным стало расширение .shtml, и, встречая его, Apache уже понимает, что от него требуется. Справедливости ради стоит сказать, что расширение у странички может быть любым и его легко изменить в настройках сервера. А для страничек, использующих PHP, определен аж целый букет стандартных расширений - .php, .php3, php4, .phtml.

PHP является следующей после SSI ступенью и имеет на порядок больше возможностей. Новая технология совместила в себе гибкость SSI (позволив встраивать серверный код в HTML), и удобный синтаксис команд (расширив его до полноценного языка программирования, представляющего собой нечто среднее между C и Perl). Если поставить вопрос ребром и спросить: существует ли что-нибудь невозможное для осуществления в связке SSI+Perl, то ответ будет отрицательным - практически обе технологии позволяют сделать что угодно. В чем же тогда преимущества PHP? Я бы сказал, что они заключаются в скорости разработки и большом наборе функций, оптимизированных специально для создания web-сайтов. А кроме того, в механизме удобной отладки, выводящем сообщения об ошибках прямо в окно броузера.

История возникновения PHP


Началось это все, по меркам интернета, достаточно давно, а точнее - в 1994 году, когда Расмус Лердорф написал на Perl небольшую оболочку для отслеживания читателей своего резюме, расположенного на одном из сильно загруженных web-серверов. Именно это обстоятельство (я имею в виду загруженность) привело к тому, что Расмус переписал свои скрипты на языке C. Это позволило избавиться от затрат на запуск копии Perl при каждом обращении к страничке. Через некоторое время другие пользователи, также размещавшие свои резюме на этом сервере, обратили внимание на сценарии Расмуса и испросили разрешение на их использование.

Постепенно, как это всегда и бывает, пользователи стали присылать свои пожелания по расширению функций программы и включению в нее новых возможностей. В конце-концов Расмус Лердорф собрал дистрибутив, состоящий из исходных скриптов с добавлением новых функций, набора документации и FAQ-листа. Так родилась на свет версия PHP 1.0 (тогда, правда, нумерации еще не было). В то время PHP расшифровывалось как Personal Home Page, т.е. - набор скриптов для создания домашней странички. Впоследствии эта аббревиатура стала расшифровываться как PHP Hypertext Preprocessor (вот такое рекурсивное определение, подобное Linux - Linux Is Not UniX)

Спустя некоторое время возможности скриптов были значительно расширены. Был написан процессор сценариев, добавлены средства для обработки HTML-форм и возможность включения SQL-запросов прямо в текст странички. Модуль обработки форм был назван FI (Form Interpreter), новая версия получила название PHP/FI, а позднее - просто PHP2. Это произошло в середине 1995 года.

Постепенно задачи, возлагаемые на PHP, стали более сложными. Потребовалась полная переработка программы с целью повышения быстродействия и обеспечения более широкого набора возможностей. Так был запущен проект PHP3, и на этот раз за его разработку взялась уже целая команда во главе с Расмусом Лердорфом. Из важных нововведений можно отметить то, что синтаксис сценариев PHP был приведен к более стандартному виду и добавился API, позволяющий независимым разработчикам расширять возможности программы. С тех пор PHP стремительно развивается, завоевывая все большее количество поклонников. На данный момент вышла уже 4-я версия PHP, но по-прежнему широко используется и более младшая версия - PHP3.

Если вас заинтересовала эта статья, то, вы, вероятно, ищете технологию, которая позволит вам решить свои задачи. Наверняка рассматриваете и оцениваете разные варианты. Учиться и изучать новые технологии лучше всего на практике, а потому давайте попробуем поставить Apache и PHP на Ваш компьютер и разобраться со всеми проблемами, которые ждут нас на этом пути. И для изучения мы поставим их под Windows. Да-да, не удивляйтесь - открытость разработок обеих систем позволила создать их версии для большого количества операционных систем. В том числе и для Windows.

Честно говоря, советуя поставить Apache и PHP под Windows, я преследую и несколько иные цели: показать, что локальный web-сервер очень удобен для разработки и тестирования сайтов именно на платформе Windows. А уже отлаженный код можно переносить на целевую операционную систему. Причем, благодаря тому, что обе программы прекрасно работают на разных платформах, можно уже говорить о кросс-платформенной переносимости кода - о том, чего так не хватает ASP. Да, я знаю, что существуют программы, позволяющие использовать ASP на UNIX-серверах, но следует признать, что эта технология очень сильно связана с платформой Windows, и поэтому текущие версии для других операционных систем позволяют использовать лишь базовые возможности этой технологии.

Все же, рассказывая об оптимальной установке, я буду все время подразумевать, что основной операционной системой, на которой работает связка Apache+PHP, является один из клонов UNIX (обычно Linux).


Часть 1 - ее Вы читаете сейчасЧасть 2Часть 3Часть 4Часть 5Часть 6Часть 7


Свои мнения, пожелания и вопросы по выпускам Вы можете присылать по адресу mike@cherry-design.ru.
Я оставляю за собой право цитировать письма, пришедшие по вышеуказанному адресу.
Copyright © 2001-2008 Михаил Мельников. Перепечатка без разрешения запрещена.