Движок в 1000 лошадей (SQL – базы)
Дата: 18/03/2005 Тема: Все, что связано с Глобальной сетью
Что такое простейший сайт? Это HTML-файлы и
картинки, связанные гиперссылками. И каждый,
кому приходилось производить на таком сайте
какие-либо изменения, согласится с тем,
что он крайне неудобен для обновле-
ния и поддержки.
Статика и динамика
Предположим, что в связи с наступлением нового года вы хотите поменять
на сайте шапку. Для этого вам нужно
вручную произвести изменения на всех
страницах сайта, не сделав нигде ни одной ошибки. А если вы захотели полностью сменить дизайн? Это равносильно
созданию всего сайта заново, с нуля.
Хорошо еще, если это домашняя страничка, состоящая из десятка небольших документов. Мне же, например,
приходилось работать с корпоративным сайтом, примерный объем которого — полторы тысячи страниц, причем
все без исключения представляли
собой самостоятельные HTML-документы.
Стоит ли говорить, что с весьма устаревшим дизайном этого сайта невозможно теперь что-либо сделать? Создание же
нового сайта с переносом всей информации обойдется компании в сумму, которую она пока не готова изыскать.
Другая проблема — постоянное обновление информации. Даже на небольшом
корпоративном сайте, допустим, при добавлении новости или очередного прессрелиза придется делать несколько изме-нений, причем прямо в HTML-коде, что
исключает участие в непосредственной
работе на сайте составителей текстового
наполнения (как правило, менеджеров)
и отнимает время у веб-мастеров или администраторов, зачастую занятых более
важными вещами.
Ну и разумеется, никак нельзя обойтись
статическими документами в случае, если
на сайте планируется какая-либо обратная связь, допустим, комментарии посетителей по поводу той или иной статьи
или голосование. В блогах (weblog, онлайновый дневник), например, вообще все
содержимое состоит из сообщений, оставленных посетителями.
Движок
Итак, мы видим, что
создание современного веб-сайта при помощи
традиционных
статических
HTML-доку-
ментов в подавляющем большинстве случаев невозможно.
Большая часть
всех страниц,
пусть даже с неизменным содержимым, все равно
должна собираться
динамически — из-за наличия меняющихся меню, элементов оформления и т. д. Такой сайт
скорее представляет собой не набор документов, а программу, работающую на
сервере. Базовая часть этой программы,
не зависящая ни от оформления, ни от
конкретных данных, называется движком сайта.
Хотя, вообще говоря, определение
движка сайта весьма и весьма размыто.
Этими двумя словами можно, помимо всего прочего, называть и простой
механизм, благодаря которому осуществляется разделение текстового содержания и оформления. Такой механизм
может вообще не использовать никаких
скриптов на стороне сервера, а быть реализованным с помощью простых технологий, например SSI, по умолчанию
поддерживаемой веб-сервером Apache.
Однако чаще под словами «движок сайта» понимают нечто большее — систему,
предоставляющую мощные и гибкие
средства для публикации и управления
содержимым (CMS — content management
system), легко расширяемую, использующую базу данных и т. д.
Если говорить кратко, CMS — это
то, ради чего движок нужен людям, которые будут поддерживать сайт и наполнять его текстом. Обычно она предоставляет средства для добавления,
редактирования и удаления материалов
на сайте, создания новых разделов, импорта информации из внешних источников и так далее. Система работы с содержимым должна быть устроена так,
чтобы управление информацией не
требовало знания HTML и понимания
внутреннего устройства веб-сайтов, что
существенно снижает временные и финансовые расходы на поддержку. Без
CMS просто невозможно существование крупного проекта с солидным количеством материала, поэтому она является важнейшей частью и смыслом
любого движка.
Сложность выбора
В поисках готового движка вы неизбежно столкнетесь с проблемой выбора —
бесплатных решений в Сети предостаточно, но как выбрать из них
наилучший вариант? Для того чтобы
сравнивать движки по какому-нибудь
критерию, необходимо понимать для
начала, какие вообще в данном случае
могут быть критерии.
Обычно движок — это набор различных скриптов, написанных на какомлибо скриптовом языке, например
PHP, такой как PHP-Nuke (www.phpnuke.ru) и множество его клонов, либо
на «серьезном» языке программирования, например Java, как Opencms
(www.opencms.org). По сути, большая
часть этих движков внутри устроена
примерно одинаково. Различия состоят
в конкретных реализациях того или
иного механизма и наборе доступной
функциональности.
Шаблоны и информация
В основе любой системы, позволяющей
управлять текстовым наполнением сайта, лежит достаточно очевидный принцип разделения информации и ее
оформления (в отличие от HTML-
документа, где информация размечена
тегами, то есть все лежит вперемежку
в одном файле). Организация такого
разделения — главная часть архитектуры движка. Благодаря ему возможно
достичь абстракции внутренней работы
сайта от его внешнего вида, что и позволяет использовать движок в сколь
угодно большом количестве похожих
проектов.
Само собой разумеется, если оформление и текст разделены, то какая-то
часть движка должна их собирать, чтобы показать посетителю сайта готовую
страницу. Эту функцию выполняет
процессор (или парсер) шаблонов —
тоже очень важная часть движка. Весь
дизайн сайта хранится в виде шаблонов — составных частей конечных
HTML-страниц. Они содержат HTMLкод и код процессора шаблонов, синтаксис которого специфичен для каждого движка. К примеру, для того чтобы
вставить в шаблон список из множества
элементов, необходим цикл, а для создания дружелюбного меню — еще и
ветвление, сравнение каждого элемента
с текущей страницей.
Вообще говоря, некоторые популярные, весьма неплохие решения, к примеру интернет-магазин Oscommerce
(www.oscommerce.com), до сих пор не
имеют поддержки шаблонов. Дизайн
его страниц перемешан в PHP-скриптах
вместе с кодом, что сильно затрудняет
изменение внешнего вида. Вся информация при этом, конечно же, хранится в SQL-базе, благодаря чему разделение оформления и данных все же
имеет место быть.
Структура и хранилище данных
В нашем контексте любой сайт — это
информация, размещенная на его
страницах. В случае статического ресурса, состоящего из одних лишь
HTML-документов, эта информация
может быть совершенно различной,
может не быть структурирована, может
содержать всевозможные типы данных
(таблицы, картинки, списки, ссылки) и
так далее. «Платой» же за удобства использования движка является вполне
определенная структура данных, свойственная ему. Иными словами, вы никак не сможете прицепить к описанию
товара в вашем магазине две картинки,
если движок позволяет прицепить всего одну.
Логично предположить, что чем гибче
и универсальнее структура данных,
тем сложнее и запутаннее будет выглядеть окончательный вариант CMS.
В пределе, в отсутствие какой-либо структуры, мы возвращаемся к сайту из HTMLфайлов со всеми его трудностями в плане поддержки.
Хранилищем информации служит
база данных. Обычно это какая-либо
распространенная SQL-база, но существуют и полноценные портальные
движки, использующие в качестве хранилища текстовые файлы, — GuppY
(www.freeguppy.org), Siteman (http://sitem.
sourceforge.net). Главное преимущество
«нормальной» базы — высокая производительность, а также гарантии целостности данных. Из плюсов текстовой базы
можно отметить разве что дешевизну
хостинга (тарифные планы без базы обходятся дешевле стандартных), да еще в
некоторых вариантах возможность непосредственного доступа к информации путем простого редактирования файлов.
Другие функции
Прочие функции движка можно назвать дополнительными, несмотря на
то что они бывают не менее важны для
проекта и их отсутствие может стать
критичным.
Например, поиск по сайту. Весьма
вероятно, что, если вам нужен компактный сайт с небольшим количеством информации, поиск по нему не понадобится. Несколько разделов с текстовыми материалами, иллюстрациями,
немного табличек — искать просто-напросто нечего. Однако если вы создаете, к примеру, архив статей по определенной тематике, то хотя бы самый
простой механизм поиска необходимо
предусмотреть.
Функция поиска может быть реализована по-разному, в зависимости от
типа основной информации на сайте.
Поиск по форуму, например, имеет одну, вполне определенную форму, в которой, как правило, предлагается найти
сообщения какого-либо автора в заданном промежутке времени, содержащие
определенные слова. В написанном же
недавно мной узкоспециализированном движке была предусмотрена возможность создавать множество разнообразных небольших форм поиска и
подставлять их в любое место любого
шаблона.
Возможности аутентификации. Вообще говоря, CMS сразу предполагает
наличие как минимум двух ролей на
сайте — посетитель и администратор.
Поэтому в данном случае под словом
«аутентификация» я понимаю наличие
регистрационных записей пользователей и возможности распределения прав
доступа к разделам сайта между группами пользователей. Очевидно, что
движки блогов и форумов вообще не
могут обойтись без функции авторизации, однако для создания многих других типов сайтов она совершенно не
понадобится.
Для движков новостных сайтов жизненно важно иметь хорошо продуманные
средства кеширования. Как правило, движок кеширует конечные страницы, например, сохраняя их в виде статических
документов, которые и выдаются пользователю. Некоторые системы умеют кешировать результаты запросов в базу
данных, а некоторые — даже результат
работы отдельных кусочков кода.
Установка
Большинство бесплатных решений из
попадавшихся мне были весьма просты
в установке. Скачайте архивный файл,
распакуйте, найдите руководство по
установке и внимательно прочитайте.
В любом случае для начала необходимо
будет закачать распакованный архив в
рабочую папку на сервере. Как правило,
разработчики движка, понимая, что работать с ним будет человек, не сильно
искушенный в программировании и администрировании баз данных, пишут
специальный мастер установки, запускаемый через браузер, так что вам останется только заполнить формы нужной информацией и нажать «ОК».
Для установки большинства движков
вам потребуется вводить вполне очевидные настройки: адрес электронной почты администратора, название ресурса,
его URL и так далее.
Специализированный движок, представляющий собой обычный набор
скриптов, прост в установке и дает вам
возможность вольготного выбора хостинга. Его нетрудно слегка исправлять
и переделать «под себя», так как он написан на распространенном и наверняка знакомом вам языке. Разумеется,
есть у такого подхода и недостатки. Недостатком я считаю то, что любое такое
решение жестко привязывает владельца
сайта к своей структуре данных и своему способу подачи информации. С учетом того, что найти движок, абсолютно
точно соответствующий вашим потребностям, практически невозможно,
это может стать проблемой. С другой
стороны, написать свою систему с нуля
далеко не всегда представляется целесообразным.
Часто такая проблема возникает при
создании вертикального портала, то
есть портала по какой-то определенной
тематике, когда на сайте необходимо
реализовать специфический набор конкретных функций. Именно поэтому наиболее распространенные портальные
движки построены по модульному принципу, то есть сам движок выполняет
лишь базовые функции, о которых я
упоминал выше, а разнообразный набор
возможностей заключен в модулях, которые можно к нему подцеплять. Разумеется, таким образом можно построить
сайт любого типа, не только портал. Хорошими примерами таких бесплатных
движков являются популярный и простой PHP-Nuke, его клон Postnuke
(www.postnuke.ru), e107 (e107.org.ru),
очень гибкое и качественное решение
Xaraya (www.xaraya.ru) — список можно
продолжать довольно долго.
Ко многим из них можно дописывать
свои собственные модули и реализовывать дополнительную функциональность самостоятельно. Кроме того, в
случае использования особо популярных движков написания модулей от вас
этого и не потребуется — их можно скачать в Сети и начать использовать,
предварительно установив и настроив.
Нестандартный подход
Далее я хотел бы рассказать о программных продуктах, которые используют качественно иной подход, нежели
наборы скриптов. В сущности, это скорее не движки, а решения, которые по-
могут вам создать свой собственный
динамический сайт быстрее и проще,
нежели с использованием общепринятых технологий.
Например, детище Студии Лебедева —
Parser. По большому счету, Parser — это
очень сильно модернизированный
процессор шаблонов, то есть одна
только часть «обычного» движка. Однако возможности этого процессора
шаблонов весьма и весьма впечатляют.
Во-первых, изменяется сам принцип
публикации документов — Parser можно назвать объектно-ориентированным языком, и вложенные страницы
могут, что называется, наследовать от
родительских все, вплоть до содержимого. Есть и одно важное но: так как
это именно язык, то, разумеется, в нем
нет ни структуры данных, ни, соответственно, CMS.
Главная проблема, которая встанет
перед вами, если вы надумаете использовать Parser, — это хостинг. В идеале
Parser устанавливается как модуль к вебсерверу Apache, однако для этого вам,
скорее всего, потребуется наличие в Интернете собственного сервера. Существует и решение проблемы — Parser можно
установить как CGI-приложение, скачав
бинарный файл, соответствующий операционной системе хостера, и перенастроив
.htaccess. В результате вы проиграете в быстродействии и лишитесь некоторых
возможностей кеширования, однако во
многих случаях это не имеет особого значения. Таким образом, можно считать
Parser практически идеальным инструментом для быстрого создания небольших и несложных сайтов.
Другой оригинальный и популярный
продукт — это Zope. Разработчики Zope
пошли дальше Студии Лебедева и написали полноценную платформу, объединяющую веб- и FTP-серверы, простую
SQL-базу, процессор шаблонов и много
других интересных вещей. Стоит остановиться на нескольких ключевых моментах. Во-первых, любой сайт на Zope
состоит не из иерархии файлов, а из иерархии объектов. Получается, что программирование конкретных функций
вашего сайта на Zope производится
буквально мышью. Практически все остальное программирование приходится
на долю процессора шаблонов — zpt
или dtml.
Возможности Zope не исчерпываются тем, что описаны выше. Это очень
мощный продукт, на котором можно
создавать сайты любой сложности.
Zope предоставляет полноценную систему поиска, систему аутентификации, а также множество бесплатных
модулей, среди которых можно встретить, например, полноценный портал
с CMS и многое другое. Среди минусов платформы самым главным является обязательное наличие специализированного хостинга (www.keysolutions.
ru, www.itconnection.ru, www.python-hosting.com).
Установка движка с базой данных
Первый вариант
Мастер установки сам создаст в базе необходимую ему структуру данных. В этом
случае вам нужно, во-первых, убедиться,
что хостинг, который вы приобрели, включает в себя услуги предоставления базы
данных, а во-вторых, выяснить ее настройки: IP-адрес или имя хоста, к которому будут обращаться скрипты, имя базы данных,
логин и пароль. Эту информацию вам должен предоставить хостер. Возможно, мастер установки спросит, какой вы желаете
указать префикс для названий таблиц в базе. Это опция необходима, если возможности хостинга позволяют вам иметь только одну базу данных, а сайтов, использующих ее,
хочется иметь несколько. Префикс нужен
для того, чтобы избежать конфликтов имен
таблиц, принадлежащих разным движкам.
Второй вариант
Второй вариант посложнее. Если в мастере установки не реализована возможность
создания необходимой структуры данных
либо по каким-то непонятным причинам
база данных не создается, вам придется
делать ее вручную.
Предоставляя услуги доступа к базе данных, любой хостер не может не обеспечить
и средство ее администрирования. В подавляющем большинстве случаев такой SQL-базой является MySQL, а средством ее
администрирования — веб-приложение
PhpMyAdmin. Таким образом, вам необходимо отыскать среди большой кучи файлов
движка нужный именно вам с полным SQLзапросом (еще раз внимательно изучите руководство по установке: если такой файл
существует, его местонахождение там указано) и затем запустить его из PhpMyAdmin.
Если же никакого мастера установки в
движке не предусмотрено, общий совет
может быть только один: скорее всего,
все необходимые настройки указываются
в конфигурационном файле или файлах.
Следуйте инструкциям в прилагаемых с
движком файлах описания либо найдите
руководство по установке на официальном сайте проекта или на локализованных версиях в зоне ru.
Хостинг с предложением SQL - баз
Проблема выбора хостинга для экспериментов с разнообразными движками, использующими SQL-базу данных, упирается в деньги. Бесплатный хостинг с поддержкой
MySQL, вообще-то, существует (например на
www.hut.ru или www.agava.ru), однако базу
данных вам дадут только в случае, если вы
объясните каким-то неизвестным людям из
службы поддержки, насколько полезный
проект вы собираетесь делать с ее использованием. Ради простых экспериментов доступа к ней, скорее всего, вы не получите.
В таком случае, если вы хотите просто
поиграть с разными скриптами или не
собираетесь в ближайшем времени запускать в Интернете действующий сайт, а можете ограничиться аудиторией локальной
сети, установите все необходимое — вебсервер, скриптовой язык и сервер базы
данных — на своем собственном компьютере. Для неподготовленного человека это
звучит, конечно, пугающе, однако не все
так плохо. На сайте www.dklab.ru можете
скачать единый пакет под названием Denver,
в котором все эти службы объединены.
Если же такой вариант для вас неприемлем, то хостинг придется покупать. Набрав
в Яндексе «Хостинг SQL», вы сразу же увидите множество разнообразных предложений, однако лучше работать с более или
менее известными фирмами.
Так, например, valuehost.ru предлагает
дешевый полноценный хостинг с SQL за
$8,95 в месяц (тариф «План А»). В компании masterhost.ru самый недорогой хостинг с поддержкой базы данных обойдется вам в $9,95 в месяц, при этом их сайт
более симпатичен и служба поддержки
работает как часы. Хотелось бы также
упомянуть о необычном продавце хостинга Марвине, обитающем на www.upstream.
ru (тариф «Хороший», $12 в месяц):
методы работы этой компании с клиентами не могут не вызывать восхищения.
Заключение
Если вы заинтересовались возможностью создания сайта на основе готового
движка — не ограничивайте свой выбор
решениями, ссылки на которые приведены здесь. В Сети вы можете найти сайты-обзоры, например www.cmsobzor.ru,
на которых представлены демонстрационные версии множества разнообразных
движков и ссылки на их официальные
сайты.
Источник: CHIP online Автор: Анатолий Юдов
|