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

Михаил Мельников

Установка Apache под Windows

 

Почему Apache?

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

 

Соединение 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-сервер сможет запустить внешнюю программу и, получив от нее ответ, отправить его обратно браузеру.

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

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

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

<!—# command param —>

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

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

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

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

Установка Apache под Windows

Перед тем, как приступить к установке, нужно, конечно же, обзавестись дистрибутивом. Все необходимые ссылки приведены в конце этой статьи, и, кроме того, дистрибутив у вас уже есть — он находится на компакт-диске.

В последнее время Apache поставляется в новом формате дистрибутивов от Microsoft — .msi (Microsoft Installer), и если у вас стоит версия Windows, отличная от WinMe или Win2000, то вам дополнительно придется скачать и установить программу-распаковщик (необходимые ссылки также есть в конце статьи). Для начала процесса инсталляции достаточно запустить msi-файл.

Перед началом установки инсталлятор попросит вас ввести несколько дополнительных сведений, и первое, что он спросит, — это название домена, сервера и электронного адреса администратора. В нашем случае значения этих переменных не принципиальны — мы ведь ставим сервер для локальной отладки динамических сайтов, а потому можем присвоить им любые значения. Впоследствии их можно будет легко подредактировать в настройках Web-сервера. В данном случае они понадобились инсталлятору для того, чтобы он смог сгенерировать работоспособный конфигурационный файл для запуска Apache. Посмотрите на скриншот с изображением диалога установки — здесь я выбрал в качестве имени домена и имени сервера слово «apache», а в качестве электронного адреса yourname@domain.com. По желанию вы можете заменить электронный адрес на свой.

Немного отвлечемся и поговорим о том, куда лучше всего установить Apache. Стандартное расположение «С:\Program Files\» в данном случае будет не очень удобным, и вот почему. Устанавливая Web-сервер на своем локальном компьютере, мы все же подразумеваем, что работать он будет у провайдера под UNIX-системой, а значит, нам лучше всего и у себя построить как можно более близкую к Web-серверу провайдера конфигурацию. Впоследствии это позволит нам избежать ненужных проблем с изменением путей в CGI-программах и HTML-формах. Стандартным каталогом для Apache в UNIX-системах является /usr/local/apache/.

Так что давайте разместим Apache по этому же адресу. Диск для установки можете использовать любой, но я буду рассказывать, исходя из предположения, что это диск С:

c:\usr\local\apache\

Дополнительно инсталлятор спросит у вас, каким образом ставить Apache — как одиночное приложение или как сервис. Последнее имеет смысл только при установке программы под WinNT или Win2000. Исходя из того, что большинство использует в качестве основной системы Win95/98/Me, я рекомендую выбрать способ ручного запуска Web-сервера. Те, кто использует систему на основе Windows NT, могут выбирать любой способ, но если вы не уверены в том, какой из них предпочесть, то остановите свой выбор на ручном запуске.

Удобно, что Apache ставит все нужные программы исключительно в свой каталог и его не нужно каждый раз устанавливать заново при очередной переустановке операционной системы. Если вы в точности следовали моим указаниям, то можете попробовать запустить Apache, воспользовавшись ярлыком в меню «Пуск», который любезно сгенерировал инсталлятор. К сожалению, в новой версии сервера теперь генерируется ярлык только для запуска Apache, но не для его остановки. Дело в том, что, запуская Apache как консольное приложение, нам необходимо точно так же, то есть в консоли, давать команду и на остановку Web-сервера. В противном случае есть вероятность некорректного завершения программы, что может повлечь за собой порчу файлов. Поэтому давайте подробнее остановимся на вопросе корректного запуска и остановки Apache.

Для запуска Apache достаточно просто дважды щелкнуть на запускаемом файле Apache.exe, а вот для того, чтобы его остановить, необходимо набрать в командной строке следующую строчку:

c:\usr\local\apache\apache.exe –k
   shutdown

Если вы решите проделать это вручную, вам придется запустить еще одну копию command.com, в которой вы введете вышеприведенную команду. Согласитесь, что каждый раз проделывать это достаточно неудобно, а потому мы слегка автоматизируем этот процесс. Есть два способа. Первый — создать два ярлыка к файлу Apache и указать в настройках нужные параметры для запуска и остановки Apache, а второй — написать два bat-файла следующего содержания:

1) start.bat

c:\usr\local\apache\apache.exe

2) shutdown.bat

c:\usr\local\apache\apache.exe –k shutdown

и разместить их, например, в каталоге с:\usr\local\. Этот способ кажется копией предыдущего, но на самом деле он более удобен, поскольку в будущем нам может понадобиться запускать вместе с Apache и другие программы  (например, базу данных MySQL), а наличие пакетных файлов позволит нам легко добавить строчку, запускающую такие программы. Для удобства пользования я бы рекомендовал создать и разместить на рабочем столе ярлычки на два этих файла.

После запуска Apache сверните консольное окно на панель задач и больше не отвлекайтесь на него — оно должно быть активным в течение всего сеанса работы с сервером. Теперь запустите свой любимый браузер и в адресной строке наберите:

http://localhost/

или:

http://127.0.0.1/.

Эти два варианта равноправны и должны работать оба. Если сервер функционирует как положено, то в окне браузера будет выведена первая страничка с документацией по Apache. Теоретически можно уже сейчас пробовать писать странички, размещать их в каталоге c:\usr\local\apache\htdocs\ и смотреть результат в браузере. Практически же это не совсем удобно, поэтому переходим к более тонкой настройке Apache.

Окончание следует

КомпьютерПресс 6'2001