This page is an archived copy on Gagin.ru personal site

InterNet magazine, number 16
Сюжеты | Вебстрой
Станислав Малышев

Под капотом сайта

Любому сайту нужна динамика. Прайс-лист должен быть сегодняшний, а не прошлогодний, посетитель должен иметь возможность высказать все, что думает, граду и миру. С чего начать, что и как выбирать? Советует профессиональный веб-строитель Станислав МАЛЫШЕВ, TheHobbit@usa.net

Время статического контента прошло. Сегодня хозяин каждого сайта хочет иметь какой-нибудь "живой" сервис - страницу "что нового?", курс доллара, дискуссию (она же - книга отзывов), беседу-чат, а то и собственный маленький магазинчик. И при этом не желает бегать каждый раз к кому-нибудь за обновлениями, платя за это деньги, а хочет сделать процесс внесения изменений доступным пониманию секретарши с компьютерным образованием на уровне "Ворда". Т.е. по сути, хочет именно того, что называется красивыми словами "динамический контент". Причем хороший динамический сайт служит сразу двум целям - с одной стороны, он обеспечивает пользователя актуальной и полезной информацией, а с другой - позволяет хозяину сайта поддерживать эту информацию действительно полезной и актуальной, не прилагая больших усилий и не переделывая сайт. Поэтому хороший сайт такого плана обычно состоит из двух частей - собственно лицевой, обращенной к читателю-посетителю, и внутренней, предоставляющей администратору (или той же секретарше) гибкий, мощный и в то же время понятный интерфейс для изменения содержания сайта.

Откуда же берутся эти сервисы, и как устроены динамические сайты?

Динамический сайт можно условно разделить на три части.

Первая - собственно сами данные и механизм их хранения. Это может быть база данных, набор файлов, библиотека CD - любое хранилище информации.

Вторая часть - это механизм передачи данных пользователю, в нашем случае - веб-сервер.

И третья, самая интересная, - то, что сводит эти компоненты друг с другом, вынимает данные из хранилища и формирует их в приемлемом для пользователя виде. Именно эта часть и реализует "динамичность" содержимого сайта.

Нужны ли на вашем сайте динамические элементы? Ответ однозначный - нужны. Динамический сайт заставляет пользователя возвращаться к вам еще и еще, чтобы увидеть, что же появилось новенького, а от вас не требуется каждый раз напрягать силы и выдумывать что-то невиданное и нестандартное.

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

Как же строить динамический сайт? Есть два подхода.

Первый - воспользоваться готовыми программами для построения динамических частей. Для самых распространенных, вроде гостевых книг, форумов, бесед-чатов, уже давно существуют готовые решения, как коммерческие, так и бесплатные. За ними стоит обращаться на "склады готовой продукции" - архивы программ, такие как CGI Resource Index (www.cgi-resources.com) или Matt's script Archive (worldwidemart.com/scripts/, непосредственный источник или прародитель по крайней мере половины всех гостевых книг и форумов) и многие другие.

Одна из популярных составляющих динамического сайта - каталог товаров, небольшой магазинчик или что-то подобное. Для создания каталога или магазина есть множество готовых программ (опять же, как бесплатных, так и за большие деньги), и все зависит от ваших потребностей. Скажем, для создания магазина как первый вариант могут подойти такие пакеты, как Shop Site, Miva Merchant или Minivend. Однако следует обратить внимание не только на возможности, предоставляемые пакетом, но и в не меньшей степени - на гибкость его настроек. По крайней мере, пакет должен позволять в широких пределах изменять оформление страниц, картинки и код HTML, а лучше - предусматривать и дополнительные программные вставки, например, на языке Perl. Следует также обратить внимание на поддержку языков - если вы строите сайт на русском, а все служебные сообщения будут на английском, или если алфавитный список товаров будет начинаться буквой "Ю" - красивый проект обернется грязной стройплощадкой. Профессиональные пакеты (вроде тех же Shop Site и Miva Merchant) предоставляют большинство этих возможностей, однако и стоят они немало - от $500 и выше, и при этом вам все равно может понадобиться помощь программиста. Есть также бесплатные решения, например, MiniVend. Этот пакет, конечно, стоит рассмотреть наравне с платными, но имейте в виду, что в этом случае полагаться вы можете только на себя. Чтобы установить и настроить эту систему (а параметров тут существенно больше, чем в аналогичных коммерческих решениях), нужно обладать достаточным уровнем знаний или достаточным количеством денег, чтобы нанять для этой цели профессионала.

Однако может случиться (и так случается часто), что ни одна существующая программа не подойдет для ваших целей. Вот пример из практики. Надо было построить систему магазинов, которая бы работала на трех языках (включая все надписи, названия и т.п.).

Ни один из рассмотренных пакетов этой возможности (во всяком случае, в виде какой-нибудь несложной настройки) не предоставлял. Учитывая, что в этой системе еще должен был быть клуб покупателей, двойная система оплаты (по кредитной карточке и за бонусные очки, которые выдаются за предыдущие покупки) и прочие нестандартные элементы - пытаться приспособить готовый пакет смысла не было. Было принято решение писать свою систему, так как затраты по приспособлению любой существующей были бы не меньшими. Результат - www.k2000.co.il.

Другой пример - нужна система новостей, с разделением новостей на тематические разделы, архивом и возможностью поиска. Подыскать аналоги оказалось нелегко, поскольку эта тема не настолько популярна - и, следовательно, выбор весьма ограничен. Ничего более-менее подходящего не нашлось, стали делать сами. В результате это решение оказалось верным: в процессе работы сайта заказчик неоднократно просил изменить формат выдачи, добавить или убрать определенные компоненты - приспособить под эти требования готовый пакет было бы весьма сложно, если вообще возможно. Потом понадобилось совместить эту систему новостей с рассылками "Городского Кота" (www.citycat.ru) - для вновь написанной программы это значило всего лишь добавить два десятка строк кода, поскольку все структуры данных и методы доступа к ним были известны. Результат - www.il4u.org.il.

Таким образом, если динамическая часть вашего сайта нестандартна и велика вероятность существенного расширения функций и модификации как внешнего вида, так и алгоритмов работы - стоит серьезно рассмотреть вариант построения сайта своими силами (или силами нанятых для этой цели профессионалов) без использования готовых интегрированных решений. Это вовсе не исключает использование специализированных компонентов как отдельных частей. Например, еще один случай из моей практики - сайт для онлайновой графологической экспертизы (www.online-graphology.com). Всю часть, управляющую собственно экспертизой, пришлось писать самостоятельно (это и была изюминка, know-how этого сайта), однако компонент, управляющий платежами, был взят готовым из поставки системы CyberCash (www.cybercash.com).

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

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

Что делать, если вы решили воспользоваться существующим пакетом, более-менее ясно. Заходите на сайт производителя, если продукт платный - покупаете, читаете документацию, устанавливаете, и можно начинать работу. А что делать, если вы решили делать сайт или его часть самостоятельно? Какими программами воспользоваться? Некоторые инструменты и полезные адреса я опишу ниже.

Рабочая лошадь любого веб-проекта - программа веб-сервера. Безусловным лидером здесь является Apache (www.apache.org) - самый распространенный в мире веб-сервер.

Его преимущества - мощность и гибкость (практически любую особенность его работы можно настроить как для всего сервера в целом, так и для отдельных каталогов или файлов), большое количество дополнительных модулей (modules.apache.org), расширяющих возможности сервера, авторизация пользователей через всевозможные механизмы - от баз данных до серверов NT, переносимость - Apache работает под всеми версиями Unix, под Win32 и под OS/2. Последнее позволяет, например, строить и отлаживать сайт на локальном компьютере, а переносить на основной веб-сервер уже готовый результат.

Еще один большой плюс Apache - отличная поддержка русского языка (проект Russian Apache, apache.lexa.ru). Сервер Russian Apache не только решит за вас проблемы кодировок русского языка, но и позволит вести разработку сайта одновременно в нескольких кодировках - незаменимое свойство в тех случаях, когда разработка сайта ведется на разных платформах с разными "родными" кодировками.

Установка Apache, вопреки распространенному среди непрофессионалов мнению, не представляет больших сложностей - существуют как готовые пакеты, устанавливаемые одной командой, так и подробные инструкции для компиляции и последующей установки из исходных текстов.

Что понадобится для динамической части сайта? Прежде всего, обратите внимание на язык Perl (www.perl.org, www.cpan.org). Perl является стандартом де-факто для написания веб-приложений. Сотни готовых коммерческих и некоммерческих веб-приложений используют Perl. Этот язык близок по своему синтаксису к С, однако, благодаря отсутствию жестких рамок типов и богатству типов данных и синтаксических конструкций, писать на нем значительно проще (а значит, быстрее). Perl - язык интерпретируемый, так что за исправлениями не следует каждый раз обязательный этап компиляции. Это может сыграть важную роль при программировании веб-приложений, когда доступ на сервер ограничен.

Огромное преимущество работы с Perl - наличие обширной библиотеки модулей CPAN. Многие модули из этой библиотеки (для создания CGI, работы с Интернетом и локальной операционной ситемой) включены в поставку Perl. Остальные могут быть легко скачаны и установлены. Библиотека CPAN, без преувеличения, содержит практически все функции, которые могут понадобиться программисту, - от интерфейса к любой из существующих СУБД до разбора HTML и от спряжения португальских глаголов до показа трехмерных конструкций VRML.

Важным качеством Perl является также переносимость - программу на Perl можно просто скопировать на другой компьютер и запускать, никаких дополнительных усилий не требуется (лишь бы был интерпретатор Perl, а он есть практически для любых платформ).

Если ваши динамические приложения требуют создания баз данных - а чаще всего так оно и будет - то вам понадобится СУБД. Коммерческие СУБД, как правило, слишком велики и слишком дороги для большинства веб-проектов малого и среднего уровня - выкладывать несколько тысяч долларов за возможность сохранить десяток таблиц просто бессмысленно. И тут хорошим выбором будет бесплатная СУБД MySQL (www.mysql.com). Ее достоинства - быстрота (тесты показывают, что это самая быстрая СУБД из существующих на рынке, включая и коммерческие), легкость в установке и использовании, широкая поддержка со стороны провайдеров (большинство серьезных провайдеров предлагают MySQL как один из компонентов пакета хостинга) и со стороны разработчиков (имеются интерфейсы для большинства языков программирования и поддержка стандартного протокола обмена данными ODBC), переносимость (существуют версии практически для всех платформ Unix и под Win32). Есть и минусы: так, условия лицензии разрешают бесплатное использование базы, но не продажу. Если вы продаете систему с интегрированной базой MySQL, придется заплатить разработчикам. Еще один недостаток - отсутствие поддержки некоторых "продвинутых" возможностей, таких, как транзакции, триггеры, пользовательские типы и функции.

Если ваш проект требует использования базы данных и вам не нужна вся мощь коммерческих баз данных (а для 90% веб-приложений это верно) - MySQL для вас идеальный выбор.

Альтернатива MySQL - PostgreSQL (www.postgresql.org). Это "свободная" СУБД, полностью поддерживающая стандарт SQL. Весьма удобна для приложений, предъявляющих базам данных повышенные требования. Если вы отказались от MySQL из-за недостатка возможностей, PostgreSQL может вам помочь.

Следующий компонент - средства интеграции. Это то, что делает из "мертвого" сайта "живой", то, что будет мостом между данными на вашем сайте и пользователями. Среди средств интеграции выделяется язык PHP3 (www.php.net). PHP3 - язык, специально разработанный для написания динамических страниц. Он похож на Perl и С, его команды встраиваются прямо в тело страницы (позволяя быстро и легко макетировать и изменять интерфейсы) управляют тем, какие данные будут показаны пользователю на этой странице. PHP3 имеет интерфейс к большинству существующих баз данных, а также большое число встроенных функций, реализующих часто встречающиеся при написании динамических страниц задачи (работа со строками, массивами, файлами, посылка и прием почты, математические функции и т.п.). Есть версии PHP3 практически под все виды Unix и Win32. Для человека, знакомого с HTML, С или Perl, освоение PHP3 - дело нескольких дней.

Очень многие провайдеры предлагают PHP3 как компонент хостингового пакета. PHP3 можно использовать как модуль сервера Apache или как отдельную программу (через CGI).

Если возможности PHP3 недостаточны, следующий вариант - mod_perl (perl.apache.org). mod_perl - механизм, позволяющий пользоваться всеми средствами языка Perl в среде сервера Apache. В частности, писать программы для CGI и модули на Perl, встраивать код на Perl в страницы сайта, использовать Perl в файлах конфигурации и управлять работой сервера средствами этого языка. Очень мощный и эффективный инструмент, но, как и всякий подобный инструмент, требует времени для освоения и аккуратности в использовании. Однако затраченное время будет с лихвой компенсировано исчерпывающими возможностями mod_perl и значительным увеличением скорости работы динамических страниц.

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


В оглавление номера This page is an archived copy on Gagin.ru personal site