Соединение Apache и PHP в заголовке данной статьи не случайно. Именно связка этих двух технологий на данный момент представляет собой наиболее удобное решение для небольших и средних по размеру сайтов. Обе программы разрабатываются на принципах OpenSource и совершенно бесплатны. Любой желающий может скорректировать код под свои нужды. Впрочем, в этом нет необходимости - обе программы развиваются уже достаточно давно и большинство нужных возможностей уже реализовано. Над каждой из программ работает большая группа профессиональных программистов, оперативно исправляющая ошибки и добавляющая поддержку новых технологий. Давайте скажем им спасибо и с благодарностью воспользуемся плодами их трудов. Я не буду "сталкивать" технологии друг с другом, доказывая, что PHP лучше или, наоборот, хуже, чем ASP, mod_perl, ColdFusion и т.д. - этот вывод вы сделаете сами. У меня другая цель - ознакомить Вас с этими технологиями и показать на конкретных примерах, каким образом, используя связку Apache плюс PHP, можно решать типичные задачи, возникающие при создании динамических web-сайтов. Для начала мы совершим экскурс в историю и проследим, каким путем шло развитие серверного программирования, а потом вернемся в день сегодняшний - попробуем установить на локальном компьютере версии Apache и PHP для Windows. |
Изначально разрабатываемый по лицензии GNU, Apache в настоящее время стал самым популярным сервером. Более 60% узлов, поставляющих информацию в интернет, используют в качестве web-сервера именно Apache. Открытость кода пошла ему на пользу, и на данный момент это один из самых надежных и непрерывно развивающихся web-серверов. Он поддерживает все самые современные технологии и позволяет расширять свои функции за счет подключения внешних модулей.
Имея web-сервер, можно легко запустить небольшой статический сайт, но чтобы создать сложный, динамический сайт, требуется применение дополнительных технологий, которые позволяют строить системы с применением баз данных и осуществлять взаимодействие с пользователем. Еще на заре WWW был придуман протокол, позволяющий броузеру и серверу обмениваться информацией. Этот протокол называется CGI, Common Gateway Interface - общий шлюзовый интерфейс. Для его использования необходимо написать внешнюю программу, призванную осуществлять всю необходимую логику. Сам же стандарт CGI описывает только механизм, при помощи которого web-сервер сможет запустить внешнюю программу, и получив от нее ответ, отправить его обратно броузеру.
При формировании сложной динамической странички (а она, как правило, состоит из нескольких фрагментов) необходим механизм, который позволяет встраивать результат работы внешней программы в код странички. Первой технологией, позволяющей осуществлять предварительную обработку кода странички на сервере, была SSI, Server Side Includes - включения на стороне сервера. Название прозрачное, не правда ли? Страничка, разрабатываемая с применением этой технологии, использовала внутри своего кода специальные SSI-теги, которые web-сервер заменял на реальные данные непосредственно перед выдачей их броузеру. Для того чтобы сервер легко находил такие вставки, они предварялись специальной конструкцией: <!--#command param --> Как вы, наверное, заметили, серверный код помещался внутри HTML-комментария, так что даже в случае ошибки броузер получал корректный код и не обрабатывал команды сервера, принимая их за обычный комментарий. Впоследствии способ внедрения серверных команд прямо в HTML-код странички стал общепринятым, хотя и различающимся в разных технологиях. К примеру, ASP использует конструкцию <% %>, а PHP, к рассмотрению которого мы перейдем чуть позже, - <? ?>. Как видите, в процессе эволюции отказались от помещения команд внутри html-комментария - разумно рассудив, что в сложных страничках невозможность обработки серверных тегов не спасет положение и пользователь все равно не сможет увидеть адекватную по смыслу страничку. Стандарт SSI определял всего несколько серверных команд и, по сути, позволял делать лишь простейшие операции: вставку фрагмента кода из внешнего файла, определение переменных и их обработку в простейших условиях сравнения. Но главное - SSI позволял запускать внешнюю программу и вставлять результат в код страницы. Внешней программой чаще всего служил скрипт, написанный на Perl. Таким образом, весь процесс создания сложного сайта делился на две части - написание HTML-кода страничек с нужными SSI-вставками и написание логики программы, в том числе и для доступа к базам данных при помощи внешнего языка программирования.
PHP является следующей после SSI ступенью и имеет на порядок больше возможностей. Новая технология совместила в себе гибкость SSI (позволив встраивать серверный код в HTML), и удобный синтаксис команд (расширив его до полноценного языка программирования, представляющего собой нечто среднее между C и Perl). Если поставить вопрос ребром и спросить: существует ли что-нибудь невозможное для осуществления в связке SSI+Perl, то ответ будет отрицательным - практически обе технологии позволяют сделать что угодно. В чем же тогда преимущества PHP? Я бы сказал, что они заключаются в скорости разработки и большом наборе функций, оптимизированных специально для создания web-сайтов. А кроме того, в механизме удобной отладки, выводящем сообщения об ошибках прямо в окно броузера.
Если вас заинтересовала эта статья, то, вы, вероятно, ищете технологию, которая позволит вам решить свои задачи. Наверняка рассматриваете и оцениваете разные варианты. Учиться и изучать новые технологии лучше всего на практике, а потому давайте попробуем поставить Apache и PHP на Ваш компьютер и разобраться со всеми проблемами, которые ждут нас на этом пути. И для изучения мы поставим их под Windows. Да-да, не удивляйтесь - открытость разработок обеих систем позволила создать их версии для большого количества операционных систем. В том числе и для Windows. Честно говоря, советуя поставить Apache и PHP под Windows, я преследую и несколько иные цели: показать, что локальный web-сервер очень удобен для разработки и тестирования сайтов именно на платформе Windows. А уже отлаженный код можно переносить на целевую операционную систему. Причем, благодаря тому, что обе программы прекрасно работают на разных платформах, можно уже говорить о кросс-платформенной переносимости кода - о том, чего так не хватает ASP. Да, я знаю, что существуют программы, позволяющие использовать ASP на UNIX-серверах, но следует признать, что эта технология очень сильно связана с платформой Windows, и поэтому текущие версии для других операционных систем позволяют использовать лишь базовые возможности этой технологии. Все же, рассказывая об оптимальной установке, я буду все время подразумевать, что основной операционной системой, на которой работает связка Apache+PHP, является один из клонов UNIX (обычно Linux).
Свои мнения, пожелания и вопросы по выпускам Вы можете присылать по адресу mike@cherry-design.ru.
Я оставляю за собой право цитировать письма, пришедшие по вышеуказанному адресу. Copyright © 2001-2008 Михаил Мельников. Перепечатка без разрешения запрещена. |
||||||||||||||||||||||||||
![]() |