Text
                    ox оРуководствопользователяД.Н.Колисниченко&&&Выбор хостинга, установка
и настройка CMS DrupalМодули, расширения и темыСоздание и организация
материалаОбслуживание и обеспечение
безопасности сайтаПоисковая оптимизация

Руководствопользователя
РуководствопользователяД.Н. КолисниченкоДацдлеквшкаМосква • Санкт-Петербург
2011
ББК 32.973.26-018.2.75
К60
УДК 681.3.07Компьютерное издательство “Диалектика”Главный редактор С.Н. Тригуб
Зав. редакцией А.В. Слепцов
По общим вопросам обращайтесь в издательство “Диалектика” по адресу:
info@dialektika.com, http://www.dialektika.comКолисниченко, Д.Н.К60 Drupal 7. Руководство пользователя. — М.: ООО “И.Д. Вильямс”, 2011. —
256 с.: ил.ISBN 978-5-8459-1717-1 (рус.)ББК 32.973.26-018.2.75Все названия программных продуктов являются зарегистрированными торговыми марками
соответствующих фирм.Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой
бы то ни было форме и какими бы то ни было средствами, будь то электронные или механиче¬
ские, включая фотокопирование и запись на магнитный носитель, если на это нет письменного
разрешения издательства “Диалектика”.Copyright © 2011 by Dialektika Computer Publishing.All rights reserved including the right of reproduction in whole or in part in any form.Научно-популярное издание
Денис Николаевич Колисниченко
Drupal 7. Руководство пользователяЛитературный редактор Е.П. ПерестюкВерстка Л. В. ЧернокозинскаяХудожественный редактор В.Г. ПавлютинКорректор Л.А. ГордиенкоПодписано в печать 27.01.2011. Формат 70x100/16.Гарнитура Hmes. Печать офсетная.Уел. печ. л. 20,64. Уч.-изд. л. 15,73.Тираж 2000 экз. Заказ № 25241.Отпечатано по технологии CtPe ОАО “Печатный двор” им. А. М. Горького
197110, Санкт-Петербург, Чкаловский пр., 15.ООО “И. Д. Вильямс”, 127055, г. Москва, ул. Лесная, д. 43, стр. 1ISBN 978-5-8459-1717-1 (рус.)© Компьютерное изд-во “Диалектика”, 2011,
текст, оформление, макетирование
ОглавлениеВведение 11Гпава 1. Обзор Drupal 7 13Гпава 2. Выбор хостинга. Настройка локального веб-сервера 22Гпава 3. Установка Drupal на хостинг 48Гпава 4. Базовая настройка Drupal-сайта 69Гпава 5. Расширение функциональности Drupal — модули 84Гпава 6. Работа с материалом 99Гпава 7. Пользователи и права доступа 126Гпава 8. Изменение темы (дизайна) сайта 140Гпава 9. Обслуживание Drupal-сайта 172Гпава 10. Поисковая оптимизация и заработок в Интернете 183Приложение А. Файл настроек РНР 204
Приложение Б. Команды chmod и chown: изменение прав доступа 226Приложение В. Основы HTML 228Приложение Г. Безопасность в сети 245Предметный указатель 250
СодержаниеВведение 11Необходимые знания 12От издательства “Диалектика” 12Гпава 1. Обзор Drupal 7 131.1. Что такое система управления контентом 131.2. Drupal и другие системы 141.2.1. Коммерческие и бесплатные системы 141.2.2. Joomla! и Drupal 151.3. Все, что нужно знать о Drupal перед установкой 201.3.1. Кратко о Drupal 201.3.2. Системные требования 201.3.3. Основные возможности системы 211.3.4. Кому идеально подойдет Drupal 21Гпава 2. Выбор хостинга. Настройка локального веб-сервера 222.1. Хостинг или локальный веб-сервер? 222.2. Выбор хостинга 232.3. Выбор доменного имени 252.4. Локальный веб-сервер под управлением Windows 272.5. Локальный веб-сервер на базе Linux 302.5.1. Установка необходимого программного обеспечения 302.5.2. Проверка работоспособности связки 332.5.3. Настройка Apache 362.5.4. Установка FTP-сервера 422.5.5. Данные для установки Drupal 47Гпава 3. Установка Drupal на хостинг 483.1. Загрузка Drupal и локализации 483.2. Подготовка хостинга к установке Drupal 483.3. Загрузка DrUpal на хостинг 543.4. Установка Drupal 59
Оглавление73.5. Проблемы при установке 663.5.1. Проблема с Ajax 663.5.2. Проблемы с settings.php 663.5.3. Проблемы с базой данных 673.5.4. Не отправляются письма с Drupal-сайта 673.5.5. Директива registerjjlobals 673.5.6. Сообщение Fatal error: Allowed memory size of... 68Гпава 4. Базовая настройка Drupal-сайта 694.1. С чего начать? 694.2. Конфигурация сайта 704.2.1. Общие параметры сайта 704.2.2. Параметры регистрации на сайте 734.2.3. Обслуживание сайта 764.2.4. Поиск и метаданные 774.2.5. Регион и язык 794.3. Изменение внешнего вида сайта 804.4. Отчеты 81Гпава 5. Расширение функциональности Drupal — модули 845.1. Введение в модули Drupal 845.2. Установка и активация модулей 855.2.1. Активация стандартных модулей 855.2.2. Установка дополнительных модулей 885.2.3. Удаление модуля 915.3. Дополнительные поля: модуль Field 935.4. Перевод контента — модуль Content translation 955.5. Некоторые полезные модули 97Гпава 6. Работа с материалом 996.1. Эволюция систем управления контентом 996.2. Создание материалов сайта 1006.2.1. Типы документов и включение необходимых модулей 1006.2.2. Создание основных страниц сайта 1026.2.3. Создание статей 1046.2.4. Записи блога 1076.2.5. Форумы 1086.2.6. Опрос на вашем сайте 1116.2.7. Подшивки 112
8Оглавление6.3. Новостные ленты 1136.4. Таксономия 1176.5. Установка визуального редактора 120Гпава 7. Пользователи и права доступа 1267.1.0 безопасности учетных записей 1267.2. Параметры регистрации пользователей 1277.3. Бан пользователей 1297.4. Список пользователей 1297.5. Роли 132Гпава 8. Изменение темы (дизайна) сайта 1408.1. Способы изменения дизайна сайта 1408.1.1. Способ 1: предустановленная тема 1408.1.2. Способ 2: загрузка темы с drupal.org 1408.1.3. Способ 3: покупка темы 1418.1.4. Способ 4: разработка уникальной темы в дизайн-студии 1418.1.5. Способ 5: разработка темы вручную с нуля 1428.1.6. Способ 6: разработка темы на базе уже готовой темы 1428.2. Выбор предустановленной темы 1438.3. Выбор темы на www.drupal.org 1448.3.1. Загрузка темы: обращаем внимание на номер версии Drupal 1448.3.2. Установка темы 1458.3.3. Состояние темы и модули для переключения тем пользователями 1458.3.4. Темы и ошибки в них 1468.3.5. Выбираем другую тему 1478.3.6. Из чего состоит тема 1488.3.7. Блоки и регионы 1528.4. Файл page.tpl.php — подробно 1568.5. Преобразование старых тем в новый формат 1638.5.1. Заголовок DOCTYPE 1648.5.2. Изменения в .info-файле 1648.5.3. Небольшие переименования — изменения в регионах 1648.5.4. Таксономия 1658.5.5. Изменения в CSS 1668.5.6. Генерирование HTML-атрибутов через переменную 1678.5.7. Имена функций 1678.5.8. Файл box.tpl.php больше не используется 167
Оглавление98.5.9. Функция render 1678.5.10. jQuery UI (1.7) 1688.5.11. Переменной Sclosure больше нет 1688.5.12. Новая функция theme_link() 170Гпава 9. Обслуживание Drupal-сайта 1729.1. Резервная копия базы данных 1729.1.1. Использование DirectAdmin для создания резервной копии 1729.1.2. Использование программы phpMyAdmin 1749.1.3. Копирование файлов базы данных 1779.2. Оптимизация таблиц Drupal 1779.3. Безопасность вашего сайта 1789.4. Перенос сайта на другой хостинг 1799.4.1. Подготовка базы к переносу 1809.4.2. Копирование файлов на хостинг 1809.4.3. Редактирование файла settings.php 1809.5. Восстановление пароля администратора 181Гпава 10. Поисковая оптимизация и заработок в Интернете 18310.1. Способы привлечения посетителей на сайт 18310.2. Поисковая оптимизация Drupal 18510.2.1. Карта сайта 18510.2.2. Редактирование файла robots.txt 18510.2.3. URL, понятные человеку 18510.2.4. Расширение Nodewords 18610.2.5. 10 лучших Drupal-модулей для SEO 18610.3. Способы заработка на сайте 18710.3.1. А можно ли вообще заработать на сайте? 18710.3.2. Как именно заработать на сайте? 18810.4. Основы WebMoney: ваш электронный кошелек 19010.4.1. Что такое электронные деньги? 19010.4.2. Кратко о WebMoney 19510.4.3. Дополнительная информация по WebMoney 20010.4.4. Как не стать жертвой мошенников в Сети 20110.5. Вместо заключения 203Приложение А. Файл настроек РНР 204
Приложение Б. Команды chmod и chown: изменение прав доступа 226
10ОглавлениеПриложение В. Основы HTML 228В.1. Основные теги 228В. 1.1. Структура документа 228В. 1.2. Типы тегов 230В. 1.3. Теги физического форматирования текста 230В.1.4. Гипперссылки 236В.1.5. Таблицы 237В. 1.6. Теги рисунков 239В. 1.7. Теги списков 240В.2. Формы 240Приложение Г. Безопасность в сети 245
Предметный указатель 250
ВведениеДанная книга посвящена последней, седьмой, версии популярной CMS Drupal.
Вместо скучного и длинного введения лучше расскажу, о чем мы будем говорить в
каждой главе. Глава 1, как и в любой другой книге, больше теоретическая, неже¬
ли практическая. В ней мы поговорим о системах управления контентом (CMS —
Content Management System) в целом, а также сравним две популярные CMS — Drupal
и Joomla! Вы узнаете, какие недостатки и преимущества есть у Drupal, прежде чем
начнете работать с этой системой.В главе 2 мы выберем хостинг для вашего будущего сайта. Желающие сэкономить
могут временно настроить локальный веб-сервер и установить на него Drupal. На¬
стройка локального сервера будет производиться как на базе Windows, так и на базе
Linux. После прочтения этой главы вам будет предложено заполнить таблицу с пара¬
метрами доступа к вашему сайту — все эти параметры пригодятся в главе 3, когда мы
будем устанавливать Drupal.В главе 3 рассматривается установка Drupal. Но перед установкой нужно подго¬
товить хостинг. Для этого мы создадим базу данных для Drupal с помощью панели
управления DirectAdmin, также будет рассмотрена программа phpMyAdmin, с помо¬
щью которой вы сможете управлять базами данных и таблицами (при наличии соот¬
ветствующих прав).После установки системы нужно выполнить ее базовую настройку. Как это сде¬
лать, вы узнаете в главе 4. Глава 5 посвящена установке и настройке модулей Drupal,
позволяющих расширить функциональность сайта. Мы настроим предустановленные
модули и научимся устанавливать дополнительные модули.Глава 6 посвящена работе с материалом: вы научитесь создавать страницы, ста¬
тьи сайта, форум, блог, опросы и подшивки. Также будет рассмотрена установка и
настройка визуального редактора, облегчающего редактирование текста. По умол¬
чанию в Drupal нет визуального редактора (наподобие того, который используется в
Joomla!).В главе 7 мы поговорим о пользователях, правах доступа и ролях. В процессе чте¬
ния главы вы создадите несколько полезных ролей для вашего сайта — редактор, ди¬
зайнер, модератор.Глава 8 посвящена созданию дизайна для вашего сайта. Вы узнаете, как скачать
и установить уже готовую тему, как адаптировать тему для своих потребностей, как
преобразовать старую тему для Drupal 6 в новый формат, пригодный для установки в
Drupal 7.
12ВведениеСайт нуждается в обслуживании. Периодически нужно создавать резервную копию
базы данных и файлов сайта — вопросы резервного копирования будут обсуждаться в
главе 9. Помимо этого вы узнаете, как восстановить забытый пароль администратора
Drupal, как перенести сайт с одного хостинга на другой, как защитить ваш сайт.После того как сайт будет полностью создан, нужно поговорить о его раскрутке.
Вопросы раскрутки и поисковой оптимизации рассматриваются в главе 10. Кроме
этого, здесь вы узнаете, как заработать на вашем сайте после его раскрутки и как ис¬
пользовать популярную программу WebMoney.Также советую обратить внимание на приложения, в которых рассматриваются
основы HTML, файл конфигурации РНР, команды управления правами доступа в
Linux и пакет Тог, использующийся для обеспечения анонимности в Интернете.Необходимые знанияДля работы с этой книгой, следовательно, для создания собственного сайта ника¬
ких особых знаний не нужно. Пользоваться браузером, файловым менеджером, ар¬
хиватором, думаю, умеют все читатели. Все остальные знания будут получены в про¬
цессе чтения книги — вы узнаете, как использовать панель управления хостингом,
как настроить локальный веб-сервер, изучите основы языка HTML. Если у читателя
есть минимальные знания языка РНР, то они пригодятся при создании собственных
тем оформления.Я обещал, что длинного введения не будет, поэтому самое время приступить к чте¬
нию книги.От издательства “Диалектика"Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение и
хотим знать, что было сделано нами правильно, что можно было сделать лучше и что
еще вы хотели бы увидеть изданным нами. Нам интересны любые ваши замечания в
наш адрес.Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумаж¬
ное или электронное письмо либо просто посетить наш веб-сервер и оставить свои
замечания там. Одним словом, любым удобным для вас способом дайте нам знать,
нравится ли вам эта книга, а также выскажите свое мнение о том, как сделать наши
книги более интересными для вас.Отправляя письмо или сообщение, не забудьте указать название книги и ее авто¬
ров, а также свой обратный адрес. Мы внимательно ознакомимся с вашим мнением и
обязательно учтем его при отборе и подготовке к изданию новых книг.Наши электронные адреса:E-mail: info0dialektika.com
WWW: http://www.dialektika.comНаши почтовые адреса:
в России: 127055, г. Москва, ул. Лесная, д. 43, стр. 1
в Украине: 03150, Киев, а/я 152
ГЛАВА 1Обзор Drupal 71.1. Что такое система управления контентомДанная книга посвящена системе управления содержимым сайта (CMS) Drupal.
Прежде чем поговорить о Drupal, нам нужно разобраться, что такое CMS и для чего
нужна эта система.CMS (Content Management System) — система управления контентом (т.е. содер¬
жимым — страницами, картинками и т.д.) сайта. Чтобы понять всю значимость CMS,
давайте вернемся к истокам.В далеком 1989 году Тим Бернерс-Ли предложил глобальный гипертекстовый про¬
ект. Проект поддержали, и сейчас он известен как WWW (World Wide Web), или как
Всемирная паутина.Данный проект подразумевал публикацию особых (гипертекстовых) документов,
содержащих ссылки на другие документы. Первоначально проект разрабатывался ис¬
ключительно для CERN (Европейский совет по ядреным исследованиям) и должен
был облегчить поиск и сбор документов для ученых CERN.В процессе разработки WWW были также разработаны протокол HTTP, язык
HTML, идентификаторы URL и многое другое. Все это было создано в период с 1989
по 1993 год, но годом рождения WWW считается 1989.Первый сайт (его создал Бернерс-Ли) появился 6 августа 1991 года (адрес: http: //
info. cern. ch, и он доступен до сих пор). В 1994 году был создан Консорциум Все¬
мирной паутины (World Wide Web Consortium — W3C), основной задачей которого
было развитие WWW. Консорциум основан Тимом Бернерсом-Ли, который до сих
пор его возглавляет. После этого WWW “пошла в массы”, и любой желающий, зная
язык разметки HTML, мог создать свой сайт.Чем же сайты 90-х годов отличались от современных? Тем, что раньше сайты были
статическими, а современные сайты стали динамическими. Разберемся, как работа¬
ет обычный сайт. Пользователь запрашивает страницу, например page.html. Веб¬
сервер просматривает каталог с веб-страницами и, если файл page. html в нем есть,
то пользователю возвращается его содержимое, в противном случае — возвращается
сообщение 404 (“Файл не найден”). Динамический сайт работает иначе. Пользова¬
тель запрашивает тоже какую-то страничку, но обращение производится не к кон¬
кретному файлу на диске, а к программе — движку сайта (обычно это файл index.
php, если движок написан на языке РНР). Движок получает нужную пользователю
14Гпава 1информацию из какого-нибудь источника (например, из базы данных или какого-
нибудь файла на диске), генерирует HTML-страницу и передает ее веб-серверу, кото¬
рый в свою очередь отправляет ее в браузер пользователю.Спрашивается, а зачем все усложнять, если достаточно запросить один файл и
передать его содержимое браузеру? А для того, чтобы сайтом было проще управлять.
Скажем, вы создали обычный сайт на 100 страничек (это не так уж и много). Рано
или поздно вам захочется изменить дизайн этого сайта (или хотя бы изменить какую-
нибудь мелочь в “шапке”). Тогда вам придется редактировать все эти 100 страниц
вручную. Мало того, вам сначала нужно будет загрузить все эти 100 страниц на свой
локальный компьютер, отредактировать, а затем снова загрузить на сервер. Как вам
такая перспектива? А что делать, если сайт состоит не из 100 страниц, а из 1000? Но и
это еще не все. Довольно популярной является функция “Карта сайта”, когда список
разделов и страниц сайта показан иерархически. Когда страниц мало, скажем, пару
десятков, карту сайта можно поддерживать и вручную. Но когда страниц очень много,
данная задача оказывается чрезвычайно сложной.А теперь вдумаемся, как работает динамический сайт. Ключевая фраза выделена
курсивом выше — “генерирует HTML-страницу”, т.е. движок “берет” контент — тек¬
стовую часть (возможно, с картинками и таблицами) — и “одевает” ее в дизайн. Сле¬
довательно, чтобы изменить дизайн сайта, вам нужно просто установить уже готовую
графическую тему или отредактировать один-два файла — файлы шаблона сайта.
А о карте сайта вам вообще не нужно беспокоиться — сколько бы страниц вы ни соз¬
дали, движок автоматически построит карту сайта.Но и это еще не все. Как правило, движок — это только часть CMS. Он выводит
контент сайта в соответствии с заданным шаблоном дизайна. Но кроме этого, в CMS
есть средства управления содержимым сайта (они позволяют создавать разделы и ка¬
тегории сайта и распределять между ними материал) и средства его редактирования.
При этом пользователю даже не обязательно знать, где хранится содержимое сайта —
в базе данных, на диске в виде HTML-файла или вообще на удаленном сервере. Так¬
же пользователю не нужно знать язык HTML. А вот для создания статического сайта
знание HTML обязательно.1.2. Drupal и другие системы1.2.1. Коммерческие и бесплатные системыСистема управления контентом — это не что-либо сверхъестественное. Обладая
посредственными знаниями языка РНР (или знанием другого языка, пригодного для
веб-программирования), написать простейшую CMS можно максимум за час — смо¬
тря какие функции вы реализуете изначально. А потрудившись с неделю, можно соз¬
дать довольно развитую систему управления сайтом, адаптировав ее под свои требо¬
вания или требования заказчика.Простота разработки объясняет огромное число самых разных CMS. Как и любое
другое программное обеспечение, системы управления контентом бывают бесплат¬
ными (свободными) и коммерческими.Самыми популярными системами, судя по различным рейтингам и опросам ко¬
нечных пользователей, являются WordPress, Joomla!, Drupal, ТУРОЗ, Bitrix, HostCMS,
NetCat, UMI.CMS. Последние четыре системы являются коммерческими, т.е. за их
Обзор Drupal 715использование придется заплатить. Но рассматривать такие CMS в книге нет смыс¬
ла. Во-первых, есть документация, поставляемая вместе с CMS. Во-вторых, обычно
есть фирмы, которые занимаются настройкой сайтов под ключ на базе одной из этих
CMS — сами же разработчики CMS предоставляют подобные услуги. Получается, что
вам вообще ничего не придется настраивать, а о том, как использовать систему, мож¬
но прочитать в документации.Система ТУРОЗ очень популярна в Германии, но у нас она больше исключение,
чем правило. Поэтому я бы не рекомендовал строить на ее базе сайт. Причина проста:
система непопулярна и если понадобится что-то переделать, а вы не являетесь РНР-
гуру, то найти у нас специалиста по этой системе будет сложно.Остаются три бесплатных системы — WordPress, Joomla! и Drupal. Множество
фирм и отдельных разработчиков предлагают свои услуги по установке и настройке
этих CMS. Но за что им платить, если сама система бесплатно и совершенно свободно
(без всяких ограничений на количество установок, загрузок, регистраций) доступна
в Интернете, а в большинстве случаев установка проходит без проблем? Выходит, за¬
дача таких разработчиков сводится к загрузке CMS, ее установке на хостинг заказчика
и адаптации графической темы, которая, кстати, тоже строится на базе одной из бес¬
платных тем, найденных в Интернете. Другое дело, если нужно разработать специ¬
альные модули. Тогда действительно работа стоит запрошенных за нее денег. Хотя не
помешает убедиться, что нужных модулей нет в Интернете, а для популярных систем
созданы тысячи модулей. Кстати, это еще одна из причин выбрать популярную си¬
стему — для нее больше модулей, следовательно, найти нужный модуль будет проще,
а это, в свою очередь, означает экономию на услугах фрилансеров — найти и устано¬
вить нужный модуль сможет любой пользователь, умеющий пользоваться браузером,
“Гуглом”, архиватором и текстовым редактором.Совсем забыл: для коммерческих систем и модули платные. Скажем, вы выбра¬
ли систему А, установили, а спустя месяц захотели “прикрутить” к ней форум. Но
модуль, добавляющий функции форума, — платный. Выходит, нужно еще раз запла¬
тить. И так будет всегда: покупая коммерческую систему, вы попадаете в своеобразное
“рабство”. Код коммерческих систем зашифрован, и если вам захочется внести не¬
большие изменения, вы не сможете это сделать без разработчика и без определенного
количества денег, которые разработчик запросит за свою работу. С бесплатными си¬
стемами все намного проще: модули есть и платные, и бесплатные. Какой выбрать —
решать вам. Но выбор, в отличие от коммерческих систем, есть всегда.1.2.2. Joomla! и DrupalПользователи, которые решают самостоятельно устанавливать и настраивать CMS,
обычно выбирают одну из трех систем: Wordpress, Joomla! или Drupal. Но систему
Wordpress мы игнорируем сразу — она превосходно подходит для создания блога, но
не годится в качестве универсальной системы управления контентом. Все вариации
блога можно с легкостью создать на базе Wordpress, а вот если вам захочется создать
самый обычный сайт со статьями и форумом, то Wordpress — не лучший вариант. Для
корпоративного сайта Wordpress тоже не годится.Системы Joomla! и Drupal более универсальны. При желании с их помощью мож¬
но создать любой сайт — от визитки и персонального блога до целого портала. Но
какую из них выбрать? Сейчас мы рассмотрим преимущества и недостатки каждой
системы, и вы сами поймете, почему Drupal в некоторых ситуациях на голову выше.
16Гпава 1Помните, что от правильного выбора CMS зависит успешность развития сайта. Хо¬
рошая система удобна для пользователей, и они не уйдут с вашего сайта, потому что
половина функций у вас работает не так, как нужно. Вам не придется потом тратить
время на импорт/экспорт данных в другую CMS — когда вы поймете, что ошиблись
с выбором.Начнем с Joomla! — пропустим основного конкурента вперед. Изначально под¬
ход к разработке был следующим: “все в одном”. Это же заложено и в названии, по¬
скольку слово “jumla” (что созвучно с Joomla!) означает “все вместе”. Но так было
изначально, в конечном итоге получилось то, что есть на самом деле. Чуть дальше вы
убедитесь, что базовая комплектация Drupal намного богаче, чем Joomla!Joomla!, как и Drupal, написана на языке программирования РНР, и ее можно уста¬
новить на любой сервер с поддержкой РНР и баз данных MySQL, что позволяет уста¬
новить ее физически на один сервер с Drupal, чтобы испытать обе системы в равных
условиях — на одном сервере. А это очень важно: ведь в Интернете ведется много
споров о том, какая система быстрее. Но многие пользователи не устанавливали их
на одном и том же сервере, поэтому их оценка не может быть объективной. Я произ¬
водил такую установку и могу сообщить, что Drupal работает быстрее — по крайней
мере, если сравнивать ее с Joomla! 1.5.15. Мне интересно будет произвести такое же
сравнение, когда официально выйдет Joomla! 1.6, которая существенно “легче” вер¬
сии 1.5, следовательно, она должна работать быстрее своей предшественницы. Вот
тогда и посмотрим, а пока по производительности в лидерах Drupal. Но самое инте¬
ресное, что теоретически CMS Drupal должна создавать большую нагрузку на сервер,
однако об этом мы поговорим чуть позже.Обе системы распространяются по лицензии GPL (Generic Public License), что по¬
зволяет устанавливать их на неограниченное количество узлов, причем совершенно
бесплатно. Основные принципы GPL — свободное распространение программ и их
исходного кода, поэтому исходный код Joomla! и Drupal распространяется в неза¬
шифрованном виде (а ведь его можно зашифровать с помощью Zend — было бы же¬
лание). Вы даже можете создавать на базе Joomla! и Drupal свои собственные CMS и
распространять их отдельно от основных продуктов. Единственное требование к вам
в этом случае — новые продукты должны тоже распространяться по лицензии GPL,
т.е. бесплатно и с открытым исходным кодом.Drupal, как и Joomla! — универсальная система управления контентом. Она тоже
написана на РНР и поддерживает MySQL. Но кроме MySQL, база данных Drupal мо¬
жет находиться и на сервере PostgreSQL, а это очень и очень хорошо. Почему? Начнем
с того, что раз поддерживаются две системы управления базами данных, то у нас есть
больше возможностей. Мы уже не ограничиваемся выбором хостинга с MySQL. Мы
можем выбрать хостинг с PostgreSQL. А если на выбранном хостинге установлены две
системы управления базами данных, тогда можно выбрать PostgreSQL. Нет, не для того,
чтобы быть не как все. Просто PostgreSQL на голову выше, чем MySQL — она выдержи¬
вает такие нагрузки, которые MySQL не по зубам. Если вы надумали строить серьезный
сайт и планируете большие нагрузки, имеет смысл выбрать PostgreSQL. К тому же, CMS
Drupal оснащена механизмом контроля нагрузки на сервер баз данных, что особенно
хорошо, если у вашего хостера есть ограничения на нагрузку сервера БД.Но когда я тестировал Joomla! и Drupal, обе системы использовали СУБД MySQL,
т.е. были в абсолютно равных условиях. Drupal работала быстрее. А почему? Примерно
Обзор Drupal 717по той же причине, по которой новый и высокотехнологичный двигатель всего в
150 сил быстрее разгоняет автомобиль, чем более мощный двигатель начала восьмиде¬
сятых прошлого века. Все дело в технологиях, а в данном контексте — в оптимизации
кода. Скачайте Joomla! и Drupal. Дистрибутив Joomla! в сжатом виде займет примерно
6,6 Мбайт, а дистрибутив Drupal — чуть больше 1 (!) мегабайта. После распаковки
Drupal займет около 4 Мбайт, a Joomla! — больше 26 Мбайт. Самое интересное, что
даже при такой разнице в объеме, функционал Drupal больше, чем у Joomla! Вот вам
и следствия оптимизации: меньше объем, больше функций.Разработчики Joomla! это тоже понимают, и поэтому они существенно “поджали”
версию 1.6 — ее дистрибутив занимает около 4,2 Мбайт — правда, это была альфа-
версия. Посмотрим, сколько она будет занимать, когда выйдет официальный релиз.Причина такого безалаберного отношения к коду кроется в истории появления
CMS Joomla!. Когда-то очень давно, когда Joomla! еще и в природе не существова¬
ла, была система управления контентом Mambo. Эта система была коммерческой.
Но разработчики что-то не поделили между собой, и часть из них ушла из проекта и
создала свою систему — Joomla! 1.0. По сути, Joomla 1.0 (с вашего позволения я боль¬
ше не буду писать восклицательный знак после “Joomla” — надоело) — это даже не
модифицированная версия Mambo того времени, это и была Mambo, но только бес¬
платная. Что бы там ни говорили о версии 1.5 (помню, были разговоры о написании
CMS “с нуля”), она обязана поддерживать версию 1.0 из соображений обратной со¬
вместимости — ведь версия 1.0 стала такой популярной, что для нее были разработа¬
ны тысячи расширений. А отказаться от такого количества расширений разработчики
Joomla просто не имели права. Поэтому в версии 1.5 была заложена совместимость
как новых расширений, так и расширений 1.0. Отсюда и размер. Будь версия 1.5 на¬
писана действительно “с нуля”, ее размер не превысил бы 3 Мбайт (имеется в виду
размер дистрибутива). Версия 1.6 подает надежды, но с ней пока ничего не ясно.К тому же, помимо нерационального подхода к написанию кода, объем кода CMS
Joomla увеличен за счет некоторых “наворотов”, которых нет в Drupal. Например,
в Drupal нет визуального редактора страниц. Согласен, что визуальный редактор —
штука хорошая, особенно для начинающих пользователей, но его реализация в Joomla
вызывает вопросы.С другой стороны, в Joomla нет самого элементарного. В ней нет даже коммен¬
тариев к записям (статьям). Для этого нужно “прикручивать” отдельные расшире¬
ния, которые к тому же и “глючат”, поскольку большинство из них писалось под
версию 1.0 и требует включения режима обратной совместимости. Также в стандарт¬
ной комплектации Joomla нет форумов. Согласитесь, что это тоже нужная функция.
С расширениями для форумов та же беда, что и для комментариев — они написаны
для версии 1.0, а уже версия 1.6 не за горами.Что же касается системных требований, то и тут Joomla меня немного огорчает,
хотя все не так страшно. Обе CMS могут работать на хостинге, под управлением лю¬
бой операционной системы. Вы не привязываетесь ни к Windows, ни к UNIX — лишь
бы на хостинге был установлен РНР и MySQL (или PostgreSQL для Drupal). Но Joomla
требует РНР версии 5, а вот Drupal все еще может работать с версией 4.3.3 — вдруг вам
попадется старый и дешевый хостинг. О дисковом пространстве мы уже говорили —
для Joomla понадобится минимум 27 Мбайт, для Drupal — 4. Хотя сейчас все равно
минимальный размер хостинга — 100 Мбайт.
18Гпава 1Что же касается безопасности, то обе системы хороши. И Joomla, и Drupal под¬
держивают SSL (Secure Sockets Layer — уровень защищенных сокетов), что позволяет
создавать защищенные сайты для передачи коммерческой информации, например
интернет-магазины. Обе системы позволяют распределить права доступа между поль¬
зователями и подключить модули САРТСНА (Completely Automated Public Turing test
to tell Computers and Humans Apart) для отсеивания ботов.Основные возможности Drupal и Joomla можно даже не сравнивать — они оди¬
наковые, как у большинства других CMS. Все они позволяют легко сменить дизайн
сайта (существуют целые сайты с галереями графических тем), поддерживают FTP и
UTF-8 (что означает отсутствие проблем с локализацией), позволяют выполнять по¬
исковую оптимизацию, обеспечивают предварительный просмотр и премодерацию
публикуемых статей. Все это — стандартный набор. Поэтому сравнивать эти системы
по основным функциям, по меньшей мере, глупо. Важны детали. Давайте попробуем
разобраться в этих самых деталях. Часто на них не обращают внимания, а ведь в них
вся правда. Предположим, что у нас есть крупное предприятие, которому нужен сайт
на трех языках. Drupal поддерживает многосайтовость: вы можете установить Drupal
всего один раз и создать на его базе несколько сайтов, которые будут использовать об¬
щую базу данных. Вот вы и создаете один сайт на русском, другой — на английском,
третий — на французском. Или же можете просто “скинуться” со своим другом на
хостинг и создать два сайта с помощью одной установки Drupal — каждому по сайту.В случае с Joomla вам бы пришлось устанавливать эту систему дважды, а чтобы
разграничить нагрузку на сервер — использовать разные базы данных, что не всегда
возможно. Фанаты Joomla могут посчитать мой пример некорректным — ведь есть
для Joomla расширения, позволяющие создать многоязыковые сайты, например
JoomlFish. JoomlFish — это лучшее расширение для создания многоязыкового сайта.
Суть его сводится к тому, что JoomlFish добавляет к каждой записи несколько допол¬
нительных полей, содержащих перевод этой записи на другие языки. А потом, в за¬
висимости от выбранного языка, расширение выводит одно из полей записи. Как-то
раз я поработал с этим “лучшим” расширением. Более “глючного” расширения я не
видел в своей жизни. Кто с ним работал, тот поймет, о чем я говорю. Пришлось до¬
рабатывать расширение “напильником” — собственноручно править РНР-код. А что
делать пользователю, не обладающему навыками программирования на РНР? Пра¬
вильно, устанавливать несколько версий Joomla... Так вот, если JoomlFish — лучшее
расширение, то я даже не представляю себе, как должно работать худшее...Но несколько установок (для которых понадобится больше места на диске — про¬
порционально количеству установок) — это не единственный недостаток Joomla.
Каждая отдельная копия сайта будет работать со своими таблицами, следователь¬
но, одному и тому же пользователю придется регистрироваться в каждой установ¬
ке Joomla — в нашем случае пользователю придется зарегистрироваться трижды. В
Drupal все намного проще: так как база пользователей будет одна на всех, то пользо¬
вателю придется зарегистрироваться всего один раз — отличная возможность для же¬
лающих создать портал. Да и администратору удобно — чтобы забанить пользователя,
достаточно сделать это один раз, а не несколько. После этого пользователь не сможет
посетить ни один из ваших сайтов.Но многоязычные сайты и порталы нужны не всем. Однако и тут Drupal может
предложить “изюминку”. В Drupal не ограничен уровень рубрикации. Вы можете
Обзор Drupal 719создать рубрику, подрубрику, в ней еще подрубрику и т.д. В Joomla уровень рубрика¬
ции ограничен — всего два уровня, т.е. рубрика и подрубрика, что для многих сайтов
не очень удобно. В версии 1.6 обещают тоже неограниченные уровни рубрикации, но
пока версия 1.6 не вышла.О базовой конфигурации обеих систем уже говорилось выше, но все же хотелось
бы поговорить о ней чугь больше. Чтобы вам было удобнее сравнивать возможности
обеих систем, приведена табл. 1.1.Таблица 1.1. Сравнение базовой конфигурации Joomla! и Drupal
Возможность Joomla! Drupal КомментарийКомментарии - +Блоги - +Корзина или отмена действий + +Визуальный редактор +Форум - +Опросы + +Каталог ссылок +Многосайтовость - +Персонализация - +Экспорт/Импорт RSS + +В Joomla комментарии можно добавить с помощью
расширений, но в базовой конфигурации их нет
Превратить Joomla в блог можно, но для этого
нужно постараться, а в Drupal блог создается не¬
сколькими щелчками мыши
В Joomla удаленные материалы помещаются в
Корзину, откуда их можно потом восстановить.
С одной стороны, довольно удобно, с другой, за
все время использования Joomla я так ни разу и нв
воспользовался Корзиной. В Drupal разработчики
пошли дальше и предлагают механизм отмены
действий, позволяющий отменить в том числе и
удаление материалаПри желании визуальный редактор в Drupal можно
доустановить, но можно привыкнуть к обычному
редактору Drupal и обходиться без дополнитель¬
ных расширенийС форумом в Joomla все так, как и с комментария¬
ми. При желании можно установить расширение,
но большая часть расширений или писалась под
версию 1.0 или представляет собой “мост” между
Joomla и отдельным программным продуктом,
реализующим функцию форума. Другими сло¬
вами — не оно. Это как ручной лифт. И вроде бы
лифт есть, но пользоваться им не хочется — про¬
ще подняться по лестнице
Возможность создавать опросы (голосования)
есть в обеих CMSЭтой бесполезной функции в Drupal нет, но зачем
она нужна?Данная возможность уже обсуждалась выше
Еще одна возможность Drupal, необходимая для
построения сообщества (community): пользова¬
тель может устанавливать свои параметры ото¬
бражения сайтаОбе системы поддерживают импорт и экспорт
из/в RSS Исходя из всего этого, можно сделать вывод, что Drupal в большинстве случаев
на голову выше Joomla. Чего только стоит возможность создавать несколько сайтов
20Гпава 1на одной установке Drupal — для создания портала и сайта сообщества это незаме¬
нимая возможность. Блоги, форумы, комментарии и опросы — тоже немаловажно.
Лично я готов пожертвовать визуальным редактором, получив взамен блоги, форумы
и комментарии. В любом случае, даже если мне захочется добавить в систему визуаль¬
ный редактор, то мне придется доустановить одно расширение, а не три, как в случае
Joomla! К тому же в случае с форумом придется установить не только расширение, но
и еще один программный продукт — сам форум — и потратить на все это несколько
часов. В Drupal создание форума займет несколько минут — нужно лишь побродить
по дебрям панели управления Drupal.1.3. Все, что нужно знать о Drupal перед установкой1.3.1. Кратко о DrupalНа самом деле Drupal — не простая система управления контентом, можно ска¬
зать, что Drupal является средой разработки веб-приложений (Content Management
Framework, CMF), поскольку позволяет создавать сайты разной сложности и разного
назначения без необходимости знания РНР и HTML. Хотя при редактировании ша¬
блонов знание языка HTML пригодится, но будет достаточно самых поверхностных,
а не глубоких знаний.Самая первая версия Drupal появилась в 2001 году, хотя работа над системой была
начата в 2000 году. В 2007 и 2008 годах CMS Drupal получила награду Webware 100,
которая присуждается лучшим сайтам, сервисам и приложениям Интернета.
А в 2010 году Drupal стала победителем конкурса “Best open source applications 2010”
(Лучшие ОрепЗоигсе-приложения 2010) в категории “Лучшая система управления
веб-контентом”.Скачать самую последнюю версию Drupal можно с сайта разработчиков — www.
drupal. огд. На этом же сайте можно скачать и локализации для Drupal, но самое
интересное, что пакета русификации на этом сайте я не нашел. Есть пакет локализа¬
ции для украинского языка, но с русским языком почему-то сайт www. drupal. org не
дружит. Поэтому пакет локализации пришлось искать на сайте http: / /drupaler. ru.
Кроме этого сайта можно скачать локализации для русского языка на сайте русского
интернет-сообщества пользователей Drupal — www. drupal. ru.1.3.2. Системные требованияСистемные требования Drupal следующие.• Операционная система — Windows, семейство операционных систем UNIX
(FreeBSD, Linux, MacOS X и др.).• Веб-сервер — Apache, Nginx, IIS и любой другой, на котором возможно выпол¬
нение РНР-кода.• Система управления базами данных — MySQL или PostgreSQL.• РНР — версия 4.3.3, но рекомендуется использовать 5.x из соображений совме¬
стимости с различными расширениями Drupal.
Обзор Drupal 7211.3.3. Основные возможности системыМы уже знакомы с некоторыми возможностями системы. Кроме многих вышеу¬
помянутых, нужно дополнительно выделить общую книгу, над которой могут рабо¬
тать все зарегистрированные пользователи сайта. В общую книгу можно “подшить”
любой поддерживаемый контент — от статьи до картинки или записи в блоге.Как и любая другая серьезная система управления контентом, Drupal поддержива¬
ет понятные URL. Имейте в виду, что для поддержки этой функции нужно установить
на веб-сервере модуль mod_rewrite.Все остальные возможности этой системы нам уже в целом известны: многосай-
товость, модульная система (возможность установки расширений), персонализация
(возможность установки пользователем персональных параметров), возможность ор¬
ганизации блога, форума, возможность комментирования записей и т.д.Drupal — отличная система, но у нее есть одна важная особенность, о которой нуж¬
но знать до установки системы. Каждая новая версия Drupal не поддерживает расши¬
рения предыдущей версии. Другими словами, если вы выбираете самую последнюю
версию 7, то должны убедиться, что для нее вы найдете все необходимые расширения.
Поэтому спланировать все функции будущего сайта нужно заранее. Возможно, про¬
ще будет установить версию 6 — для нее пока расширений написано больше. Эту же
особенность нужно учитывать и при обновлении версии Drupal — не всегда можно
будет найти расширение для новой версии, поскольку разработчики расширений не
всегда поспевают за разработчиками Drupal. Зато Drupal работает быстро и занимает
меньше места, в отличие от других систем, где разработчики заботятся об обратной
совместимости.1.3.4. Кому идеально подойдет DrupalСистема Drupal идеально подойдет для создания блога, форума, интернет-
магазина, для разработки собственных модулей Drupal, для создания сайта сообще¬
ства, портала и корпоративного сайта. Проще сказать, для каких сайтов не рекомен¬
дуется использовать Drupal. Если вы планируете создать простенький сайт, то лучше
не использовать Drupal. Joomla для этого дела тоже не подойдет — ведь это как из
пушки по воробьям. Уж слишком это сложные системы для создания простых сайтов,
лучше поискать что-то попроще.Прочитав эту главу, надеюсь, вы уже осознали, что не ошиблись с выбором CMS.
В следующей главе мы рассмотрим выбор хостинга для Drupal, а также настройку
локального сервера для установки Drupal на локальном компьютере, где вы сможете
экспериментировать без всяких ограничений.
ГЛАВА 2Выбор хостинга. Настройка
локального веб-сервера2.1. Хостинг или локальный веб-сервер?Для установки Drupal нам понадобится веб-сервер. Вы можете или купить хостинг
у хостинг-провайдера (виртуальный веб-сервер, обычно работающий под управлени¬
ем UNIX/Linux), или же установить веб-сервер и все необходимое программное обе¬
спечение на свой компьютер, работающий под управлением Windows.Я рекомендую первый вариант, а именно купить недорогой хостинг — сейчас хо¬
стинг стоит очень дешево, и можно найти нормальный хостинг примерно за 120 руб.
(32 грн, 4 долл.) в месяц.ПримечаниеУточним несколько терминов — быть может, приведенные ниже определения и не аб¬
солютно точны, зато будут понятны каждому начинающему пользователю.• Доменное имя [домен) — имя вашего сайта в Интернете, например, www. шу-site.com.• Хостинг — по сути, место на диске, где будет храниться ваш сайт. Хостинг связы¬
вается с доменным именем, т.е. все запросы к вашему доменному имени перево¬
дятся на сервер хостинг-провайдера, где установлен движок сайта.• Хостер (хостинг-провайдер) — организация, предоставляющая хостинг.• Движок — специальное программное обеспечение, реализующее все функции
сайта, в нашем случае движок — это CMS Drupal.Дело в том, что веб-сервер под управлением Windows можно использовать сугубо в
академических целях, например, для изучения панели управления Drupal. И все. Веб¬
сервер под управлением Windows, на мой взгляд, это нечто из научной фантастики.
Построить такой сервер, конечно, можно, и он даже будет работать, но не выдержит
ни повышенной нагрузки, ни первой серьезной атаки. Конечно, это сугубо мое мнение
и я могу ошибаться, но, учитывая, сколько зависаний и глюков происходит в Windows
при обычной работе за день, могу представить, как будет работать такой веб-сервер.
Выбор хостинга. Настройка локального веб-сервера23Локальный Windows-сервер для тестирования и отладки Drupal с целью переноса
на UNIX-хостинг тоже не особо оправдывает себя, поскольку в Windows нет такого
понятия, как права доступа к файлам. В итоге созданная в Windows конфигурация по¬
сле переноса в UNIX/Linux работать не будет. Конечно, права доступа изменяются,
но факт остается фактом.Однако все меняется, если вы используете Linux. В этом случае локальный веб¬
сервер полностью оправдывает в себя. Он позволит вам сэкономить ваши деньги.• Если вы разрабатываете сайт для себя, тогда сможете сэкономить минимум
4 доллара — именно столько стоит сейчас оплата хостинга за один месяц, и
именно столько вам понадобится для создания, настройки и отладки вашего- сайта. А как все будет готово, можно будет перенести на реальный хостинг.• Если вы разрабатываете сайт на заказ, тогда сможете сэкономить кругленькую
сумму за год. Как минимум 130 долларов из расчета, что за домен вы заплатите
10 долларов в год, а за хостинг — 10 долларов в месяц. Почему 10, а не 4? Для
профессиональных целей вам понадобится больше места на диске, поэтому де¬
шевый хостинг за 4 доллара вам не поможет. А на локальном компьютере никто
не сможет ограничить дисковое пространство — на локальном компьютере ад¬
министратор только вы. К тому же можно будет сэкономить на оплате за услуги
доступа к Интернету — для доступа к локальному серверу Интернет не нужен.В этой главе мы поговорим о выборе хостинга (так как рано или поздно, но вам
придется столкнуться с этой проблемой) и о создании локального сервера под управ¬
лением Windows или Linux.2.2. Выбор хостингаПри выборе хостинга нужно учитывать ряд факторов. Первый — это географическое
размещение сервера. Если вы не планируете публиковать ничего такого, за что вас бу¬
дут преследовать, то выбирайте сервер в той стране, на аудиторию которой вы больше
всего рассчитываете. Например, если ваш сайт, по вашему мнению, будет интересен в
основном пользователям Украины, целесообразно выбрать сервер в пределах точки об¬
мена трафиком UA-IX. Это повысит скорость доступа к вашему ресурсу для основной
аудитории. Пользователи из других стран тоже смогут зайти на ваш ресурс, но доступ
будет чуть медленнее. Хотя на первых порах это даже не будет заметно. А вот когда
у вас будут десятки тысяч пользователей в день — тогда географическое размещение
будет играть роль (ну или если вы планируете публиковать на сайте видео — именно
видео, а не ссылки на видео). Однако уже сейчас нужно думать о будущем.Хочется экстрима и на своем сайте вы планируете публиковать резонансные дан¬
ные? Тогда не нужно выбирать сервер, находящийся в той стране, к которой относят¬
ся эти данные. Например, если вы хотите опубликовать данные, касающиеся некоей
российской организации (для примера), то выбирайте сервер где-нибудь в Европе,
США, Таиланде или на каких-нибудь островах. Доменное имя тоже нужно выбирать
международное: варианты . com. ru, org. ru и т.д. даже не рассматривайте, если не
хотите, чтобы ваш сайт закрыли по одному звонку. Но помните, что публикуемый в
сайте контент должен не противоречить законодательству страны, где физически на¬
ходится сервер. Иначе ваш сайт “прикроют” не местные правоохранительные органы,
24Гпава 2а сам хостер — никому ведь не хочется проблем. Обычно запрещается размещение
ресурсов, распространяющих нелицензионное программное обеспечение (warez),
распространяющих программное обеспечение, предназначенное для взлома и обхода
лицензий на ПО (cracks), а также spam-, porno- и doorways-сайты. Так что любителям
спорного контента перед выбором размещения сервера лучше изучить все юридиче¬
ские нюансы. Хотя есть и такие хостинга, где нет никаких ограничений на размещае¬
мый контент — ведь есть же в Интернете spam-, porno- или doorways-сайты.Кстати, есть еще один юридический момент. Как уже было отмечено, данные, раз¬
мещенные на сайте, должны соответствовать законодательству страны, где физически
находится сервер. А вот действия самого сайтовладельца подпадают под действие за¬
конов той страны, где он совершает эти действие. Например, в стране А можно разме¬
щать контент В, он не является запрещенным. Но когда вы публикуете этот контент
(а ведь перед публикацией его нужно подготовить), находясь в стране Б, где контент
такого типа запрещен, вы нарушаете закон. Помните об этом.Остальные факторы выбора сервера не менее важны.• На кого регистрируется домен — при выборе хостинга нужно учитывать, на кого
регистрируется домен, будет ли у вас доступ к панели управления доменом, что¬
бы со временем можно было перенести сайт на другой хостинг — вдруг этот вам
не понравится. В рекламе все красиво, а на практике — далеко не всегда. Не все
хостеры честные — при регистрации доменного имени они регистрируют его
на себя. В итоге вы привязаны к их услугам, если не хотите потерять доменное
имя. А когда доменное имя регистрируется на вас, у вас появляется некая сте¬
пень свободы — вы вольны выбирать любой хостинг.• Операционная система, под управлением которой работает сервер — предпо¬
чтительнее выбирать серверы, работающие под управлением FreeBSD/Linux,
так как они более надежны, чем Windows-серверы. Если встанет выбор между
FreeBSD и Linux, выбирайте сервер под управлением FreeBSD.• Версии программного обеспечения, установленные на сервере — для работы Drupal
нужен интерпретатор РНР и сервер баз данных MySQL. Желательно выбирать
хостинг с РНР версии не менее 5.2 и MySQL версии 5.x. Хотя Drupal может
работать и на более старых версиях РНР и MySQL, такие старые версии про¬
граммного обеспечения говорят о том, что сервером практически никто не за¬
нимается. Если не обновляется программное обеспечение, то вряд ли кто-то
устанавливает и последние патчи безопасности. Вы же не хотите, чтобы ваш
сайт взломали сразу же, как только он “засветится” в Google?• Объем дискового пространства — сначала много вам не нужно, если вы не пла¬
нируете размещать на своем сервере видеоролики. Для текста и картинок впол¬
не хватит сначала 500 Мбайт, дальше — докупите. Если планируете размещать
видео, тогда сразу заказывайте хостинг с 1—3 Гбайт дискового пространства.
Если нужно больше места, стоит задуматься о виртуальном сервере или об от¬
дельном выделенном сервере. Первый стоит от 14$ в месяц за 6 Гбайт дискового
пространства и два выделенных IP-адреса. А второй (с нормальной конфигура¬
цией) стоит от 120$ в месяц. Дешевые покупать не нужно — они слабые, а раз
вам нужен выделенный сервер, то нагрузка на сайт должна быть соответствую¬
щей. Слабый сервер может с ней не справиться.
Выбор хостинга. Настройка локального веб-сервера25• Количество баз данных, ограничения на размер баз данных — в идеале вам нуж¬
на всего лишь одна база данных, а ее размер должен ограничиваться размером
вашей учетной .записи на сервере. То есть, размер базы данных не может пре¬
высить размер вашего хостинга. Если хостер для вашего тарифного плана пре¬
доставляет несколько баз данных, то это хорошо. Вторую базу данных можно
использовать для хранения резервной копии данных вашего сайта.• Ограничения потока трафика — не покупайте слишком дешевые хостинги. Если
хостер предлагает много дискового пространства за символическую плату, зна¬
чит, он ограничивает размер трафика. Например, в тарифный план может вхо¬
дить 1 Гбайт трафика. За каждый мегабайт свыше этого 1 Гбайта вы платите
отдельно — в конце месяца. Такой хостинг вам обойдется дороже, чем хостинг с
неограниченным трафиком. Некоторые хостеры накладывают ограничение на
размер входящего/исходящего трафика, некоторые — на соотношение входя¬
щего/исходящего, некоторые — на географическую принадлежность трафика
(например, трафик внутри страны не ограничен, а зарубежный трафик тари¬
фицируется). Лучше всего выбирать хостинг с неограниченным трафиком. Одной
головной больк? будет меньше.• Отзывы пользователей — если вы уже почти выбрали хостинг, прочитайте отзы¬
вы пользователей о нем. Отзывы, конечно, субъективны, но все же. Если много
негативных отзывов, от услуг этого хостера нужно отказаться. Отзывы можно
прочитать на различных тематических ресурсах, например, на http: / /www.
hostobzor.ru/main/.• Процент uptime — чем выше процент uptime, чем чаще сервер находится онлайн,
а не “в дауне”. Чем выше, тем лучше. Если параметр uptime сервера ниже 99%,
то это не очень надежный сервер, есть серверы с uptime 99,99%. Просмотреть
значение параметра uptime некоторых (к сожалению, далеко не всех) хостеров
можно на сайте http://host-tracker.сот/.• Наличие технической поддержки и график ее работы — очень часто вам придется
обновлять свой сайт ночью. Все довольно логично: днем вы на работе, а ночью
занимаетесь своим детищем. Если сервер не работает, куда писать, кому зво¬
нить? О технической поддержке нужно думать до выбора хостера. У хороших
(и дорогих) хостеров техническая поддержка работает круглосуточно.Надеюсь, данный раздел поможет вам выбрать ваш хостинг.2.3. Выбор доменного имениВсе мы помним крылатую фразу: “Как вы яхту назовете, так она и поплывет”. Сей¬
час мы поговорим о доменном имени, точнее о выборе родительского домена (TLD),
поскольку, как следует назвать сайт, знаете только вы. TLD (Top Level Domain) — до¬
мен высшего уровня, т.е. родительский домен. Например, для сайта dkws . org.ua
родительским является домен . org. ua, а для домена . org (именно в этом приме¬
ре), в свою очередь, родительским является домен .ua. Но вы можете заказать сайт
dkws. org или dkws. ua, однако такие домены дороже, поскольку их уровень выше.В табл. 2.1 приводится список самых популярных доменов. Вам остается только
выбрать один из них.
26Гпава 2Таблица 2.1. Описание некоторых TLD
Домен Описание. сот Универсальный домен, подходящий как для крупной компании, так и для личного сайта. Но
его универсальность — главный недостаток: скорее всего, желаемое имя уже занято. Та¬
кой домен обойдется в 10-15 долларов в год — в зависимости от жадности регистратора
. net Обычно имя в этом домене регистрируют провайдеры и другие сетевые организации, но
никаких ограничений на регистрацию в этой зоне нет, поэтому вы можете зарегистриро¬
вать домен как частное лицо. Стоимость такая же, как и у домена . сот• °rg Такой домен часто выбирают некоммерческие организации и проекты, посвященныесвободно распространяемому программному обеспечению. Но как и в случае с домена¬
ми .сот и . net, ограничений на регистрацию нет и вы при желании можете купить домен
в этой зоне. Стоимость — 10 долларов в год• biz Домены .com, .net, и .org — самые старые. Домен .biz — более “молодой”, поэтомуесть вероятность, что желаемое имя будет свободно в этом домене. Вообще-то, этот TLD
задумывался какТЮ для коммерческих (бизнес-) организаций, но персональная странич¬
ка в этом домене также имеет право на существование. Стоимость — 10 долларов в год
.info Подойдет для информационного сайта, например, сайта новостей. Стоимость — 10 дол¬
ларов в год.name, . ws TLD . name и . ws предназначены для личных сайтов. Можно зарегистрировать в этих зо¬
нах и сайт компании, но это будет несолидно. Стоимость — 10 долларов в год• tv Домены в этой зоне предоставляются ТВ-компаниям. Стоимость — от 35 долларов в год
.mobi Популярный новый домен, предназначен для сайта с контентом о мобилках, мобильныхустройствах и т.д. Стоит дороже, чем обычный . сот или . ws — 20 долларов в год• ru Подчеркивает принадлежность сайта России. Для регистрации домена в этой зоне выдолжны предоставить регистратору копии 2,3 и 5 страниц гражданского паспорта (или
1, 2, 3, 11 страницы для граждан Украины). Если не считать этого требования, зареги¬
стрировать домен может каждый желающий при наличии паспорта. Стоимость доме¬
на — 15-20 долларов в год• иа Подчеркивает принадлежность сайта Украине. Но зарегистрировать сайт в этой зонеможет не каждый. Во-первых, нужно предоставить копию документов о регистрации тор¬
говой марки. Если вы хотите зарегистрировать домен, скажем, pupkin.ua, то должны
быть владельцем торговой марки Pupkin. Во-вторых, многих отпугнет высокая цена —
 75 долларов в год Регистрацией доменов занимаются специальные компании — регистраторы. Как
правило, эти же компании предоставляют и услуги хостинга, т.е. являются хостерами.
Намного проще сразу с доменом заказать и хостинг. Конечно, при желании вы можете
заказать домен у одной компании, а хостинг купить у другой, но тогда в панели управ¬
ления доменом нужно будет указать серверы имен (NS) второй компании, чтобы все
запросы к доменному имени были переадресованы на сервер, где физически находят¬
ся файлы вашего сайта.Проверить доступность доменного имени можно с помощью специальной формы,
которая есть на сайте каждого хостера/регистратора. Какую-то определенную компанию
рекомендовать не хочу, дабы не делать никому бесплатной рекламы и оградить себя от
нареканий пользователей — вот вы в книге посоветовали, а мне этот хостер не понра¬
вился. Ищите сами: сравнивайте тарифные планы, читайте отзывы пользователей и т.д.Оплатить домен и хостинг можно несколькими способами. В большинстве слу¬
чаев можно оплатить через банк или через систему Webmoney. Электронные деньги
Webmoney, конечно, очень удобны. Но они не являются деньгами в прямом смысле
Выбор хостинга. Настройка локального веб-сервера27слова, а если возникнут проблемы с хостером, вы вообще не сможете доказать, что
платили ему деньги, поскольку Webmoney — это не денежные знаки. Лучше всего
потратить немного времени и оплатить услуги хостера через банк — в этом случае у
вас останется квитанция об оплате, которую следует сохранить. В квитанции обычно
требуют указать номер заказа (вы заказываете хостинг и домен, формируется заказ,
его номер сообщается вам, а после вы оплачиваете этот заказ) — это необходимо для
автоматической обработки всех платежей. Но кроме номера заказа в квитанцию об
оплате нужно вписать, за что именно производится платеж — указать имя домена,
тарифный план хостинга. Желательно указать номер договора, а сам договор потре¬
бовать от хостера с мокрой печатью, а не в электронном виде. В случае каких-либо
недоразумений все эти документы понадобятся вам, чтобы отстоять свою правоту в
суде.Мы разобрались с выбором домена и хостинга, самое время приступить к созда¬
нию локального веб-сервера.2.4. Локальный веб-сервер под управлением WindowsВозможно, у вас есть желание установить локальный сервер именно для тех са¬
мых “академических” целей. В этом случае вам понадобится следующее программное
обеспечение:• веб-сервер Apache (www. apache. org) — используется для запуска Drupal;• интерпретатор РНР (www. php. net) — выполняет код Drupal (CMS Drupal на¬
писана на языке РНР);• сервер баз данных MySQL (www. my sql. com) — используется для хранения дан¬
ных вашего сайта.ПримечаниеВ Windows Vista и Windows 7 запуск установочных программ нужно производить от име¬
ни администратора. Для этого щелкните на установочном файле программы и выбери¬
те команду Запуск от имени администратора.Сначала нужно установить веб-сервер Apache. Как правило, с этим проблем не
возникает. Затем нужно установить РНР. Обязательно скачайте инсталлятор РНР, а не
ZIP-архив, иначе придется прописывать РНР в конфигурационном файле Apache са¬
мостоятельно. При установке РНР нужно правильно выбрать тип вашего веб-сервера
(рис. 2.1) и указать путь к конфигурационному каталогу Apache (обычно это подка¬
талог conf каталога, в который вы установили веб-сервер Apache, рис. 2.2). После
того как интерпретатор РНР будет установлен, нужно установить сервер баз данных
MySQL и перезагрузить компьютер. В 99% случаев вы получите рабочий веб-сервер
под управлением Windows.Есть еще один способ установки локального сервера — ХАМРР. Пакет ХАМРР —
это Apache +РНР + MySQL + FTP-сервер “в одном флаконе”. Скачать пакет ХАМРР
можно по адресу: www. apachef riends. org/en/xampp. html.
28Гпава 2шшштшкттжWeb Sen» Setup
5sect fe V.eb Cer' a /ou v* isn cetuD.l,S.4v.00ufc
2.0.x Modus« ^DoO'.p 2.2,> *',OGwi^, Адата
in IC-PX rcc*-'-
US Pasted
■ ■ IIS' CGI:jsa4' . 0 Sambar Server?<£tSer.e \ 'es jet ^ Si
Оте CSXDo ^ot seiuo з eo se? er■ЙИA/c. 2. /. Выбор веб-сервера при установке интерпретатора РНРApache Configuration: DirectoryЕто-se to detect die a recto» ,■ co4t&''!ng tre Ара^е Ct Apache Cc.^jraton D rector-/:1С;Н%ШЙ1шп£1 З39, se.,., {сIjextCc-rrdA/c. 2.2. Выбор конфигурационного каталога ApacheПримечаниеЕще раз напоминаю, что для установки ХАМРР в Windows Vista или Windows 7 нужно
щелкнуть на установочном файле правой кнопкой мыши и выбрать в раскрывшемся
контекстном меню команду Запуск от имени администратора.Данное решение отличается максимальной простотой установки и использова¬
ния. Все, что вам нужно, — это установить один пакет программного обеспечения
и перезагрузить компьютер. После перезагрузки компьютера вы сможете управлять
Выбор хостинга. Настройка локального веб-сервера29серверами Apache, FileZilla (FTP-сервер) и MySQL с помощью единой панели управ¬
ления, что очень удобно (рис. 2.3).лАНг*2 Ccntroi ?anel ” SrellЛАрасНе Fiends Edition;"S-stupMcd-iles£ort-Checf(. \J SvcApache< £*plcre^ с.MySqlStartS-Mз|-.j SvcFifgZi!!aSrart ,1-'S'/C''■lercury5t3T !Help1Tom ratV. =4j;ХАМ?£ ~cncrcl Рзав! Ye tJri.cn 2 £-5 J 2 JI13 — 3--2 = »I ftiadcva 6.1 Build 7600 Flacfcris 2
I currsni: Directory: C: \den'4X£ropp
I Status Check QKел;:^£х^л:;шРис. 2.3. Панель управления ХАМРР в Windows 7Для нормальной работы Drupal нужно запустить серверы Apache и MySQL. Если
вы надумали создавать веб-сервер в Windows, тогда настоятельно рекомендую до¬
полнительно скачать пакет MySQL GUI Tools, существенно облегчающий адми¬
нистрирование базы данных MySQL (http: //dev.mysql. com/downloads/gui-
tools/5.0 .html).После установки ХАМРР нужно запустить серверы Apache и MySQL. Для это¬
го щелкните на кнопках Start в строках соответствующих сервисов (см. рис. 2.3).
Остальные серверы запускать, как правило, не нужно. Если в строке сервера MySQL
щелкнуть на кнопке Admin, то запустится браузер с загруженной программой
phpMyAdmin, вызываемой из локального узла (localhost). С помощью этой програм¬
мы можно создавать базы данных, таблицы в них, удалять таблицы, просматривать и
редактировать содержимое таблиц. В общем все, что нужно при работе с базой дан¬
ных MySQL (рис. 2.4).Когда вы будете устанавливать Drupal, то инсталляционные файлы нужно будет
поместить в каталог с: \xampp\htdocs \ (по умолчанию) или в подкаталог htdocs ка¬
талога, в который вы установили ХАМРР.Параметры базы данных следующие (они вам понадобятся при установке Drupal):• имя узла — localhost;• имя пользователя — root;• пароль — отсутствует (ничего не нужно указывать при установке Drupal);• имя базы данных — tes t.Вместо базы данных test можно использовать любую другую, но сначала ее нужно
создать (см. рис. 2.4). В поле Новая база данных нужно ввести название базы данных
и щелкнуть на кнопке Создать.
30Гпава 2Рис. 2.4. Программа phpMyAdmin2.5. Локальный веб-сервер на базе LinuxЕсли вы решили заниматься созданием сайтов на базе Drupal профессионально
или просто желаете испытать Drupal в “боевых” условиях, но не хотите покупать для
этого хостинг, тогда локальный веб-сервер на базе Linux — лучший выбор для вас.
В этой главе будет рассмотрена установка Apache (это и есть веб-сервер), MySQL
(сервер баз данных) и РНР (язык программирования) на базе Ubuntu. Дистрибутив
Ubuntu выбран как самый простой в использовании, что немаловажно для начинаю¬
щих Linux-пользователей. Пользователям других дистрибутивов Linux нужно следо¬
вать тем же рекомендациям, но сам процесс установки будет немного отличаться —
придется использовать другой менеджер пакетов. Пользователи моего дистрибутива
Denix (основан на Ubuntu) могут следовать рекомендациям в этой главе — никакой
разницы в процессе установки не будет.2.5.1. Установка необходимого программного обеспеченияУстановим необходимое программное обеспечение. Нам понадобятся:• веб-сервер Apache (пакет apache2);• сервер баз данных MySQL (пакет mysql-server);• клиент MySQL (пакет mysql-client);• интерпретатор РНР (пакет php 5);• модуль РНР для поддержки MySQL (пакет php5-mysql);
Выбор хостинга. Настройка локального веб-сервера31• библиотека GD, обеспечивающая подцержку графики интерпретатором РНР
(пакет php5-gd);• интерфейс командной строки РНР — для упрощения отладки сценариев (пакет
php5-cli).Для установки Apache нужно ввести команду:sudo apt-get install apache2Для установки веб-сервера нужно скачать 3,3 Мбайт архивов, а после установки
сервер займет чуть больше 10 Мбайт дискового пространства (рис. 2.5).den@deri-<jesktop:-$ sudo apt-get install apache! !.*;Чтение списков пакетов... Готово К:Построение дерева зависимостей' Т-;Чтение информации о состоянии... Готова , ■Будут установлены следующие дополнительные пакеты;
apache2-tnpra-workeг apachei-utils apache2.2-bin apache2.2-coi»on libaprl
libaprutill libaprotill-dbd-sqlite3 libaprutill-ldsp .<.Предлагаемые пакеты: ь/-’• apache2-dac apache2-5tiex.ec apache2-suexec-custof# ;НОВЫЕ пакеты, которые будут установлены; и/:;apache2 apache2-*pm-worker apacheZ-utils apache2.2-bin apache2.2-common YfAlibaprl libaprutill libaprutill-dfad-sqliteS libaprutill-Idap
обновлено в, установлено f новых пакетов, для удаления отмечено В пикетов, и 125
пакетов не обновлено. . К*Необходимо скачать 3 318кБ архивов. ' :?4'После ванной операции, объём занятого дискового пространства возрастет на МДНЗХотите продолжить Щ/н]?Рис. 2.5. Установка ApacheСразу после установки сервер будет автоматически запущен. Запустите браузер и
введите URL:http://127.0.0.1Вы увидите сообщение It works (рис. 2.6).Теперь займемся установкой MySQL. Нам нужно установить не только MySQL-
сервер, но и MySQL-клиент, позволяющий протестировать работоспособность сер¬
вера:sudo apt-get install mysql-server mysql-clientУстановка MySQL-сервера займет 23 Мбайт трафика и 54 Мбайт дискового про¬
странства (рис. 2.7). В процессе установки будет запрошен пароль пользователя root
сервера MySQL (рис. 2.8). Обратите внимание: по соображениям безопасности дан¬
ный пароль не должен совпадать с паролем пользователя root системы и с паролем
пользователя, от имени которого вы сейчас работаете.
32Гпава 2* vfrJft.* *£ -пллШ4£^еЖх££*м«&*здasr-i^<Л
Mozilfa Firefox I|http:/yi27.0.0.1/жвимииииимяаввкмааШИШV ' - i ~ (■ > ijM v«iМйшййй!%. -* ' л/;,А http;//127,0,0,1/ ;:v..i4. .. , ,It works!This is the default web page for this server.The web server software is running but no content has been added, yet.iS^—««ШтШШяШШшРис. 2.6. Сервер успешно установлен и запущенdengden-desktop:~$ sudo apt-get install aysql-server mysql-clientfsudo] password for deni
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии.,. Готово
Будут установлены следующие дополнительные пакеты:
libdbd-aysql-perl libdbi-perl libhtol-teiaplate-perl libmysqlclientlS
libnet-daemon-peri libplrpc-perl raysql-client-5.1 nsysqt-common
oiysql-server-5.1 Biysql-server-core-S.l
Предлагаемые пакеты;dbishell libipc-sharedcache-pert tinyca sailx
НОВЫЕ пакеты, которые бурут установлены:Ubdbd-sysql-pert libdbi-perl libhtml-template-perl libeysqlclientie
libnet-daemon-perl libplrpc-perl mysql-client вуsql-client-5.1 mysql-coi»
mysql-server roysql-server-5,1 ntysqi-server-core-5.1
обновлено S, установлено 1.2 новых пакетов, для удаления отмечено 6 пакетов,
5 пакетов не обновлено.Необходимо скачать 23ДНБ архивов.После дайной операции, объём занятого дискового пространства возрастёт на 5
Хотите продолжить [Д/м}? |Рис. 2.7. Установка MySQL-cepeepa
Выбор хостинга. Настройка локального веб-сервера 33Рис. 2.8. Ввод пароля root MySQli-cepeepaПроверим, работает ли наш MySQL-сервер. Как и Apache, система автоматически
запустит MySQL-сервер сразу после его установки. Проверку будем осуществлять с
помощью клиента mysql. Введите команду:mysql -р -u rootПрограмма запросит пароль. Введите пароль, введенный при установке MySQL-
сервера:Enter password:После этого (если был введен правильный пароль) вы получите сообщение:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.0.67-0ubuntu6 (Ubuntu)Type 'help;' or '\h' for help. Type '\c' to clear the buffer,
mysql>Можете ввести команду quit для выхода из программы — она нам больше не нужна.
Настало время установить интерпретатор РНР. Установите пакеты php5, php5-
cli, php5-gd Hphp5-mysql:sudo apt-get install php5 php5-cli php5-gd php5-mysqlВ процессе выполнения команды будет загружено 6 Мбайт пакетов, а после их
установки дискового пространства станет меньше почти на 13 Мбайт.2.5.2. Проверка работоспособности связкиДавайте остановимся и разберемся, что уже сделано. А сделано уже почти все.
Установлен веб-сервер, установлен сервер баз данных, установлен интерпретатор РНР
34Гпава 2и модуль поддержки MySQL. Осталось только перезапустить сервер Apache, чтобы
был загружен модуль РНР.Выполните команду:sudo service apache2 restartНа что вы получите следующую “реакцию”:* Restarting web server apache2apache2: Could not reliably determine the server’s fully
qualified domain name, using 127.0.1.1 for ServerName waiting
apache2: Could not reliably determine the server’s fully
qualified domain name, using 127.0.1.1 for ServerName
[ OK ]Сервер “недоволен” тем, что директива ServerName его файла конфигурации
установлена неправильно. Этим мы займемся позже, а пока проверим, умеет ли наш
веб-сервер запускать РНР-сценарии.Перейдите в каталог /var/www и создайте в нем файл test. php:cd /var/wwwsudo touch test.phpsudo gedit test.phpСодержимое файла test. php приведено в листинге 2.1.Листинг 2.1. Файл test, php<?phpinfо();?>Откройте браузер и введите следующий адрес:
http://127.0.0.1/test.phpPHP-функция phpinf о () выводит всю информацию о вашем сервере — от версии
операционной системы до установленных расширений РНР. Изучать всю эту инфор¬
мацию необязательно. Главное, что вы ее увидели, что свидетельствует о корректной
связке Apache + РНР (рис. 2.9).Но это еще не все. Проверим, работает ли связка РНР + MySQL. Для этого напи¬
шем сценарий test-db. php (листинг 2.2).Листинг 2.2. файл test-db.php<?mysql_connect('localhost1,'root',’123456') or die(mysql error4>(>>;echo "<hl>OK</hl>";?>Примечание"123456"— это пароль пользователя root (MySQL), указанный при установке. У вас он
будет другим.
Выбор хостинга. Настройка локального веб-сервера35l'u: {'/re У*f,*. l;\:;:osy Яоо«..;;;сгкг ']}'•■';■’* Н/.-:р |Mcrv./rfi' L^:evt He.srJ :-ч-Г' :ЙИИИSystwmLisU/ сг;: -iicMcfi 2 t З^М.-Ч-ег c-i;c *18 Ub^r'a. sMp W-дг. FobBuild Datefob 4 ЛС10 2 С: 12Server AP!A;vcI'g 2.0 H;:r oi.-.-iVirtual Directory SupportConfiguration file
(php.ini) Path^Лг.-рКрЗм^/и' ?:Loaded Configuration FiteScan this dir for
additional .ini flies/olc/r.-!' ’»: !•-«??./!'Cl -f сadditional .ini file*, parsed/c‘c<'pi'p’fl/rH)tV.r..-:^/ror*r ii1'ре;"-, ':•:PHP APIPHP Pvtominnтупе5:d domain name,Щiully qualified! [ок зРис. 2.9. РНР работает!Аналогично, введите в браузере адрес http: //127.0.0.1/test-db.php. Если вы
увидели сообщение ОК (рис. 2.10), значит, связка Apache + РНР + MySQL настроена
корректно, с чем я вас и поздравляю!Fj’ti £d:t Vi cw H^tCHY 0ooJrtnarK5 Too*?- ' % iv.j|W*‘127 0.0 West dbphpMost Vjr.;ty'i-' :,• Gc4t-i^ 3tarti?:f 'Latest Heattones -
?’i'(!7.0.0 l/tebt-iJb.phi;-ч-OK;№мж?A<c. 2,10. Связка Apache + PHP + MySQL работает!
36Гпава 22.5.3. Настройка ApacheПо большому счету, только что настроенный сервер уже можно использовать для
написания ваших сценариев. Но все же он пока полностью не настроен. Не знаю, как
вы, а я не люблю, когда у меня в системе что-то настроено не полностью.Помните, что Apache “сердился” при запуске, жалуясь на отсутствие директивы
ServerName. Откройте файл /etc/apache2/apache2 .conf (в других дистрибутивах этот
файл может называться httpd. conf или httpd2. conf) и добавьте в него (можно просто
в самое начало) директиву ServerName, задающую имя сервера (в нашем случае denis):ServerName "denis"ПримечаниеЧуть позже будет приведен файл конфигурации Apache с русскоязычными коммента¬
риями.Сохраните файл конфигурации. Имя denis у нас нигде не зарегистрировано. По¬
скольку мы не будем ради локального сервера настраивать еще и DNS-сервер, то про¬
сто нужно добавить информацию об имени "denis" в файл /etc/hosts:127.0.0.1 denisПерезапустите сервер:sudo service apache2 restart
[sudo] password for denis:* Restarting web server apache2 ... waiting [ OK ]Как видите, никаких возражений со стороны сервера больше нет. Вот теперь мож¬
но открыть браузер и обратиться к нему по такому адресу: http: //denis/. Все будет
работать, как нужно (рис. 2.11).' - w Getfino sta't.-.-i" Um.t.l w-a-n.h-',It works!This Is the default web page for this server,The web server software is running but no content has been added, yet.Puc. 2. 11. Директива ServerName успешно задана
Выбор хостинга. Настройка локального веб-сервера37Для самых любопытных читателей — листинг файла конфигурации с русскими
комментариями (листинг 2.3). В исходном файле комментариев больше, лишние я
просто удалил. Прочитав листинг 2.3, вы узнаете, как настраивать Apache2 “от и до”,
поскольку практически все настройки хранятся в этом файле.Листинг 2.3. Файл конфигурации Apache2 (/etc/apache2/apache2. conf)## Директивы файла конфигурации делятся на три группы.# 1.Общие директивы, влияющие на функционирование всего сервера# 2.Директивы, определяющие поведение главного сервера (или# сервера по умолчанию). Они также распространяются на# виртуальные узлы, но могут быть переопределены при объявлении# виртуальных узлов.# 3.Настройки виртуальных узлов. С помощью виртуальных узлов# можно заставить один процесс Apache обрабатывать запросы по# разным IP-адресам или доменным именам### # Раздел 1: Общие директивы## Влияют на функционирование всего сервера## Задает имя сервера. Имя сервера в идеале должно быть# зарегистрировано в системе доменных имен, т.е. совпадать с# доменным именем вашего компьютера.Но, поскольку вы будете# использовать сервер только для отладки собственных# PHP-сценариев, имя можно задать любое, прописав необходимое# в файле /etc/hosts, что и было показано выше.ServerName "denis"## ServerRoo't: задает главный каталог, в котором хранятся# конфигурационные файлы, журналы ошибок и событий## Значение по умолчанию — /etc/apache2, обычно не нужно его# изменять#ServerRoot "/etc/apache2"## Для принятия серилизации файл блокировки должен быть сохранен# на локальном диске##<IfModule !mpm_winnt.c>#<IfModule !mpm_netware.c>LockFile /var/lock/apache2/accept.lock
#</IfModule>#</IfModule>## PidFile: файл, где сервер хранит свой идентификационный# номер процесса, который присваивается серверу при его запуске#PidFile ${APACHE_PID_FILE}# i . . . • ■
38Гпава 2# Timeout: задает тайм-аут получения-отправки данных#Timeout 300## KeepAlive: обычно соединение с сервером закрывается после# обработки запроса. Данный параметр (если он включен, т.е.# установлено значение On) позволяет создавать так называемые# постоянные соединения, где допускается более одного запроса# серверу за время сеанса. Чтобы выключить эту функцию,# установите значение "Off"#KeepAlive On## MaxKeepAliveRequests: задает максимальное число запросов во# время постоянного сеанса. Значение по умолчанию — 100,# значение 0 означает неограниченное количество запросов.# Для максимальной производительности установите большое# количество запросов.#MaxKeepAliveRequests 100## KeepAliveTimeout: таймаут (в секундах) для постоянного# соединения.# По умолчанию:# если за 15 секунд от клиента не поступило ни одного запроса,# соединение будет закрыто#KeepAliveTimeout 15
#### Настройка пула сервера Server-Pool Size Regulation
### Модуль prefork# StartServers: количество запускаемых процессов сервера# (при запуске сервера)# MinSpareServers: минимальное число серверов на "подхвате",# которые будут ждать запросы клиентов# MaxSpareServers: максимальное число серверов, ожидающих# запросов# MaxClients: максимальное число клиентов# MaxRequestsPerChild: максимальное число запросов (для каждого# процесса сервера)
cifModule mpm_p'refork_module>StartServers 5
MinSpareServers 5
MaxSpareServers'10
MaxClients 150
MaxRequestsPerChild 0
</IfModule># To же самое, но для модуля worker
cifModule mpm_worker_module>StartServers 2
MaxClients 150
Выбор ^хостинга. Настройка локального веб-сервера39MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild О
</IfModule># Эти параметры (имя пользователя и группа, от имени которых# работает сервер) нужно установить в /etc/apache2/enwars
User ${APACHE_RUN_USER)Group ${APACHE_RUN_GROUP)## AccessFileName: Задает имя файла, содержащего директивы# управления доступом по умолчанию .htaccess (рекомендуется# запретить доступ к этим файлам, см. ниже)#AccessFileName .htaccess## Следующие строки запрещают Веб-клиентам просматривать файлы# .htaccess и .htpasswd#<Files ~ "A\.ht">Order allow,deny
Deny from all
</Files>## DefaultType: MIME-тип по умолчанию, который будет# использоваться для вывода документов, тип которых определить# не удалось. Если ваш сервер содержит в основном# HTML-документы, тип "text/plain" — хороший выбор Если же# сервер содержит бинарные данные, лучше выбрать М1МЕ-тип# "application/octet-stream"#DefaultType text/plain## HostnameLookups: определяет, что будет вноситься в журнал# сервера — доменные имена клиентов, например www.apache.org# (значение on), или их IP-адреса, например 204.62.129.132# (значение off). Учтите, что включение этой опции будет# подтормаживать работу сервера, поскольку он будет разрешать# IP-адреса в доменные имена перед записью в журнал#HostnameLookups Off# ErrorLog: задает местоположение журнала ошибок#ErrorLog /var/log/apache2/error.log## LogLevel: позволяет установить уровень протоколирования# (для журнала ошибок). Возможные значения:# debug — в журнал заносятся все сообщения сервера# info — информационные и более "тяжелые" — уведомления,# предупреждения, ошибки и т.д.# notice - уведомления и более "тяжелые"# warn — предупреждения и более "тяжелые"
40Гпава 2# error — ошибки# crit — критические ошибки# alert'и emerg — "чрезвычайные" происшествия#LogLevel warn# Подключаем конфигурацию модулей:Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf# Подключаем пользовательскую конфигурацию:Include /etc/apache2/httpd.conf# Листинг портовInclude /etc/apache2/ports.conf## Следующие директивы позволяют определить формат журнала,# который будет использоваться вместе с директивой CustomLog# (см. ниже)#LogFormat "%v:%p %h %1 %u %t \"%r\" %>s %b \"%{Referer}i\"
4>\"%{User-Agent)i\"" vhost_combinedLogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer)i\" \"%{User
^-Agent}i\"" combinedLogFormat "%h %1 %u %t \"%r\" %>s %b" common
LogFormat "%{Referer)i -> %U" referer
LogFormat "%{User-agent}i" agent## Пользовательский журнал, информация в него вносится в# соответствии с LogFormatCustomLog /var/log/apache2/other_vhosts_access.log vhost_com '
^bined## Пользовательские ответы на ошибки могут быть установлены как:# 1) обычное текстовое сообщение; 2) локальные редиректы;# 3) внешние редиректы## Несколько примеров:#ErrorDocument 500 "The server made a boo boo."#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pi"#ErrorDocument 402 http://www.example.com/subscription_info.html### Сервер может отправлять сообщения об ошибках на разных языках## Нужно использовать Alias для перенаправления любой ошибки# /error/HTTP_<error>.html.var на вашу коллекцию многоязычных# сообщений об ошибках## Вы можете изменить внешний вид сообщения об ошибках без# изменения любого файла по умолчанию добавлением строки:## Alias /error/include/ "/ваш/include/nyTb/"
Выбор хостинга. Настройка локального веб-сервера41## которая позволяет вам создавать собственный набор файлов,# созданных по образу и подобию файлов из каталога# /usr/share/apache2/error/include/, новые файлы нужно# скопировать в каталог /ваш/include/nyTb/# Для работы "международных" сообщений об ошибках нужны модули# mod_alias, mod_include и mod_negotiation## Alias /error/ "/usr/share/apache2/error/"## <Directory "/usr/share/apache2/error"># AllowOverride None# Options IncludesNoExec# AddOutputFilter Includes html# AddHandler type-map var# Order allow,deny# Allow from all# LanguagePriority en cs de es fr it nl sv pt-br ro# ForceLanguagePriority Prefer Fallback# </Directory>## ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var# ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var# ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var# ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var# ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var# ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var# ErrorDocument 410 /error/HTTP_GONE.html.var# ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var# ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var# ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.
*5>var# ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var# ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var# ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var# ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var# ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var# ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var# ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var# Добавить дополнительные настройки
Include /etc/apache2/conf.d/# Добавить файл, содержащий конфигурацию виртуальных узлов
Include /etc/apache2/sites-enabled/При настройке веб-сервера вам нужно знать, что кроме конфигурационного файла
Apache существует еще и конфигурационный файл РНР (/etc/php5/apache/php.
ini), который в ряде случаев тоже подлежит редактированию (например, для отклю¬
чения небезопасных функций или при перемещении на другой сервер, где параметры
РНР другие — чтобы протестировать работоспособность сайта). Листинг этого файла
приведен в приложении А.
42Глава 22.5.4. Установка FTP-сервераДля тестирования вашего сайта вполне хватит Apache, РНР и MySQL, а поскольку
доступ к файлам сайта осуществляется локально, то FTP по большому счету и не ну¬
жен. Но в состав ХАМРР входит и FTP-сервер. Чтобы пользователи Linux не чувство¬
вали себя обделенными, настроим FTP-сервер в Linux.В этой главе будет рассмотрен FTP-сервер ProFTPD — это самый лучший FTP-
сервер для Linux. Настройка опять будет производиться на базе Ubuntu (чтобы было
соответствие с ранее приведенным материалом). Полную настройку, включающую
редактирование конфигурационного файла ProFTP, мы рассматривать не будем для
экономии объема книги и вашего времени. Мы рассмотрим только подключение к
серверу и использование базового FTP-клиента — программы ftp. Если вам нужен
более продвинутый клиент, установите программу Filezilla (входит в состав репозито¬
риев большинства дистрибутивов Linux, а в некоторых дистрибутивах даже устанав¬
ливается по умолчанию),Для установки FTP-сервера введите команду:sudo apt-get install proftpdПеред установкой команда apt-get сообщит вам, какие дополнительные пакеты
будут установлены, какой объем информации из Интернета будет загружен и сколько
места займет FTP-сервер после установки:Чтение списков пакетов... ГотовоПостроение дерева зависимостейЧтение информации о состоянии... ГотовоБудут установлены следующие дополнительные пакеты:proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-4>pgsqlПредлагаемые пакеты:
proftpd-docНОВЫЕ пакеты, которые будут установлены:proftpd proftpd-basic proftpd-mod-ldap proftpd-mod-mysql prof
4>tpd-mod-pgsqlобновлено 0, установлено 5 новых пакетов, для удаления отмечено
0 пакетов и 318 пакетов не обновлено.Необходимо скачать 1502ИБ архивов.'После данной операции объем занятого дискового пространства
возрастет на 2822кВ.Хотите продолжить [Д/н]?В процессе установки FTP-сервера система спросит вас (рис. 5.12), как следует
запускать FTP-сервер — самостоятельно или через inetd. Здесь inetd — это устарев¬
ший суперсервер для запуска различных сетевых служб, в Ubuntu он не используется,
поэтому нужно выбрать самостоятельный запуск.Затем вы увидите процесс автоматической настройки FTP-cepBepa:Добавляется системный пользователь 'proftpd' (UID 117)Добавляется новый пользователь 'proftpd' (UID 117) в группу
’Ь 'nogroup' ...Не создается домашний каталог '/var/run/proftpd'.
Выбор хостинга. Настройка локального веб-сервера43Добавляется системный пользователь 'ftp' (UID 118) ...
Добавляется новый пользователь 'ftp' (UID 118) в группу
^ 'nogroup' ...Создается домашний каталог '/home/ftp' '/usr/share/proftpd/templates/welcome.msg' -> '/home/ftp/
^welcome.msg.proftpd-new'* Starting ftp server proftpd [ OK ]Лайл "разка Вид Тевчпкаг. спэявчаrfl Ргг.пгч* моле г 6 уть “,<vy) . ;I; <.{-чс-стсягйль;‘ЫЙ cevssep. Кл»Т!'й <г.о-:соаwJBIBiiiSяИШИвВЯВИВf. ftp-e<rfs-KUr' R £•:■■■;•■
запуск*гь pic'Tr'd scдругой с'ор'омьч поак/з-^-ми м^сго,Щ! Г*^П;/СКЗГ;^ ^ro^Trd КаК ~iCj< “£/:=*--«* 'Л-Г/*'Й; НОВО Г:) filj-X'-fi'Cc Пр/ ЧЛ.-^ДО?-* Г;/СГ.Щ Запуск ого ’г tiXi:шшш|§ш11■шшлшшитРис. 2.12. Как запускать FTP-cepeepСначала будет создан пользователь proftpd, от имени которого будет работать наш
сервер, затем этот пользователь будет добавлен в группу nogroup. После этого будет
создан еще один пользователь — ftp, который обычно используется для анонимно¬
го посещения FTP-сервера. Когда пользователи регистрируются на FTP под именем
anonymous, FTP-сервер аутентифицирует их как пользователя ftp. После настройки
сервера он будет запущен.Попробуем подключиться к нашему серверу:ftp localhostПримечаниеКстати, в Ubuntu 10.04 FTP-сервер стал отвечать на запросы только после перезапуска
компьютера, поэтому после его установки введите команду sudo reboot. Самое инте¬
ресное, что сам сервер до перезапуска компьютера был запущен, но отказывался при¬
нимать запросы. Очевидно, причина была в моих настройках брандмауэра, но разби¬
раться особо я с этим не стал, а просто сделал то, что предложено в этом примечании.Вот пример сессии с нашим FTP-сервером:
44Гпава 2Connected to localhost.220 ProFTPD 1.3.2c Server (Debian) [::ffff: 127.0.0.1]Name- (localhost:denis): denis331 Password required for denis
Password:230 User denis logged in
Remote system type is UNIX.Using binary mode to transfer files.
ftp> Is200 PORT command successful150 Opening ASCII mode data connection for file list
-rw-r—r— 1 denis denis 110592 Apr 8 03:50 30.doc
drwxr-xr-x 3 denis denis 4096 Dec 30 07:11 Library
drwxr-xr-x 12 denis denis 4096 Feb 15 10:32 My_distro
-rw-r—r— 1 denis denis 99840 Jan 10 07:21 add5.doc
-rwxr-xr-x 1 root root 4090 Jul 27 2008 avahi-daemon-check-
*bdns ..sh-rw-r—r— 1 denis denis 594761 Apr 5 04:43 cilinder.png
-rw-r--r— 1 -denis denis 273 Dec 29 12:31 config.php
-rw-r—r— 1 denis denis 387 Jan 9 12:13 denix.tar.gz
-rw-r—r— 1 root root 1588 Apr 3 09:38 dhclient.conf
-rw-r--r— 1 denis denis 142848 Apr 3 14:10 glava28.doc
-rw-r—r— 1 denis denis 141312 Apr 3 10:40 glava29.doc
-r—r—r— 1 root root 9130 Jan 17 12:23 md5sum.txt
-rw-r—r— 1 denis denis 782473 Apr 5 04:44 none.xcf
-rw-r—r— 1 denis denis 98304 Jan 1 12:49 remont.doc
-rw-r—r-- 1 denis denis 548299 Dec 19 09:55 si.png
-rw-r—r— 1 denis denis 544309 Dec 19 09:55 s2.png
-rw-r—r— 1 denis denis 323973 Apr 5 04:42 sphere.pngdrwx 2 denis denis 4096 Jan 9 11:15 themesdrwxr-xr-x 2 denis denis 4096 Jan 1 14:45 tmp
-rw-r—r— 1 denis denis 123677 Feb 15 04:49 toe.xml
226 Transfer complete
ftp> quit221 Goodbye.Сначала сервер выводит стандартное приветствие — свое название и версию. Во¬
обще из соображений безопасности принято такое, приветствие отключать — чем
меньше информации мы предоставляем злоумышленнику, тем лучше. Но поскольку
мы используем FTP-сервер в локальной сети и к нему нет доступа из Интернета, то
особо беспокоиться не о чем.Далее осуществляется вход пользователя denis. После входа на FTP-сервер поль¬
зователь получает доступ к своему домашнему каталогу. Команда Is выводит содер¬
жимое домашнего каталога пользователя. Пользователь с именем denis должен быть
зарегистрирован в системе. Вывод домашнего каталога я немного сократил — не вижу
смысла приводить его полностью.Затем пользователь вводит команду quit, чем завершает свое соединение с сер¬
вером. При работе с FTP-сервером вы можете использовать команды, приведенные
в табл. 2.2.
Выбор хостинга. Настройка локального веб-сервера45Таблица 2.2. FTP-командыКомандаОписание1Выход в оболочку$Запуск макросаaccount IDОтправка команды account удаленному серверу. Используется для
передачи серверу ID пользователя:account <UD>append локальный файл
1 удаленный_файл ]Добавление локального файла к удалвнному файлу на FTP-сервереasciiПереключение сервера в режим передачи ASCII (текстовый), подойдет
для передачи текстовых файлов, но не двоичныхbellFTP-клиент будет издавать гудок по окончании выполнения каждой FTP-
команды серверомbinaryПереключение сервера в двоичный режим передачи данных. Подходит
как для передачи двоичных файлов, так и текстовыхbyeЗакрытие FTP-соединенияcaseПереключение регистра символов, которыми записаны имена файлов
на сервере, в процессе выполнения команды mget. Если вы включили
режим case (по умолчанию этот режим выключен), все прописные бук¬вы в именах файлов на сервере меняются при переносе на ваш компью¬
тер на строчныеcd каталогИзменение текущего каталогаcdupПереход в родительский каталогchmod права файлИзменение прав доступа к файлу или каталогуcloseЗавершение FTP-сессйи, но без закрытия FTP-клиента. После выдачи
этой команды можно будет подключиться к другому серверу с помощью
команды opencrВключение режима поглощения символов CR (возврат каретки) в ACSII-
режимеdelete файлУдаление файла на сервере (при наличии соответствующих прав)debugВключение режима отладкиdir [удаленный ката¬Вывод содержимого удаленного каталога (или текущего каталога FTP-лог]I [локальный файл]сервера, если удаленный каталог не указан). Если указан локальный
файл, то содержимое удаленного каталога будет помещено в него. Для
вывода в файл содержимого текущего каталога используется команда
dir . file.txtЗдесь символ “точка” (.) обозначает текущий каталогdisconnectТо же самое, что и closeexitТо же самое, что и byeformВывод формата файлаget удаленный_файлКопирование удаленного файла с сервера и загрузка его в ваш домаш¬[локальный файл]ний каталог под именем локальный_файл. Если второй параметр ко¬
манды не задан, то удаленный файл будет сохранен в локальной маши¬
не под таким же именемhashПеред каждым блоком данных, отправляемым удаленной машиной, бу¬дет посылаться знак решетки (#)he 1 p [команда]Вывод списка FTP-команд или вывод справки по указанной командеidleВозвращение (установка) значения таймера простоя на удаленной
стороне
46Глаиа2Продолжение табл. 2.2КомандаОписаниеimageСиноним команды binary ■ledИзменение рабочего каталога на локальной машинеIsТо же самое, что и dir >macdefИспользуется для определения макросаmdelete списокУдаление списка файлов на удаленной машине:mdelete файл1 файл2 ...mdir списокВывод содержимого списка удаленных каталогов. Элементы списка
разделяются пробеламиmget списокКопирование списка файлов с удаленной машины на локальную. Эле¬
менты списка разделяются пробеламиmkdir списокСоздание каталога на удаленной машине. У вас должно быть достаточ¬
но прав для создания каталогаmisТо же самое, что и mdirmodeУстановка режима передачи файлов (ascii, или binary)modtime файлОтображение даты последнего изменения удаленного файлаmput списокЗагрузка списка файлов с локальной машины на удаленный серверnewer файлКопирование удаленного файла с сервера, если он новее, чем. имею¬
щийся файл в рабочем каталоге на локальном компьютереnmap, ntransИзменение механизма преобразования имен файловnlistВывод содержимого удаленного каталогаopen адрес сервераОткрытие соединения с удаленным серверомprompt' Включение/выключение режима подтверждения действий при выпол¬
нении множественных команд (mdelete-, mget, mput)passiveПереход в пассивный режим работы. Пассивный режим помогает ре¬
шить проблему с брандмауэром, если он блокирует FTP-соединенияqcВывод символа “?” вместо управляющих символовsendportВключение/отключение режима использования команд pqrt. По умолча¬
нию ftp использует команду port при установке соединения Для каждой
передачи данных. Это позволяет предотвратить задержки при передаче
нескольких файлов. Отключение команд port полезно для некоторых
старых FTP-серверов, которые не поддерживают команды portput локальный файлЗагрузка локального файла на сервер. Если имя удаленного файла неудаленный_ файлуказано, значит, на сервере файл будет называться также, как и на ло¬
кальной машинеpwdВывод имени текущего удаленного каталогаquitТо же самое, что и bye — завершение соединения и закрытие FTP-клиентаquoteЗадание определенных ограничений. Обычно этй команда используется
довольно редко — в чрезвычайных случаях и по совету администратора
сервера г.recvСиноним для getregetПолучение файла, начиная с конца локального файлаrstatusОтображение статуса сервера ■■■•*' • -.ч- >rhelpПолучение справки от удаленного сервераrename старое_имя
новое имяПереименование файла на сервере
Выбор хостинга. Настройка локального веб-сервера47Окончание табл. 2.2КомандаОписаниеresetОчищение очереди командrestartСброс счетчика передач файловrmdirУдаление каталога на сервере (у вас должно быть достаточно прав для
этого)runiqueВключение/отключение режима сохранения файлов с уникальными
именами в локальной системеsendСиноним команды putsiteУстановка определенных режимов сервера или получение специальной
информации. Для получения более подробной информации введите ко¬
манду rhelp sitesize файлПолучение размера файла на удаленной машине (сервере)statusОтображение текущего статуса,structУстановка структуры передачи файловsystemВывод типа удаленной системыsuniqueВключение/выключение режима сохранения файлов с уникальными
именами на удаленной машинеtenexУстановка необходимого типа передачи файлов (только для машин
TENEX)traceВключение/выключение трассировки пакетовtypeУстановка режима передачи файлов. По умолчанию используетсяasciiuser имя парольИдентификация пользователяumaskУстановка маски создания файловverboseВключение/выключение режима информирования. В режиме информи¬
рования выводится больше информационных сообщений2.5.5. Данные для установки DrupalРанее были приведены данные для установки Drupal для локального Windows-
сервера на базе ХАММР. В случае с Linux-сервером данные будут примерно такими же:• каталог, в который нужно поместить инсталляционные файлы Drupal— /var/
www или любой другой, заданный директивой DocumentRoot в конфигураци¬
онном файле Apache;• имя сервера баз данных — localhost или 127.0.0.1;• имя пользователя — root;• пароль пользователя — отсутствует или тот, который вы указали с помощью
команды mysql -р u root;• имя базы данных —test.Процедура установки Drupal будет рассмотрена в следующей главе. Также в главе 3
будет рассмотрена панель управления хостингом Di rectAdmi n.
ГЛАВА 3Установка Drupal на хостинг3.1. Загрузка Drupal и локализацииКак уже было отмечено в главе 1, Drupal можно скачать с сайта разработчиков —
www. drupal. org, а вот файлы русификации придется скачивать с сайта http: //
drupaler. ru. Полностью русифицированную версию Drupal можно попробовать по¬
искать на сайте русского сообщества www. drupal. ru. Однако на момент написания
этих строк седьмой русской версии на этом сайте еще не было.Честно говоря, не понимаю, почему на сайте разработчиков нет локализации для
русского языка. Есть локализации для многих языков, даже для украинского, а вот
для русского приходится скачивать пакет локализации с другого сайта.Для экспорта перевода перейдите по адресу:http://drupaler.ru/translate/languages/ru/export?project=drupalВыберите версию Drupal и щелкните на кнопке Экспорт. Браузер загрузит файл
drupal-7.0-ru-translations.tgz. Это и есть пакет локализации для Drupal.3.2. Подготовка хостинга к установке DrupalПри регистрации хостинга на ваш адрес электронной почты отправляется письмо
с регистрационными данными. В нем указываются следующая информация.• Адрес для входа в панель управления сайта. Обычно выглядит так: http: //ваш_
сайт:номер_порта, например, www.mysi.te. сот: 2222. Вместе с адресом па¬
нели управления приводится имя пользователя и пароль для входа — всю эту
информацию вы можете использовать для управления вашим сайтом.• Адрес FTP-сервера. Этот тот сервер, который вы будете использовать для загрузки
файлов на ваш сайт. Имя пользователя и пароль для доступа к FTP-серверу могут
быть такими же, как для входа в панель управления сайта, а могут и отличаться.• Адрес сервера баз данных (обычно localhost). Дополнительно указываются
тип сервера (MySQL или PostgreSQL), имя пользователя и пароль для доступа
к серверу баз данных. Обычно эти данные отличаются от логина/пароля для
входа в панель управления и на FTP-сервер, которые могут совпадать.• Имя базы данных. У разных хостеров есть разные тарифные планы. В зависи¬
мости от вашего тарифного плана, у вас может быть всего одна база данных,
Установка Drupal на хостинг49а может быть несколько — это зависит от того, насколько дорогой у вас тариф¬
ный план. Если на вашем хостинге уже есть сайт, желательно для установки
Drupal создать отдельную базу данных.Разберемся, как создать отдельную базу данных для Drupal. Напомню, что эта
операция нужна, только если уже на хостинге есть сайт, использующий базу данных.
Иначе вы можете использовать базу данных по умолчанию, имя которой упомянуто в
том самом письме от хостера.Итак, войдите в панель управления хостингом. На рис. 3.1 изображена панель
управления хостингом DirectAdmin. Панель управления DirectAdmin рассматривает¬
ся в книге как одна из самых популярных, поэтому есть весьма большая вероятность,
что у вашего хостера будет именно она. Кроме DirectAdmin, можно еще использовать
панель CPanel — тоже довольно удачная и популярная панель управления, хотя не ис¬
ключен вариант и собственной разработки хостера. Панели управления DirectAdmin и
CPanel — платные, поэтому некоторые хостеры могут сэкономить и разработать соб¬
ственную панель управления. Такой вариант тоже не исключен.Гs тРис. 3.1. Панель управления DirectAdmin: выбор доменаК моему хостингу я “прикрутил” несколько доменов, поэтому при входе в панель
управления нужно выбрать тот домен, на который вы планируете установить Drupal.
Если у вас только один домен, то меню выбора домена показано не будет, вместо него
вы увидите меню, изображенное на рис. 3.2.
50Гпава 3Рис. 3.2. Основное меню Direct AdminСлева выводится панель статистики, из которой следует:• из 3,8 Гбайт дискового пространства занято 3,2 Гбайт;• мой трафик — 236640 Мбайт (в моем тарифном пакете он не ограничен, поэто¬
му я на это значение никогда не обращаю внимания);• на мой хостинг можно “прикрутить” 20 сайтов (сейчас добавлено 11);• создано 7 баз данных;• создано 3 FTP-аккаунта;• создано 6 поддоменов.После выбора домена вы увидите основное меню панели управления (рис. 3.2).В группе Управление доменами щелкните на пиктограмме Управление MySQL,
и вы увидите список уже созданных баз данных (рис. 3.3). Чтобы создать новую базу
данных, щелкните на пиктограмме Создать новую базу (она находится в верхнем ле¬
вом углу окна в блоке Опции).Зачем нужно создавать новую базу данных? Все дело в разграничении нагрузки на
сервер и базу данных. Вы можете установить несколько CMS в одну базу данных. Ра¬
ботать они будут прекрасно, пока вы их тестируете. А как только они начнут работать
в реальных условиях, то обязательно перегрузят сервер. Обычно хостер устанавлива¬
ет лимит запросов, которые можно выполнить к одной базе данных и/или от имени
Установка Drupal на хостинг51Ыют *1.36.2 •Шimsji-..Рис. 3.3. Список баз данныходного пользователя. Например, лимит — 50 запросов за единицу времени, а три
CMS, например, могут создать нагрузку в 60 запросов (по 20 каждая), в итоге все три
работать не будут. То же самое можно сказать и о MySQL-пользователях. Хостер мо¬
жет установить лимит запросов, поступающих от одного пользователя, вот почему
при создании базы данных (рис. 3.4) создается отдельный пользователь. Конечно,
вы можете выбрать из списка уже существующего пользователя, но тогда вы можете
столкнуться с ограничением числа запросов.Некоторые хостеры не разрешают создавать несколько баз данных. Тогда, по край¬
ней мере, нужно создать нескольких пользователей MySQL (если это возможно). Вы¬
берите уже созданную базу данных, чтобы просмотреть имена MySQL-пользователей,
которые к ней подключаются (рис. 3.5). Если вы не помните пароль пользователя,
придется его изменить, перейдя по ссылке modify password.Иногда можно создать двух пользователей к базе данных, даже если у вас всего
один сайт. Один пользователь будет только для вас, например, когда вы подключае¬
тесь к базе данных через панель phpMyAdmin. А второго вы укажите в конфигураци¬
онном файле CMS. У второго пользователя будут несколько урезаны права — он не
может удалять и изменять таблицы, а также передавать полномочия другим пользова¬
телям. Установите права этого пользователя, как показано на рис. 3.6 (изменить права
можно, если перейти по ссылке modify prilileges). Всё это делается ради безопасности
вашего сайта.
52Гпава 3Рис. 3.4. Создание базы данных и пользователя для доступа к нейПосле выполнения всех указанных выше действий у вас должна быть следующая
информация.• Имя сервера баз данных и его тип (в нашем случае — MySQL, поскольку мой
хостер не поддерживает PostgreSQL).• Имя базы данных.• Имя пользователя и пароль.Для удобства можете записать эти данные прямо в книге — в табл. 3.1. Злоумыш¬
ленник уж точно не будет читать эту книгу, чтобы узнать именно ваши параметры
доступа к серверу баз данных.Таблица 3.1. Параметры доступа к базе данных
Параметр ЗначениеИмя сервера баз данных (обычно localhost)Тип сервера (MySQL, PostgreSQL)Имя базы данных
Имя пользователяПароль
Установка Drupal на хостинг5312 DirectA/jmirr.l.BSi& "■'- С : ^Шр^'//91,20з.4,177й':27^СШ.} ОН ’'ПГ^!'кЮ^'М’4^ок.^^оюЬ^ате-бк^отс i'/mcte. " £т \ I%» Настройки MySQL - dkwsorgu_ubuntus Пользователя и
, Us**r - Modify Password PnvdeaesВовяярHost, j а-: \ 'Oeieiдаготы; 6sa -Рис. 3.5. Список пользователей MySQLафми: 2365^0 PS
*№«**: H 'Ж
ini длииытя ?
‘-зл^-чунгы; 3Рис. 3.6. Права пользователя
54Гпава 3В случае с локальным сервером вы можете использовать следующие параметры.• Имя сервера баз данных—localhost.• Имя базы данных — test.• Имя пользователя — root.• Пароль — отсутствует.Подробно настройка локального сервера рассматривалась в главе 2. Перед уста¬
новкой Drupal убедитесь, что сервисы Apache и MySQL запущены.3.3. Загрузка Drupal на хостингДля загрузки Drupal на хостинг мы будем использовать лучший FTP-клиент —
FileZilla, русифицированную версию которого можно бесплатно скачать с сайта www.
filezilla.ru. Но прежде чем начать загрузку Drupal на хостинг, нужно подготовить
программу к загрузке.Вы скачали два архива, один из них содержит Drupal, а второй — локализацию
для русского языка. Распаковать архивы можно с помощью любой программы, под¬
держивающей формат ZIP, — файлового менеджера Total Commander, WinZIP, 7zip,
WinRAR. Распакуйте первый архив в произвольный каталог. Я распаковал архив в ка¬
талог drupal, содержимое этого каталога представлено на рис. 3.7.Избранные со-лта
Щ; Документы
ft„зыка.I !сдрк>6иее »
Папки■й- drupat
£ indudes
!'> database ...
Jlf filetramferp
■в. misc•J*; farbtastic :
i1 '-,h uiл .:|,j modules
■> -x%i( aggregator
i! bi'ock
M bfog
book
,|ф color
comment
contact
v ж contextual;Элементов: 25 '—T-3 "ГГ "йш; : Дата изменения ' ■/.:1т ".Раз-мер- -Ж includes1611.20109:58 ’Папка с файлами: ш rmscisn.2шетПапка с файламиmodules; 161110109:59Папка с файламиprofiles16,11 ШОШПапка с файламиscripts.: 16.11.2010 9:59Папка с файламиsites1611.2010 9:59Папка с файламиi J| themes16.11,20109:®Папка с файлами■ U .htaccess1210,2010 £49Файл‘’HTACCESS"ЙКБ; authorize22,04.20101315Файл ”РНР”7 КБj QCHANGELOG2310,2010 8:30Т ексговый докум.,,48 КБ\ £) COPYRIGHT02,01,201012:20Текстовый докуы...1КБI cron.0211,2009 5-30Файл "РНГ1КБ; ■&} index15.10.200927:07Файл "РНР"2 КБi QlNSTAU.mysqt11.01.201018:25Текстовый докум,..2 КВj INSTALL,pgsqt07,04.20101&07Т екстоеьш докум...2 КБj HjjinstaB2210.2010 5:53Файл "РНР"1 КБ; QjlNSTALL.sqfite01.СШ010 шТекстовый докум..,2 КБj йINSTALLШ0Ж02А9Текстовый докум,.,18 КБ| Cj LICENSE26,01200916:08Текстовый докум*.,18 КБ! f-'iMmxmws3059.2010 16:28Текстовый докум...а кб\ L.J robot;11.09.20097:17Текстовый докум,..2 КБКлючевые..,Рис. 3.7. Содержимое каталога drupal
Установка Drupal на хостинг55Теперь откройте архив с локализациями — внутри будут каталоги includes,
themes, modules, profiles и translations. Содержимое этого архива (т.е. только
что упомянутые каталоги) нужно скопировать в каталог drupal. В каждом из этих
каталогов есть . ро-файл с локализацией той или иной части CMS Drupal (например,
модулей, тем, профилей и т.д.). Копирование . ро-файлов в каталог drupal выполня¬
ет локализацию CMS.Кроме того, файл ru.po из каталога архива prof iles/default/translations
нужно поместить в каталог profiles/default/standard/translations. В шестой
версии этого не нужно было делать, видимо, разработчики перевода допустили не¬
большую ошибку. Думаю, в следующей редакции перевода она будет исправлена, а
пока убедитесь, что в каталоге profiles/default/standard/translations есть
файл ru. ро.Перейдите в каталог sites/default и создайте в нем пустой файл settings,
php (рис. 3.8). Это очень важный файл, в нем будет храниться конфигурация базы
данных.Дат» вменений
jdefautt.settings ' 12,10.2010 2:49jseffingi.-.- ,„ 'Ш1ЛН.01<М6TwoФайл “РНР
Файл ' РНР"Размер16 КБ
ОКБПа пт’■sysfog
•J.-. system
>h taxonomy
toolbar
■ Xu tracker
,b; translation-,U trigger;j:-. update
/fe; user
ф. profiles
ф. scriptssstes■ ■ ■ , - ' ' ! - , -settings Файл-PHP" и>ы««еивя: Ш1ЛШО-.05P.?-wep: 0 бзйтРис. 3.8. Создан пустой файл settings .phpТеперь наша CMS Drupal готова к загрузке на хостинг. Содержимое каталога
drupal (а не весь каталог drupal) нужно загрузить в корневой каталог вашего веб¬
сервера. Какой именно каталог является корневым каталогом веб-сервера, зависит
от настроек сервера. После входа на FTP-сервер вы должны увидеть каталог publ ic_
html или www или html (название можно уточнить в службе поддержки). Если у вас
56Гпава 3локальный веб-сервер, тогда откройте ваш файл httpd. conf и найдите в нем ди¬
рективу DocumentRoot — в ней и указывается корневой каталог веб-сервера. Сле¬
довательно, файлы и каталоги из каталога drupal нужно поместить в этот каталог.
Обычно это каталог /var/www, если вы руководствовались рекомендациям из главы 2.
В случае с Windows-сервером на базе ХАМРР нужно поместить файлы в каталог с: \
xampp\htdocs (см. главу 2).ПримечаниеПочему корневой каталог веб-сервера называется корневым? Предположим, что вы
настроили сервер и указали в директиве DocumentRoot, что корневым будет каталог /
var/www. Если в этот каталог поместить файл file. html, то при обращении к серверу
этот файл будет как бы в корневом каталоге: http: / /localhost/file. html — после
имени сервера будет только символ /, не будет указан какой-либо каталог.Запустите программу Filezilla и выберите команду меню Файл ^Менеджер сай¬
тов. В открывшемся окне щелкните на кнопке Новый сайт и добавьте ваш FTP-узел
(рис. 3.9). Для этого вы должны знать имя FTP-сервера, имя пользователя и пароль
для входа. Затем щелкните на кнопке Соединиться.Рис. 3.9. Ввод параметров доступа к FTP-cepeepyЛевая панель окна менеджера FileZilla — это локальный компьютер (рис. 3.10).Перейдите в тот каталог, в который вы распаковали Drupal. Правая панель — это
FTP-сервер. В нем есть каталог public_html — это и есть корневой каталог вашего
веб-сервера. Перейдите в него. Правда, если на вашем хостинге установлено несколь¬
ко сайтов и используется панель DirectAdmin, тогда вам нужно перейти в каталог /
domains/jtfMtf_flOMeHa/public_html (рис. 3.11).
Установка Drupal на хостинг57Рис. 3.10. Подключение к создаваемому веб-серверуПерейдите на левую панель, выберите все файлы и папки в каталоге drupal (ком¬
бинация клавиш <Ctrl+A>), щелкните на выделении правой кнопкой мыши и выбе¬
рите в раскрывшемся контекстном меню команду Закачать на сервер (рис. 3.12).Через некоторое время все файлы будут загружены. Благо, Drupal состоит из мень¬
шего количества файлов (менеджер FileZilla насчитал 1028 файлов), чем Joomla, по¬
этому она будет загружена на сервер быстрее (в моем случае на загрузку Drupal ушло
меньше 2 минут).Теперь нужно исправить права доступа к файлу sites/default/settings .php.
Перейдите в каталог site/default на FTP-сервере и щелкните правой кнопкой мыши
на файле settings. php. В появившемся контекстном меню выберите команду Права
доступа к файлу. Затем в раскрывшемся окне Изменить атрибуты файла установите
права доступа 666 (рис. 3.13).Если у вас локальный Linux-сервер, перейдите в каталог sites /default и введите
команду:chmod 666 settings.php
58Глава 3пар»»:25? the rurrent directory2Ji?Entei^ Passive№>*; Ш.2У.5Л -S0,2j0,4i).№.S>I3J Cpe;-:r:§ А5Сй' iradt -isia с^есйо;» for И.?0
-..." : .'.li-::.СИ1ЙОК ко,,, da■:Ж ■£? htp3::*d? 5 i+rff? 'с? f.r -te.Mm? Г k '■J'Pmi? !,*■■*-Имя файла /о«ме р Ttntfa,''*Иг-яф« -sFesMeoT 11 -■=Hi гягд» ее *’*чсе1 иг tП;Гр2 £03-04.201018:5'J. includesПтгз с "o f- . r27.03,2009 23;5•*«««Папка с ' 'filesТЪтиТфлй1" f :: *.Р 'IfroCi image1т»г«сфГ’"’©.§4.2010ШПггка .ipa 2П«О с <tscriptsП гкtmpi-1102 о:.*;Папка с._fra90ФвйлР5 0-12010 и:# thesesЛапкз с -.nJ&ohp4ЙФлйт РНРGi 052»: l2 5|f 15 чакзгзгсгсе Общлб рзгаер, Ш 753 байтгог. CtuuU paiH«p' 133 6?.i1rРис. 3.11. Переход в корневой каталог создаваемого веб-сайта на хостинге с несколь¬
кими сайтамиИмя файлеРазмер- Тип фай 5; | Имя файла -,у
autobazar
; cgi-binдть на cepsep
нть файлы в 1Бо;брзны18 фэйлое и 8 кэгэпогев, Общий размер: 14
Серсер/Лскальмьм фэйп Нзпрз,,. Фаипнзс — — Lгь каталогСбнОЕИТоУдзяите!йТ2ЛСГСЕ, Общий рэзг-
тор... СостояниеРис. 3.12. Выберите в контекстном меню команду Закачать на серверПользователям локального Windows-сервера ничего не нужно делать, так как по¬
нятие прав доступа в UNIX-представлении в Windows отсутствует.. Все готово для установки Drupal.
Установка Drupal на хостинг59л'То! 03 “Г.аБь.6ерите новые атрибуты для фа1>а ‘'setSngs.php ,
Права владельца'■/ Чтение / Дагись t _ Выполнить. Групповые поава •• ■ -■У Чтение * Запись 'Выполнить- Публичные права :.■■■■*/ Чтение ,*/ Зап-къ ЕыпдлиитьЧисловое значение: 666 ;Бс? монете поставить Ч’ в любое г*есто, чтобы со.'Ра*ить
права доступа ор»зг4«алънь:х файлов.ОКОтнем©Рйс. 3.13. Определение прав доступа — значение 6663.4. Установка DrupalДля начала установки откройте браузер и введите следующий URL:http://ваш_сайт/install.phpПервым делом программа установки попросит вас выбрать метод установки: стан¬
дартный или минимальный (рис. 3.14). В случае стандартного метода установки будут
проинициализированы все модули Drupal, а при минимальном — только несколь¬
ко. Минимальная установка нас мало интересует, поэтому выбираем стандартную.
Пусть вас не беспокоит, что интерфейс программы установки пока на английском
языке — на следующем этапе установки вам как раз будет предложено выбрать язык
(рис. 3.15).Что делать, если в предложенном списке нет русского языка? Убедитесь, что вы
правильно распаковали архив с локализациями и что версия Drupal совпадает с вер¬
сией пакета локализации. Может оказаться, что вы устанавливаете седьмую версию
Drupal, а локализации скачали для шестой версии.Если же с переводом пока никак не получается, смело устанавливайте английскую
версию, а русифицировать Drupal можно будет и после установки. Процесс русифика¬
ции подробно описан на сайте русского сообщества Drupal: http:/ /www. drupal. ru/
node/13024.После выбора языка программа установки проверит, соответствует ли ваш сервер
требованиях Drupal. В большинстве случаев все будет нормально или же инсталлятор
сообщит вам, что именно не так. Но если что-то окажется не так, то что делать даль¬
ше? А дальше нужно просто скопировать сообщение Drupal и передать его в службу
поддержки хостера. Да, именно им. Потому что с самой CMS все нормально. Если не
верите мне, можете развернуть локальный сервер (под Windows это займет считанные
минуты) и установить Drupal в нем — установка пройдет без проблем. Так что пусть
служба поддержки настроит свой сервер надлежащим образом. В самом плохом слу¬
чае придется менять хостинг, но тут виноваты только вы — именно вы изначально
выбрали плохой хостинг.
60Гпава 3Рис. 3.14. Выбор метода установкиРис. 3.15. Выбор языка■ Следующий этап — ввод параметров доступа к базе данных. В большинстве случае
вполне достаточно ввода имени базы данных, пользователя и пароля (рис. 3.16). Если
имя сервера базы данных отличается от localhost, тогда щелкните на ссылке Допол¬
нительные настройки и укажите имя узла (рис. 3.17).
Установка Drupal на хостинг61Рис. 3.16. Основные параметры базы данныхшшшя;4-. С d<.\scig... .V, „у. .V *. ...1 '..."/л.-'; . . ' .Л'... /пь для некоторых сайтов. Ест» вы не зяаете, что
здмь укалыегть, го оставьте настройки по у*лол<ин.4к>, уточните их у
своего кости■locaShost~Cfl* ЪйШ4 6«* А*?же£оы sea# 6а?? дост/пн* черй? ъя'стг.ндгог.^ь-й лор.т, yv.ws’.K гд^са»4г?.л* к >тсл Ваj-г £^яд? гтгег*. дсстуг* (хгг.яе-эсесо '-<реф-иа,с йя.ч ?#.£лмц ezwvo- Buspai с«.-лт.яЛис. J. 7 7. Дополнительные параметры базы данных
62Гпава 3Вы также можете указать альтернативный префикс таблиц. Во-первых, это улучшит
безопасность Drupal (если злоумышленник каким-то образом попытается атаковать сайт
методом SQL-Injection, ему потребуется указать имена таблиц, а он их знать не будет, по¬
тому что вы установите свой собственный префикс таблиц). Во-вторых, если вдруг вам
понадобится установить две разные копии Drupal в одну базу данных, то придется устано¬
вить для них разные префиксы таблиц, чтобы данные из двух установок не перемешались;После настройки базы данных начнется инициализация модулей (рис. 3.18). Про¬
цесс проходит без вмешательства с вашей стороны — нужно только немного подо¬
ждать. Если при инициализации появится сообщение об ошибке, связанной с Ajax
(например, Internal Server Error), ничего страшного, просто обновите страницу,
щелкнув на кнопке Е, — установка будет продолжена с того же места. Паниковать не
нужно, такое редко, но бывает.Рис. 3.18. Процесс инициализации модулейЭтап Установка переводов тоже проходит без вашего вмешательства (рис. 3.19).
Нужно просто подождать. Этот процесс потребует определенного времени, поэтому
не надейтесь, что все пройдет быстро. С другой стороны, заваривать кофе тоже не
нужно — не успеете его выпить.Далее вам предстоит настроить сайт (рис. 3.20). Вам нужно будет ввести название
сайта, адрес электронной почты, который будет использоваться для отправки писем
с сайта (например, при регистрации новых пользователей, при восстановлении па¬
роля и т.д.). При выборе имени администратора (я ввел admin) нужно проявить изо¬
бретательность, лучше не использовать имена вроде admin (на своей тестовой пло¬
щадке я могу себе это позволить, ведь через неделю-другую Drupal будет удалена, а ее
местозаймет другая CMS). Когда вы будете вводить пароль администратора, Drupal
сообщит вам, насколько он надежен (рис. 3.21).
Установка Drupal на хостинг63Импорт переводов интерфейса.с-Выполнено 9 из 33-У Выверит? профильт/ Выбор Я?ШЗV Проверке •фа&оеднйй
*/ Установка 6ат данные
у1 Профиль установка
► Установка переводовV 8ыберж« профильV Еыбор 83ШV" Проверка требоа-а^й
■У Установил базы данных
Vх Профиль установки
Установка переводу»Конфигурирование* сайтаРис. 3,79. Установка переводов:iW.' ’ -V.,;" !■ 'Были сделаны ве" ч«оЯ-од/мые изменения з палке s/res/cfsfiattn фдйяе
sUes/defmk/sewr^ php Длч безо-паеиасти установлены права только на
чтение.О САЙТЕНазвание сайта *Тестовая площадкаАдрес элеггроннои почт
' dhsiJabs@m3ii.ruУЧЁТНАЯ ЗАПИСЬ СЖСЛУЖИВАН!
sare/ia »:зЭлектронныйtih8il3fcs@mai! иРис. J.20. Настройка сайтаВ самом низу страницы конфигурации вам нужно выбрать свой часовой
пояс и установить некоторые параметры (рис. 3.22). Нужно, чтобы часовой пояс
64Гпава 3соответствовал либо вашему часовому поясу, либо часовому поясу вашего сервера.
В идеале часовой пояс сервера и ваш личный часовой пояс должны совпадать, но на
практике такое бывает не всегда — вы можете купить хостинг, находящийся в другой
части страны или даже в другой стране.Рис. 3.21. Имя администратора и парольРис. 3.22. Выбор часового пояса
Установка Drupal на хостинг65Осталось немного подождать (рис. 3.23), после чего вы увидите сообщение о за¬
вершении установки (рис. 3.24).■УУ^сУ :Уг ■■■■У-УУ У- 'У У.- УУУУЬ УУ\УУУУ- УУУуУУУ\ У УУУУ'.:У'У:/--:УУУ:-:У < -,-УУ-.- |§| ьыт сде-пжу see
: stfss/rfefjult/smirrgs.ppp. Для безопасности усга^тттл npass. только нау" ?ыСарПрОверНа 7Г;<5&0&гИйй
V' Устное** 6й.зы
У Профиль ус;а;<оик«г
V УСГЛНОвйй П0р<г»ОДО8
V' Кои^гурирок^и* Сайг*
► Завершение переводаЛ/с. J.2J. Последние штрихиРис. 3.24. Установка завершена
66Гпава 3Перейдите по ссылке, чтобы посетить ваш новый сайт, вы увидите, как выглядит
Drupal-сайт по умолчанию (рис. 3.25) — сразу после установки. Возможно, оформле¬
ние сайта будет немного другим — вполне вероятно, что к тому моменту, пока книга
выйдет из печати и вы ее купите, выйдет следующая версия Drupal.Добро пожаловать на Тестовая площадкаСодержимое глаз-кай с? раяиаы еще ке создано.Рис. 3.25. Вид Drupal-caHma в окне браузера по умолчанию3.5. Проблемы при установке3.5.1. Проблема с AjaxПосле инициализации модулей Drupal при установке может возникнуть ошибка
с Ajax. Об этом мы уже говорили, но данный пункт предназначен для любителей чи¬
тать книгу “по диагонали”. Нужно просто обновить страницу, щелкнув на кнопке ИЗ
браузера, — установка будет продолжена. Надеюсь, в следующий раз обойдется без
ошибок.3.5.2. Проблемы с settings.phpВ каталоге sites/default есть файл default, settings.php. В этом же ката¬
логе нужно создать пустой файл settings. php или же скопировать файл default.
settings .php в новый файл с именем settings .php. Однако нельзя переименовывать
файл default. settings .php в settings .php! В каталоге sites/default должны
быть оба файла, иначе при установке поведение программы инсталляции будет при¬
мерно таким: после сохранения параметров БД вы опять увидите страницу ввода па¬
раметров БД, и так будет продолжаться до тех пор, пока в каталоге sites/default не
будут сохранены оба файла.Также не забудьте установить для файла settings. php права доступа 6 6 6. На ло¬
кальном Linux-сервере правильная последовательность действий будет такой:
Установка Drupal на хостинг67# cd /var/www/sites/default# ср default.settings.php settings.php# chmod 666 settings.phpПрава доступа подробно рассматриваются в приложении Б.3.5.3. Проблемы с базой данныхВсе ошибки, появляющиеся при настройке базы данных, будут связаны с тем, что
вы вводите неправильные параметры. Например, ваш хостинг-провайдер может ис¬
пользовать для MySQL-сервера имя mysql. провайдер, ru, а вы пытаетесь использо¬
вать имя localhost. Обязательно перепроверьте все, что вводите (имя узла, имя базы
данных, имя пользователя, пароль) и повторите настройку базы данных.В главе 2 были приведены параметры доступа к базе данных при настройке ло¬
кального сервера под управлением Windows и Linux.3.5.4. Не отправляются письма с Drupal-сайтаЧаще всего данная проблема встречается на локальном Windows-сервере, когда вы
забыли настроить почту перед установкой Drupal. Ничего страшного, я тоже часто забы¬
ваю это сделать. Просто при установке Drupal на хостинг все уже настроено до вас адми¬
нистратором хостинга, а на локальном компьютере — каждый сам себе администратор.Чтобы устранить проблему, откройте файл конфигурации php .ini (в случае с
ХАМРР этот файл находится в каталоге с: \xampp\php\, в Linux этот файл можно
найти в каталоге /etc/php5). В php. ini нужно найти секцию [mail function] и
исправить параметры SMTP и smtp_port:[mail function]SMTP = mail.ваш_Интернет_провайдер.ru
smtp_port = 25В качестве параметра SMTP нужно указать имя (или IP-адрес) почтового сервера
вашего провайдера.В Linux нужно указать путь к программе МТА (Mail Transfer Agent), обычно в роли
МТА выступает программа sendmail:sendmail_path = "/usr/bin/sendmail -t"Однако не забывайте, что указать путь к sendmail мало, нужно еще настроить сам
sendmail, однако описание настройки этой программы выходит за рамки данной книги.3.5.5. Директива register_globalsДиректива register globals управляет регистрацией глобальных переменных.
Для установки Drupal нужно, чтобы эта директива была выключена. Добавьте в ваш
файл php .ini строку:register_globals = offЕсли вы не являетесь администратором, а на хостинге переменная register_
globals включена, тогда в файл .htaccess (находится в корневом каталоге веб¬
сервера) добавьте строку:php_flag register_globals off
68Гпава 33.5.6. Сообщение Fatal error: Allowed memory size of...Иногда при установке Drupal можно получить сообщение:Fatal error: Allowed memory size of 8388608 bytes exhausted
(tried to allocate 35 bytes)...Обычно данное сообщение можно увидеть на неправильно настроенном локаль¬
ном сервере. В случае с ХАМРР такой ошибки не будет, а вот если вы настраивали
связку Apache + РНР + MySQL вручную, то такая ошибка возможна. Откройте ваш
файл php. ini и установите в нем лимит используемой памяти:memory_limit = 128МПример файла php .ini представлен в приложении А. В следующей главе мы по¬
говорим о базовой настройке сайта.
ГЛАВА 4Базовая настройка Drupal-сайта4.1. С чего начать?Итак, в прошлой главе мы установили Drupal на ваш хостинг (сервер). Что делать
дальше? Во времена шестой версии Drupal вместо пустой главной страницы выводи¬
лась страница с подсказками, где была представлена четкая последовательность дей¬
ствий после установки. Эта последовательность действий актуальна и для Drupal 7.В первую очередь в разделе Конфигурация нужно установить основные параме¬
тры вашего сайта. Далее нужно подключить необходимые вам модули. Прежде чем
подключать модули, подумайте о функциональности сайта. Что должен представлять
собой ваш сайт? Блог? Форум? Набор страниц и форум? От планируемой функцио¬
нальности зависит набор модулей, которые потребуется включить. Включать все мо¬
дули тоже не нужно — зачем понапрасну нагружать сервер? Думаю, понятно, почему
нужно включить модули до наполнения контента. Ведь при создании контента может
оказаться, что не хватает какого-то модуля, — чтобы потом не тратить время на его
включение, модуль нужно включить сразу после конфигурации сайта.После включения всех необходимых модулей нужно подумать о дизайне сайта. Это
нужно сделать только после включения всех модулей, чтобы вы могли видеть, как
выглядит тот или иной модуль в установленной теме оформления. Темы оформления
можно найти в Интернете, а можно создать самому. Оптимальным вариантом с точки
зрения экономии времени является построение собственной темы на базе уже суще¬
ствующей. Найдите в Интернете тему, которая больше всего вам понравится, и отре¬
дактируете ее так, чтобы она соответствовала вашему сайту, например, добавьте свой
логотип, немного подкорректируйте шрифты и цветовую гамму.Наконец, после выполнения всех указанных выше действий можно будет присту¬
пить к публикации материала. Вот почему в этой и следующей главе мы рассмотрим
лишь весь подготовительный процесс (кроме изменения темы сайта), а обсуждение
работы с материалом начнем только в главе 6. Что же касается изменения графиче¬
ского оформления сайта, то эта тема заслуживает отдельного разговора (в этой главе
мы познакомимся только с тем, как установить уже созданную тему оформления). По¬
этому в главе 8 будет рассмотрены вопросы настройки темы оформления и создания
собственной темы.
70Гпава 44.2. Конфигурация сайтаПосле входа на сайт с правами администратора верхнее меню сайта будет таким,
как показано на рис. 4.1. Еще раз уточню, что это меню сможет увидеть только адми¬
нистратор сайта, другим пользователям оно не отображается (или отображается ча¬
стично — в зависимости от прав пользователя).Рис. 4.1. Меню управления сайтомЕсли вы зашли на сайт с другого браузера или компьютера, то для входа в панель
управления используйте следующий адрес: http: //адрес_вашего_сайта/admin.4.2.1. Общие параметры сайтаВыберите команду Конфигурация. Вы увидите страницу изменения основных па¬
раметров сайта, где параметры распределены по группам (рис. 4.2). Начнем с группы
Система. В этой группе есть три подгруппы параметров.WWW .'I/»"» .iit&spiv*'* ,и>.■ ,v >у t.f \A ь „ у^181Конфигурации *Рис. 4.2. Конфигурация сайта• О сайте — изменение основных параметров сайта (название, лозунг, адрес
электронной почты администратора и т.д.).• Действия — управление действиями, которые определены для вашего сайта.
Базовая настройка Drupal-сайта71• Cron — простейший планировщик задач, относящихся к администрированию
сайта. При запуске планировщика cron выполняются проверка обновлений мо¬
дулей, обновление RSS-лент. В группе Cron всего один параметр — периодич¬
ность запуска планировщика cron.Выберите команду меню Системам О сайте. На появившейся странице можно
изменить основные параметры сайта (рис. 4.3). Некоторые их этих параметров уже
были установлены вами при инсталляции Drupal. Самый полезный параметр, кото¬
рый здесь можно изменить и который, вероятнее всего, вы будете действительно из¬
менять в процессе настройки сайта — это Количество сообщений на главной страни¬
це. Название параметра говорит за себя, поэтому пояснять его не стану.Теперь выберите команду меню Система^Действия (рис. 4.4.). Вы увидите список
действий, который может выполнить ваш сайт, например, заблокировать пользова¬
теля или снять с публикации материал. Действия бывают простыми и расширенны¬
ми (сложными). Простые действия не требуют настройки — настраивать там нечего.
А вот расширенные требуют установки дополнительных параметров.Чтобы создать сложное действие, выберите прототип действия и щелкните на
кнопке Создать (рис. 4.5). Давайте рассмотрим пример создания сложного действия.
Выберите действие Снять с публикации комментарий содержащий слова, после
чего нужно указать список слов, разделенных запятыми. В большинстве случаев
это будет список нецензурных слов, который я приводить на иллюстрации не буду
(рис. 4.6). Комментарий, содержащий хотя бы одно слово из этого списка, опубли¬
кован не будет.
72Гпава 4Unpublish content{Снять с публикации комментарий содержащий слова .Изменить а в гора содержимого,..Отменить публикацию, содержащую ключевое слово (ключевые слова)..
Ргл^затк со бщение пользователю..; Отправить почту ,,Пб-енапоаЕ.1ть на URL.. _Выберите сложное действие\у)'\Рис. 4.5. Создание расширенного действияled /3ut beiow Ousngins ;he Description fte!d ti teco?na«nded.. w ot4et ta batter >denti
. iht Trigger cncdu>e «hen a^ignmo sctfcni to- 5>41 cm eveir.s, » л Is toe« if it is a? descf
■iy t-mai1")Ключевые словаЛис. 4.6. Установка параметров расширенного действия
Базовая настройка Drupal-cainra734.2.2. Параметры регистрации на сайтеТеперь мы настроим параметры регистрации на сайте. Сначала нужно решить, а
нужны ли вам на сайте пользователи? Если вы создаете сайт сообщества, безусловно,
пользователи нужны — радй них вы и создаете сайт. А вот если вы создаете информа¬
ционный сайт (что-то вроде каталога продукции компании без возможности заказа
этой продукции), то регистрация пользователей вообще не нужна. Можно, конечно,
предположить, что пользователи будут оставлять комментарии относительно того или
иного товара, но тогда ради нескольких комментариев вам придется бороться с де¬
сятками спамеров. В общем, решайте сами, а я расскажу вам только как настроить
параметры регистрации.Перейдите в группу параметров Л юди^ Настройки учетной записи. Самые важные
параметры находятся в группе Регистрация и удаление (рис. 4.7). В ней вы можете
определить, кто может создавать учетные записи пользователей.РЕГИСТРАЦИЯ И УДАЛЕНИЕ• Кто может создавать аккаунты?администраторхкт, требуется разрешение администратора” ' j “чл- и !• гчты пр<й соз&ыям zsms.w.печать cmi* ад pecМри удалении пользовательское* учсГчой записиф Отк.яюч/ггь учстмую» ъ&пксь ** сохранить всеЯ: <??«>»« «т* учегхуто заоись к снять с пуЪяячаини все ее магеойжлм.■f; Уааялть. учетмую запись и присеомть see ее млтериАпы польза **телю [осп.Удучетную запись и ?>=.сь ее контент-Г г4»Я1ВаМЯ ' Выверите- К'Л’ГОА y&2Jуи(:ГноА SZitKCif '’У^аакПСИИ 1» ЯСЯЬЗаЗ-ЭТёЯЛ'М* iAGiyrРис. 4.7. Параметры регистрации и удаления пользователей• Только администратор — регистрация пользователей будет отключена, но вы
можете создать несколько учетных записей вручную, например, для ваших по¬
мощников. Очень часто пользователи используют один и тот же пароль для не¬
скольких ресурсов — для ящика электронной почты, для доступа к страничке в
социальной сети и т.д. Чтобы не делиться своим паролем, который можно будет
потом использовать для доступа к другим вашим ресурсам, можно создать от¬
дельные учетные записи для ваших помощников. Они будут управлять сайтом,
пока вы будете в отпуске или в командировке. О пользователях и правах досту¬
па мы поговорим в главе 6.• Посетители — посетители смогут регистрировать учетные записи самостоятель¬
но, разрешение администратора не требуется. С одной стороны будет множе¬
ство спамеров, которые будут регистрироваться на сайте автоматически. С дру¬
гой стороны, вам не нужно будет подтверждать регистрацию каждой учетной
записи вручную, знаю по собственному опыту. Когда-то я создал свой форум.
Сначала разрешил регистрацию пользователей без одобрения администратора.
Очень быстро количество пользователей выросло до 900. Большая часть этих
74Гпава 4пользователей были спамерами. Я почистил базу, оставил менее 400 реальных
пользователей и включил регистрацию пользователей только с разрешения
администратора. Но тут возник вопрос: кому должно быть неудобно — адми¬
нистратору или пользователю? Да, мне надоедало постоянно отклонять или
одобрять регистрацию пользователей. А когда я решил одобрять регистрацию
один раз в два дня, то это раздражало пользователей, потому что регистрации
им приходилось ждать два дня. Пришлось модифицировать движок форума,
чтобы он автоматически отсеивал спамеров, но это уже другая история. Если
вы выбрали этот вариант, тогда не выключайте параметр Требуется проверка
адреса электронной почты при создании учетной записи.• Посетители, требуется разрешение администратора — пользователи могут
регистрироваться на сайте, но для подтверждения регистрации необходимо
подтверждение администратора. На ваш адрес электронной почты будут при¬
ходить сообщения о новых пользователях. Данный режим вам очень быстро
надоест, несмотря на то, что он используется по умолчанию. При выборе этого
варианта параметр Требуется проверка адреса электронной почты при созда¬
нии учетной записи можно выключить.Далее нужно выбрать действие, выполняемое сайтом при удалении пользователь¬
ской учетной записи.• Отключить учетную запись и сохранить все содержимое — учетная запись бу¬
дет просто заблокирована, но не удалена. Позже вы сможете восстановить ее.• Отключить учетную запись и снять с публикации все ее материалы — учет¬
ная запись будет заблокирована и весь ее контент (все материалы, принадлежа¬
щие удаляемому пользователю) снят с публикации.• Удалить учетную запись и присвоить все ее материалы пользователю Гость —учетная запись будет удалена без возможности восстановления, а все материалы,
опубликованные удаляемым пользователем, будут “переданы” пользователю
Гость и останутся в публикации от имени анонимного пользователя.• Удалить учетную запись и весь ее контент — учетная запись и весь ее контент
будут удалены без возможности восстановления.В группе Персонализация (рис. 4.8) можно установить параметры персонализации
учетной записи пользователя. Обычно имеет смысл разрешить аватары, но запретить
подписи, поскольку подписи могут содержать спам. Что же касается размера изобра¬
жений, то по умолчанию размер картинки не должен превышать 1024 1024 пикселей,
а размер файла — 800 Кбайт. Помните, что размер файла ограничивается не только
параметрами Drupal, но и параметрами РНР. Размер загружаемого файла ограничива¬
ется директивой upload_max_f ilesize в файле конфигурации php. ini. Одни хосте-
ры устанавливают максимальный размер в 2 Мбайт, другие — 8 Мбайт, некоторые —
больше. В ХАМРР по умолчанию разрешается загружать файлы до 128 Мбайт:upload_max_filesize = 128МНо на 128 Мбайт я бы не рассчитывал, у любого нормального хостера лимит будет
значительно ниже.
Базовая настройка Drupal-cafrra75Рис. 4.8. Параметры персонализации учетной записи пользователяДалее вы можете изменить шаблоны сообщений, которые будут отправлены поль¬
зователем при регистрации на сайте, восстановлении пароля, удалении учетной за¬
писи и в других ситуациях (рис. 4.9). В загруженном мною переводе эти шаблоны
почему-то не были переведены на русский язык (точнее, переведены, но частично),
надеюсь, в будущем файл локализации будет усовершенствован. А пока, если у вас
такая же “картинка”, вам будет, чем заняться — переведите стандартные шаблоны на
русский язык. Значения в квадратных скобках (например, [username]) переводить не
нужно. Если вы не знаете английский язык, то будет повод познакомиться с сервисом
www. translate. ru или любым другим сервисом бесплатного онлайн-перевода.Электронные адресаЯ и'-п n,cjwa«oi.u5fe tsi’tiu
Л iVrtHl т .■'imrofc IZ< f‘rHt i.l'JFJIK-»
if xrbi qiiflt. vtit e -mail coaCm.e-MW, иогым гчздьгойвтеяйы, учетные запаси ксггорич быаи сс'лйачме переменные. fsite js^e'tegin-urf;, tsiis-uri-brsen,-»ад<п -iffij, iuitrx&ncei-ijrtlсоздан учетную ззгась дня Вас на (site rmrftef«• т гс, jgtatof st|site:r!arnelh3s treated зп дссотп? fc?r you You газу nowfn-a in sydicfcns&ws-iinkc» copying зпбра-1'.з;№4c.0«>-Uri?~f"3 " Л onSj ba used оясе to log m and ..wilt tead you to з p-ags where pw can set youyour psswrd, you wd! as. айе 5a log fn ai jsiteilogifi-y^'in tfie ftrtura usirsgi.(36f namel
ourpss SWOftf;Сбхра«йть-«сЬн<Ыгурт4Ию .7Рис. 4.9. Шаблоны сообщений электронной почты
76Гпава 44.2.3. Обслуживание сайтаПерейдите в группу параметров Разработкам Производительность. В этой группе
вы можете настроить параметры кеширования и оптимизации пропускной способ¬
ности сайта (рис. 4.10). Кеширование снижает нагрузку на сервер (как на веб-сервер,
так и на сервер баз данных) и повышает производительность сайта. При включенном
кешировании Drupal создаст HTML-версии каждой страницы сайта. В результате,
когда пользователь будет запрашивать ту или иную страницу, будет отправлена уже
сгенерированная HTML-версия этой страницы. Благодаря тому, что не нужно запу¬
скать РНР и обращаться к базе данных, снижается нагрузка на сервер. Производи¬
тельность сайта повышается, потому что веб-сервер сразу же отправит подготовлен¬
ную HTML-страницу, ему не нужно ждать, пока РНР сгенерирует HTML-код, и не
нужно ждать, пока MySQL-сервер передаст интерпретатору РНР данные из таблиц.
Если кеширование выключено, то все происходит, как описано выше: веб-сервер
запускает РНР для формирования страницы, а тот, в свою очередь, обращается к
MySQL-cepBepy.Кеширование — полезная штука, особенно для большого и популярного сайта, од¬
нако имейте в виду, что при изменении материала или шаблона сайта изменения будут
применены не сразу, а при следующем кешировании. Когда именно это произойдет,
определяют параметры Минимальное время жизни кэша и Максимальное время.
Если максимальное время жизни кеша равно 1 часу, то изменения будут применены
в худшем случае через час. В лучшем — как повезет, смотря сколько времени прошло
с момента последнего кеширования. Слишком малое время жизни кеша устанавли¬
вать не стоит — выигрыш в производительности это даст только на очень загружен¬
ных и часто обновляемых сайтах.
Базовая настройка Drupal-cafrra77Если вам нужно, что бы изменения вступили в силу немедленно, щелкните на
кнопке Очистить все кэши.С целью оптимизации пропускной способности, Drupal может сжимать все CSS-
файлы (файлы стилей) и все JavaScript-файлы в один файл, что снизит количество
запросов и трафик, а следовательно, оптимизирует пропускную способность и снизит
нагрузку на сервер. Можете поэкспериментировать с параметрами Собирать и сжи¬
мать CSS-файлы в один файл и Собирать Javascript-фэйлы в один файл вместо
включения кеширования.В группе Логи и ошибки вы можете установить параметры протоколов Drupal.
В большинстве случаев вас устроят значения по умолчанию, поэтому не следует без¬
думно изменять параметры из этой группы.В группе Режим обслуживания вы можете перевести сайт в режим обслуживания,
активизировав параметр Перевести сайт в режим обслуживания. После этого на
сайт смогут войти лишь пользователи с правом Use the site in maintenance mode. Bee
остальные увидят указанное вами сообщение (рис. 4.11).Рис. 4.11. Перевести сайт в режим обслуживания4.2.4. Поиск и метаданныеГруппа Поиск и метаданные^Настройка поиска содержит параметры индексации
сайта. Индексация позволяет существенно ускорить поиск на сайте с использованием
“родных” инструментов поиска. Чтобы переиндексировать сайт снова, щелкните на
кнопке Переиндексировать сайт (рис. 4.12).Автоматически индексация сайта производится при запуске Cron, т.е. каждые
3 часа (по умолчанию). Для немедленного запуска Cron щелкните на кнопке Запу¬
стить выполнение регулярных процедур в группе параметров Cron (рис. 4.13).Иногда полезно создать синонимы (псевдонимы) для страницы, например, чтобы
пользователи вместо URLваш_сайт/node/1 могли вводить URL ваш_сайт/about.
У одной страницы может быть неограниченное число синонимов. Создать синоним
можно в группе Поиск и метаданные^Синонимы, щелкнув на ссылке Добавить си¬
ноним (рис. 4.14).
78Гпава 4* со&ергмамие сейте. Дrasswas »• Адмииист^регзчйе •» йо*«!р---к;Поисковая с/ю^ма сд-здяст индекс а
прйеидь^о спясси .звдлк croti. Повеление, при имдексгцил wo^ct 6ь>т& скорректированоСТАТУС ИНДЕКСАЦИИУа'гп^ойнд» *-cKj^oei5^o £ ц° О элементов для индексации.К.1УЯЯТОР ИНДГ^САЦИИКоличестк© пунктов, индексируемых за один запуск кронаА/с. 4.12. Параметры поиска?*;«-£уз.% * Лдмл'№сгр’р-о«?<й'*е » к.окф^пдешиз * Огам
крон запущен ушешио
' 1ЯТ/С.У' ‘'ГО” Г -"ОГ -аг^ГЧ Г"(Г?ДРГЬ1>ЫГ -£гГПоследний запуск 4 сек. назад.Залу г гк сгоо каждое •■ проверка обиоменш» модулей и тем, обновлении чоеооиыхА/с. 4.13. Запустить выполнение регулярных процедур:>ssn« »^№й?!»с'?г;Ир'0®%ч«е». йойФя>>?жцйя * Пойся и ««адемяы?Аяьпер^&т^впый адрес ояредс/'вет другой пуп., ло которой/ будет аостулея cyiuecraytceirtA системный. Например, ал* системного г>
«.№de< 1» ысжпо дфвваить дльтернатяяммй — *ab*ui», У еанзго системного пут»! может быть неограниченнее количество
альт^ридти-гиык+ Дсбдеугп- синоним
ФИЛЬТР СИНОНИМОВФильтр ..Нет синомиыоб URL ДлйяЫп-. ошомим.дШствйя:;А/с. 4.74. Синонимы
Базовая настройка Drupal-cairra79Один из способов улучшить поисковую оптимизацию сайта (SEO) — использовать
режим Чистые ссылки (рис. 4.15). Включение так называемых чистых ссылок позво¬
лит использовать ссылки вида ваш_сайт/ user вместо Baiu_caiZT/?q=user, что по¬
ложительно скажется на SEO и ссылки будут запоминаться легче.рвл ?^'ОИф^''/р-ДЦ-.5Я »ir идеек» .‘ssarnplt.ixv&f'Рис. 4.15. Режим использования чистых ссылокПодробно о поисковой оптимизации Drupal мы поговорим в главе 10.4:2.5. Регион и языкВ разделе Регион и язык вы сможете выполнить следующее.• Настроить часовой пояс и указать вашу страну.• Установить формат отображения даты и времени.• Установить язык содержимого (контента) и язык пользовательского интер¬
фейса.• Выбрать перевод сайта и интерфейса пользователя.На момент написания этих строк еще не существовало полного перевода для седь¬
мой версии Drupal, о чем свидетельствует статистика в разделе Перевод интерфейса:
из 3882 элементов переведено на русский язык 3436 элементов (рис. 4.16). ,Рис. 4.16. Общие сведения о переводеИмпортировать более совершенный перевод, когда он появится в Сети, можно
будет на вкладке Импорт. Потребуется выбрать файл перевода (файл с расширением
.ро), выбрать русский язык и щелкнуть на кнопке Импорт — она находится внизу
страницы, поэтому на рис. 4.17 не представлена.
80Гпава 4Рис. 4.17. Импорт перевода4.3. Изменение внешнего вида сайтаНаверное, вам не терпится изменить внешний вид сайта. Темы для Drupal бывают
бесплатными и коммерческими. У каждого типа есть свои преимущества и недостат¬
ки. Преимущество бесплатных тем как раз в их бесплатности и свободном распростра¬
нении. Вы можете установить бесплатную тему на сайт и никто не будет предъявлять
к вам никаких претензий и требовать оплаты. Зато ваш сайт не будет уникальным. Вы
только посмотрите, сколько пользователей скачало выбранную вами тему (обычно на
сайте с темами используются счетчики количества загрузок, по которым определяется
популярность темы) — пусть даже каждый десятый после загрузки темы ее установил,
все равно число получается внушительным. Качество бесплатных тем тоже в неко¬
торых случаях оставляет желать лучшего. Темы ведь распространяются “как есть”, и
вы не можете требовать у их разработчиков чего-либо — тема-то бесплатная. Одни
темы плохо отображают содержимое некоторых модулей, другие — некорректно ото-
'бражаются в разных браузерах. Совместимость со всеми сайтами будет только у самой
простой и ничем не выделяющейся темы.С коммерческими темами все несколько лучше. Количество сайтов, использую¬
щих коммерческую тему, будет значительно меньше. Конечно, сайты с такой же те¬
мой в Сети будут — раз тема продается, значит, ее кто-то купил. Уникальной тема
будет только тогда, когда ее разработают для вас индивидуально, но цены на такие
услуги в Интернете колеблются от 100 до 1000 долларов, в зависимости от сложности
работы. Не думаю, что вы готовы заплатить такие деньги за разработку собственной
уникальной темы. Почему я так думаю? В противном случае вы бы не покупали книгу
о бесплатной CMS Drupal с целью создать бесплатный сайт самостоятельно. Намного
проще было бы обратиться к профессионалам, и за ту же сумму в 1000 долларов они
бы создали вам уже готовый сайт. Можно, конечно, и создать тему вручную — об этом
Базовая настройка Drupal-сайта81мы поговорим в главе 8. Но для этого нужно обладать определенными навыками ра¬
боты с Photoshop или другим графическим редактором.Качество коммерческих тем тоже обычно на высоте — меньше всяких “глюков”,
и даже если тему и нужно будет дорабатывать, то изменения будут минимальными.
Явную ошибку могут исправить и сами разработчики — вы можете потребовать это
от них — ведь вы заплатили деньги за их продукт. Они так же могут модифицировать
тему для вашего сайта, например, добавить ваш логотип, немного изменить цвета.
Как правило, такие доработки стоят дешево — от 10 до 30 долларов.У коммерческих тем есть лишь один существенный недостаток — цена. Как пра¬
вило, она колеблется от 50 до 65 долларов.В Интернете можно найти огромное количество сайтов, предлагающих темы для
Drupal. Коммерческие темы можно поискать на сайте http: //www. easywpthemes.
com/drupal-templates/. На этом сайте тема для Drupal стоит от 53 до 62 долларов.
Попробовать найти бесплатную тему можно на сайтах http: //drupaltemplates. ru/
и http://drupal.ru.После того как вы так или иначе получите файл с темой, перейдите в раздел Внеш¬
ний вид^Установить новую тему (рис. 4.18). Вы можете загрузить файл с темой не¬
посредственно со своего локального компьютера или же указать ссылку на файл темы
в Сети (если есть прямая ссылка). Для установки темы щелкните на кнопке Устано¬
вить, а затем в разделе Внешний вид необходимо будет активизировать только что
установленную тему.Рис. 4.18. Установка новой темы4.4. ОтчетыРаздел Отчеты позволяет сгенерировать следующие отчеты (рис. 4.19).• Отчет о состоянии — общий отчет о работе сайта. Выводятся сведения об об¬
наруженных проблемах, если таковые есть. Из этого отчета можно узнать, уста¬
новлены ли необходимые для полноценной работы Drupal библиотеки, есть
ли проблемы с правами доступа, включены/выключены необходимые дирек¬
тивы РНР. Например, из этого отчета я узнал, что на моем локальном сервере
82Гпава 4не установлена библиотека PECL uploadprogress (рис. 4.20), поэтому Drupal не
может отображать процесс загрузки файлов, например, при загрузке файлов
тем или переводов. Также отчет выводит версии установленного программного
обеспечения (Apache, РНР, MySQL).• Доступные обновления — отчет о доступных обновлениях для используемых
вашим сайтом графических тем и модулей.• Журнал — системный журнал событий. Создание пользователя, вход пользо¬
вателя на сайт, запуск планировщика cron — вот примеры системных событий.
Все они будут записаны в этот журнал.• Ошибки “отказ в доступе” — просмотрев этот отчет, вы найдете попытки не¬
санкционированного доступа к закрытым частям вашего сайта, если таковые
имеются.• Ошибки “страница не найдена” — позволяет обнаружить “битые ссылки”
(ошибка 404). Очень удобный и полезный отчет. При подготовке материала
всегда можно создать ссылку на несуществующий файл, просмотрев же этот
отчет, битую ссылку можно будет исправить.• Популярные поисковые запросы — с помощью этого отчета вы узнаете, что
больше всего интересует аудиторию вашего сайта. Возможно, следует добавить
больше материала по популярной тематике или как-то иначе представить име¬
ющийся, чтобы пользователям было удобнее.• Список полей — выводит список полей по всем существующим объектам.отчеты ’V■1 «а (404;... 1. ;:,t. полейРис. 4.19. Доступные отчеты
Базовая настройка Ргира1-сайта83Рис. 4.20. Общий отчет о работе сайтаНаша экскурсия по панели управления Drupal-сайтом завешена. В следующей гла¬
ве мы поговорим о расширениях (модулях) Drupal.
ГЛАВА 5Расширение функциональности
Drupal — модули5.1. Введение в модули DrupalКак было справедливо отмечено раньше, перед формированием контента сайта
нужно подумать о функциональности, иначе может получиться так, что для публика¬
ции вашего контента у Drupal просто не будет необходимых функций. Допустим, нуж¬
но опубликовать фотографии, а модуля для создания галереи у вас нет. Й вместо того,
чтобы публиковать фотографии, подписывать их и делиться впечатлениями о прове¬
денном отпуске, вы отправляетесь в Интернет на поиски нужного вам модуля. А по¬
сему сани готовят летом, т.е. позаботиться о необходимых модулях нужно заранее.Drupal является модульной системой. И это правильно — только в самых неболь¬
ших системах вся функциональность доступна сейчас и сразу. Все серьезные CMS —
модульные, поэтому именно с помощью модулей (расширений) можно добавить к
сайту необходимую функциональность. Представьте, что бы было, включив разра¬
ботчики в систему все возможные модули сразу — и форум, и галерею, и интернет-
магазин и т.д. В результате получилась бы огромная и медленная система, а функции
ее были бы востребованы пользователями в лучшем случае на 50%. Потому что кому-
то нужен форум, кому-то галерея, кому-то — интернет-магазин. И очень невелика
вероятность того, что кто-то действительно будет использовать все эти функции. Та¬
ких будет очень немного — тестер программного обеспечения, технический писатель
(вроде меня) или же просто экспериментатор. Всем остальным такая функциональ¬
ность будет не нужна.В этой главе мы разберемся, как включить уже установленные модули, как устано¬
вить модули сторонних разработчиков, а также как настроить самые популярные из
модулей. Не спешите искать модули для Drupal в Интернете — может, в стандартную
поставку Drupal уже входят практически все необходимые вам модули. Разработка
собственных модулей выходит за рамки этой книги, поскольку основная аудитория
читателей — обычные интернет-пользователи, не обладающие навыками програм¬
мирования на РНР, а поэтому приведенная информация будет им неинтересна. Если
же навыки программирования на РНР у вас есть, всю необходимую информацию по
созданию модулей вы можете найти в Интернете, например, вот на этом сайте:http://www.drupal.ru/node/21978
Расширение функциональности Drupal — модули855.2. Установка и активация модулей5.2.1. Активация стандартных модулейПо умолчанию в состав Drupal входит более 40 модулей, но включены не все —
разработчики Drupal не знают, какие модули нужны именно вам. Можно было бы
включить все модули сразу, но тогда бы вы удивились, почему Drupal работает так
медленно. Для включения модулей перейдите в раздел Модули панели управления
(рис. 5.1).Модули делятся на две группы: обязательные и дополнительные. Обязательные
модули вы не можете включить или выключить. А дополнительные вы можете вклю¬
чить, выключить и установить новые модули, которые можно найти в Интернете на
многих сайтах. Дополнительную информацию о модулях можно получить на этом
сайте:http://content-management-systems.info/drupal/projectДля включения стандартного модуля нужно установить флажок, находящийся сле¬
ва от названия модуля. Аналогично, можно отключить модуль. В поле Описание по¬
мимо общей информации о модуле приводится список модулей, от которых зависит
модуль, который вы хотите включить/выключить. Вот описание модуля Comment:Позволяет пользователям комментировать и обсуждать опубликованные
материалы.Требуется: Text (включен), Field (включен), Field SQL storage
(включен)Требуемое для: Forum (отключен), Tracker (отключен)
86Гпава 5Теперь понятно, что для работы нашего модуля требуются модули Text, Field и
Field SQL storage. Если от модуля А зависит модуль Б, то вы не можете отключить
модуль А, пока не отключите модуль Б. В нашем случае вы не можете отключить ни
один из перечисленных модулей (Text, Field и Field SQL storage), пока активен
модуль Comment.Сам же модуль Comment нужен для работы модулей Forum и Tracker, которые в
данный момент отключены.В табл. 5.1 описаны стандартные модули. Некоторые из модулей нуждаются в на¬
стройке, которая будет описана позже, а пока просто рассмотрим назначение модулей.Таблица 5.1. Стандартные модули DrupalМодульОписаниеAggregatorОтображает новостные ленты. Модуль поддерживает все современные
форматы новостных лент — Atom, RSS, RDFBlockВыводит содержимое (контент) в блокахBlogИспользуется для организации многопользовательского блогаBlog APIПозволяет публиковать в блоке материалы, которые были получены по
XML-RPCBookСоздает книгу — особый вид контента, который позволяет объединить
разные типы контента. В следующей главе этот модуль будет подробно
рассмотрен, поскольку является очень удобным способом представления
контента. Например, вы можете создать книгу по автомобилям, объединив
в нее сообщения форума об автомобилях, записи в блоге, посвященные ав¬
томобилям, просто статьи вашего сайта об автомобилях, можете “подшить”
а книгу опубликованные на сайте фотографииColorИспользуется для изменения цветовой гаммы сайта, если эту возможность
поддерживает установленная графическая темаCommentПозволяет пользователям обсуждать опубликованные материалы. Нужен
для модулей Forum И TrackerContactСоздает контактную форму, например, форму обратной связиContent translationПозволяет перевести контент сайта, на разные языки. Этот модуль не вы¬
полняет перевод контента на разные языки, а только добавляет возмож¬ность перевода. Переводить контент будут пользователи с правом перево¬
да (см. гл. 9). В следующей главе мы рассмотрим, как организовать перевод
материалов средствами поддержки многоязычности. Пока скажу, что суть
заключается в следующем. Для каждой страницы создается несколько ее
версий — по одной для каждого поддерживаемого языка. Если вы создаете
русско-английский сайт, то для каждого текстового контента будет два поля
с текстом — для русского и английского вариантов. Нужный вариант будет
отображаться в зависимости от выбранного пользователем языкаContextual linksМодуль контекстных ссылокDatabase loggingРегистрирует системные события и записывает их в базу данных. С одной
стороны, выключение этого модуля повысит производительность сайта.
С другой стороны, если на сайте есть несколько администраторов, потом
не поймете, кто допустил ошибку, если что-то пошло не такForumПозволяет создать форум. Конечно, возможности форума Drupal не дотяги¬
вают до возможностей отдельных продуктов (того же phpBB3), но базовые
функции форума плюс поддержка базы пользователей Drupal и возмож¬
ность регистрации по OpeniD — это уже немало
Расширение функциональности Drupal — модули87Продолжение табл. 5.1МодульОписаниеField, Field SQLЭти модули добавляют дополнительные пользовательские поля для раз¬storage, Field UIличных объектов. Очень удобная возможность, которой мне не хватало в
Drupal 6, phpBB и других готовых движках. Далее эти модули будут рассмо¬
трены подробнееFileОпределяет тип файлового поляFilterФильтры контентаHelpПоказывает онлайн-справку. Не отключайте этот модуль, пока не разобра¬
лись полностью с DrupalLocaleПозволяет переводить интерфейс Drupal на языки, отличные от английско¬
го; обеспечивает поддержку локализацииMenuИспользуется для настройки меню на сайтеNodeПозволяет добавлять материалы и отображать их на страницах сайтаOpenIDПозволяет входить на сайт по OpenlD. Очень удобная возможность — после
того, как пользователь зарегистрировался в системе, поддерживающей
OpenlD (например, в почте Google — gmaii. com), он сможет заходить на
сайты, поддерживающие OpenlD, без отдельной регистрации на этих сай¬
тах. Это очень удобно для пользователей, потому что зарегистрироваться
нужно всего один раз, а потом можно зайти без регистрации на тысячи дру¬
гих сайтов. Так что включаем этот модульOptionsОпределяет интерфейс раскрывающихся списковOverlayОбеспечивает вывод интерфейса в накладываемом поверх страницы слое.
Именно этому модулю панель управления Drupal 7 обязана своим при¬
влекательным видом. Так что не отключайте этот модуль, если не хотите,
чтобы панель управления была такой же непривлекательной, как в шестой
версии. Отключить этот модуль имеет смысл в двух случаях: если вы при¬
выкли к Drupal 6 или если ваш браузер почему-то отображает верхний слой
страницы некорректно. Хотя, может быть, стоит поменять браузер? Ведь
Интернет (сайты) — это дороги, браузер — это автомобиль. И если машина
не может ездить по нужным дорогам, то ее, как правило, меняютPathПозволяет переименовать ссылкиPHP filterПозволяет внедрить PHP-код в ваши страницы. Потенциально опасный мо¬
дуль, особенно, если вы не знаете, что делаетеPollИспользуется для создания опросовRDFУлучшенная поддержка формата RDF (Resource Description Framework)SearchОбеспечивает поиск на сайтеShortcutsПозволяет пользователям создавать списки быстрого доступа к разным
страницам вашего сайтаStatisticsЖурнал статистики доступа к вашему сайту. Создает дополнительную на¬
грузку на сервер БД, поэтому лучше не включать этот модуль. Вместо этого
можно установить Google Analytics — отличные отчеты и минимальная на¬
грузка на ваш серверSyslogОбеспечивает запись системных событий в системный журнал Syslog.
Этот модуль можно включить, только если вы сами себе администратор,
т.е. если вы купили отдельный выделенный сервер. Хотя, учитывая, что в
syslog пишут все, кому не лень, очень сложно будет найти в нем еще и то,что относится к DrupalTaxonomyУпорядочивает материал по категориям'TestingСистема тестирования кода
88Гпава 5Окончание табл. 5.1МодульОписаниеTextОпределяет типы полей для простого текстаTrackerВключает отслеживание последнего материала для пользователейTriggerВключает триггеры, т.е. действия, которые будут выполнены при некоторых
системных событиях, например, при добавлении нового материалаUpdate managerМенеджер обновленийUserУправляет входом и регистрацией пользователей сайта. Это обязательный
модуль, вы не можете его отключитьПосле включения/выключения модулей щелкните на кнопке Сохранить конфигу¬
рацию — она находится под списком модулей (рис. 5.2).Включаем aztod~ ч £„лет запушены при7,0-TriggerbetaSeosHHfc-iCse^/b* сб>гч iku ccJ"^i\ системы*'налримео•.создание нового матери • ■Update7.0-Проверяет доступные обновления и может безопасноfV:beta3устанавливать иля обновлять модул-и и темы, используяmanager'ееб-ичтерфейсUser7 П-регистрацией и и? <■£.•> геЬесаЗРис. 5.2. Кнопка сохранения конфигурации5.2.2. Установка дополнительных модулейТеперь разберемся, как установить новый модуль. Сначала его нужно найти.
Первым делом рекомендую посетить официальный сайт — http: / /drupal. org/
pro j ect/modules. На нем есть хоть какой-то “контроль качества”. Если там не будет
нужного вам модуля, вот тогда пытайтесь найти нужный модуль на других сайтах.Давайте установим модуль Video, который можно найти в категории Media на выше¬
указанном ресурсе. Скачайте модуль (вы загрузите gz-архив). При загрузке модуля обя¬
зательно обращайте внимание на версию Drupal, для которой написан модуль. Напом¬
ню, что в Drupal 7 вы не можете установить модули для Drupal 6 и более ранних версией.ПримечаниеНесмотря на то, что установка модулей описывается на примере модуля video (хотя
можно было бы выбрать более простой пример), общая процедура установки одина¬
кова для всех модулей. Но в деталях может немного отличаться уже после установки —
некоторые модули нужно настраивать после их установки, некоторые даже не содер¬
жат формы настройки, для работы одних (обычно тех, которыё отображают контент)
нужно добавить ссылку в меню сайта, а для других ссылку в меню добавлять не нужно.
Все зависит от модуля.
Расширение функциональности Drupal — модули89Затем перейдите по ссылке Установить новый модуль (см. рис. 5.1). Появится фор¬
ма загрузки нового модуля, выберите файл и щелкните на кнопке Установить (рис. 5.3).Рис. 5.3. Форма установки модуляОднако мне с первой попытки установить модуль не удалось (рис. 5.4). Оказа¬
лось, что у загруженного модуля двойное расширение — не . gz, a .gz .gz. Для
программ-архиваторов — это не проблема, но CMS Drupal не поняла такого расши¬
рения, поэтому и “выругалась”. Переименовываем файл так, чтобы осталось одно
расширение, и снова загружаем модуль. Вот теперь все нормально (рис. 5.5).Рис. 5.4. Ошибочка вышла...Installation ivas completed successfully,video■* installed video successfully* Enable pswlv гййгй modules ui Video* n pager-* - ion?pagePuc. 5.5. Модуль установлен успешно
90Гпава 5Однако не спешите радоваться. Наш модуль video хоть и установлен, но пока еще
не готов к работе. Перейдите в раздел Модули. Под списком стандартных модулей
вы увидите модули из пакета video — на самом деле мы установили несколько мо¬
дулей (рис. 5.6). Для загрузки видео на сайт нужно включить модули Video и Video
upload, остальные модули включите по своему усмотрению. Возможно, вам придется
установить дополнительные модули, которые требуются для работы этого модуля. Их
тоже можно найти на сайте drupal. org. Без установки этих модулей вы не сможете
включить некоторые установленные модули.-УШГО1.ИС.-П «««« и.™ tК.-ГГМ rArrvazcn S3) ха serve and steve your i/ide-s's ss/MflZencoder APi о
Videon of V«*so FieSds: 7«J«! (отадйлек?, APuc. 5.6. Установленные модулиВ главном меню появится меню Video, позволяющее настроить модуль video
(рис. 5.7).Рис. 5.7. Модифицированное главное меню панели управленияНекоторые модули нуждаются в настройке. Если вы установили именно такой мо¬
дуль, то напротив имени модуля будет ссылка Настройка. По ней и следует перейти
(рис. 5.8). Модуль video не такой, поэтому напротив его имени нет ссылки Настрой¬
ка, зато она есть напротив модуля Forum. Далее мы переключимся на рассмотрение
именно этого модуля форума, чтобы полностью продемонстрировать процесс уста¬
новки и настройки модуля. Поэтому включите модуль Forum.Рис. 5.8. Ссылка настройки модуля ForumДля некоторых модулей нужно создать ссылку на них в главном меню сайта. Для
этого выберите команду меню Структура^Меню. Вы увидите список меню сайта
(рис. 5.9). О типах меню мы еще поговорим, пока просто следуйте инструкциям. Вы¬
берите команду список ссылок напротив меню Navigation (Навигация). Вы увиди¬
те список элементов меню Navigation (рис. 5.10). И что мы видим? А то, что ссылка
Расширение функциональности Drupal — модули91для доступа к включенному модулю уже была добавлена в меню (Форумы). Однако ее
можно изменить: щелкните на ссылке изменить напротив элемента меню Форумы.
Вы можете ввести свое название ссылки, поскольку не всегда название ссылки, пред¬
ложенное разработчиками, вас устраивает.Меню оСПИСОК МЕНЮ j& Дубав-ш■Л£ттвт<и внемли/-*.*Рис. 5.9. Список менюРис. 5.10. Список элементов меню Navigation5.2.3. Удаление модуляТеперь разберемся, как удалить модуль. Вы можете удалить только те модули, ко¬
торые устанавливали самостоятельно. Вы не можете удалить стандартные модули. Пе¬
ред удалением модуля нужно отключить все модули, которые зависят от удаляемого
модуля, затем отключить и сам удаляемый модуль.После этого нужно перейти на вкладку Удалить страницы управления модулями
(рис. 5.11). Выберите только что установленный модуль Video и щелкните на кнопке
Удалить. После этого подтвердите удаление (рис. 5.12), еще раз щелкнув на кноп¬
ке Удалить. Результат наших стараний изображен на рис. 5.13 — выбранные модули
удалены.
92Глава 5——Модули О СПИСОК ОЬНОЙИТЬ УДАЛИТЬУдален»?** модуля приведет к удалению асех собраячых им дамных. Для того чтобги /дглять модуль, пеобкодимо
преде-йрлтель-мо его выключит». Возможность, удаления гт&дерагигается не всем*? модулями.УДАЛИТЬ НАЗВАНИЕ 0ЛИСАНИ5gf: Vkieo ’ Allows Creation of Video Frefds. :Puc. 5.11. Удаление модуля^Модули о список' обновить удалить.© Выбранные модули были удалены.Удаление модуля пряеи*дйг к удалению асех собранных: уш данных. Для того чтобы удалить «одул»-, необходимо
лредвгшительно его выключить Возможности удглен^я послержиаается не бс*».*и «одуламиУДАЛИТЬ НА5МНИЕ ОПИСАНА’ Нет доступных для удаления модулей. :Рис. 5.13. Выбранные модули удалены
Расширение функциональности Drupal — модули93Зачем понадобилось удалять только что установленный модуль? Дело в том, что
для демонстрации установки модуля для книги был выбран произвольный модуль —
Video. Им мог бы стать любой другой модуль, но стал именно Video. Однако, пора¬
ботав с этим модулем, я пришел к выводу, что он сыроват и я бы не рекомендовал вам
его использовать. Если вам нужен модуль для работы с видеоконтентом, можете поис¬
кать на www. drupal. org другие модули — они будут справляться со своими функция¬
ми лучше, чем модуль video, который идеально подходит только для демонстрации
процесса установки и удаления модуля.5.3. Дополнительные поля: модуль FieldДалее в этой главе будет рассмотрена настройка и использование некоторых стан¬
дартных модулей, а именно модулей, отвечающих за добавление дополнительных по¬
лей и перевод контента на разные языки. Остальные, менее сложные, модули (опрос,
форум, книга, блог, модуль для отображения RSS-лент и др.) будут рассмотрены в
следующей главе, когда мы будем работать с контентом. Пока еще раз просмотрите
табл. 5.1 и включите необходимые вам модули.Модули Field, Field SQL storage, Field иI выполняют очень полезную функ¬
цию, они реализуют мечту любого веб-мастера. Помню, как-то строил клубный сайт.
CMS была самодельная, в качестве форума использовался phpBB2. Движок форума
также управлял регистрацией пользователей на сайте — гораздо проще использовать
phpBB2, чем создавать свою систему регистрации, а потом еще думать, как интегриро¬
вать ее с phpBB2. По требованию заказчика в профиль пользователя нужно было доба¬
вить дополнительные поля — телефоны (рабочий и мобильный), адрес и т.д. В phpBB2
нет возможности добавлять дополнительные поля в профиль, поэтому пришлось их
самому добавить в таблицу пользователей, а потом изменять форму редактирования
профиля и шаблона вывода информации о пользователе, чтобы пользователь мог из¬
менить новые поля и другие пользователи могли увидеть введенные пользователем
данные. Не скажу, что это слишком сложно, но нужны навыки программирования на
РНР выше среднего, знания HTML и TPL — как в анекдоте про шамана: чтобы 5 ми¬
нут поколдовать, 20 лет учиться нужно.В Drupal 7 (потому что в Drupal 6 нет такой возможности) добавить дополнитель¬
ные поля можно с помощью модулей Field, Field SQL storage и Field Ul. Пер¬
вый модуль добавляет саму возможность добавления поля, второй — обеспечивает
хранение полей в базе данных, а третий модуль — это интерфейс администратора,
позволяющий добавлять и удалять дополнительные поля.Разберемся, как добавить дополнительные поля в профиль пользователя. Вообще-
то, вы можете добавить дополнительные поля к любому объекту, но чаще всего это
приходится делать именно для учетных записей пользователей.Выберите команду Конфигурация^Люди (или перейдите по адресу http://
cepeep#overlay=admin/config/people/accounts). Перейдите на вкладку Управление
полями. Введите метку поля (например, Телефон), название поля (на английском языке),
выберите тип поля (в данном случае Текст). Щелкните на кнопке Сохранить (рис. 5.14).Далее вам будет предложено настроить поле. Настройка зависит от типа поля. Для
текстового поля нужно установить длину поля. Для телефона хватит 13 символов (для
записи в международном формате), но мы установим длину поля с небольшим запа¬
сом — 16 символов (рис. 5.15). Вдруг кто-то укажет дополнительные символы. Новое
поле будет добавлено в список полей учетной записи (рис. 5.16).
Рис. 5.14. Добавление нового поляРис. 5.15. Настройка поляРис. 5.16. Список полей для учетной записи
Расширение функциональности Drupal — модули95Теперь перейдите в раздел Люди, щелкните на ссылке изменить напротив вашей
учетной записи. Внизу страницы редактирования профиля пользователя вы увидите
результат наших творений — только что созданное поле Телефон (рис. 5.17).▼ Administrative overlap- Щ Usethe overlay for administrative pages,: Show administrative pages cn top с/the page you started from,-г Языковы*; настройки' шоешгге esoa часовой пояс п нажмите кнопку «Сохранить*.• Часовой пояс• Europe/Helsinki: Пятница. Ноябрь 59. 2Q10 - ?4:54 *0200 :*чг,- tj м l > ' л- и ‘Г< .,1 Л!1 ;> I.- с'л'У гт- л '• ( юзоч&ювйгошт.ТелефонСохранить': .Рис. 5.17. Новое поле в профиле пользователя5.4. Перевод контента — модуль Content translationМодуль Content translation используется для создания многоязычных сайтов.
Многоязычность нужна не всегда, поэтому ей мало уделяется внимания в книгах по
Drupal. Тем более, что раньше для создания многоязычного сайта (имеется в виду сайт
не с многоязычным интерфейсом пользователя, а с многоязычным контентом) при¬
ходилось устанавливать сторонние расширения. Теперь (в Drupal 7) есть возможность
создания многоязычного сайта.Описание дз&,>'М£**та ка страт-чие Асбдгг.еилу/яразкя йси^мен? -гчсшз дсг/мечтояНастройки по уиолчзиию?’* Помещать ма главную 1 >Р&г'.ьютгъ.тм с "syasoM догу-че>-г<сши* Аеступмо з>т**хПоддержка иногоязыч»«ости
.*»> Включеноft/с. J.7& Редактирование типа материала(■ v+i гг»* фори»-*Пэг* гм<*. pv* Vf ‘ tribf5,5 X'lltHПл;<0«егрм ww
96Глава 5После включения модуля Content translation нужно его настроить — указать
типы документов, которые могут содержать многоязычный контент. Перейдите на
страницу типов документов (Структура^Типы):http://сервер/#overlay=admin/structure/typesЩелкните на ссылке изменить напротив типа контента, который должен поддер¬
живать несколько языков. В параметрах публикации включите поддержку многоязыч¬
ное™ (рис. 5.18) и щелкните на кнопке Сохранить тип материала. Как минимум, вам
потребуется включить поддержку многоязычности для основной страницы и статей.Далее перейдите на главную страницу и выберите ссылку Добавить новое содер¬
жимое. Выберите тип контента, который вы хотите добавить (рис. 5.19). В списке
Язык выберите тот язык, на котором будет написан контент, введите сам контент и
щелкните на кнопке Сохранить.■ииимшя1ии1вямиииияиииииияияиииииияишииииииииииииРис. 5.19. Выбор типа создаваемого содержимогоЯзык; Нейтральный по отношениюк языку W\;;Амгдойский Г-1 Добавить сИнформация ft ре <;с&Параметры комментарий»Утфоры-шт а об- asrrnpe
пкаил'ол•'Сохранить. • ПредгфосмотрРис. 5.20. Редактирование страницы, выбор языка
Расширение функциональности Drupal — модули97Кроме вас, администратора, переводить страницы смогут и пользователи с правом
Content translation.5.5. Некоторые полезные модулиДля Drupal разработано очень много модулей, описать все их в этой книге не пред¬
ставляется возможным. В табл. 5.2 представлены несколько полезных модулей, кото¬
рые пригодятся всем пользователям Drupal.Таблица 5.2. Полезные модули для DrupalНазваниеСсылкаОписаниеUploadifyhttp://drupal.org/project/uploadifyМультизагрузка файловPrinthttp://drupal.org/project/PrintДобавляет кнопки, позволяю¬
щие создавать PDF-версию ма¬
териала, выводить материал на
печать и отправлять ссылку по
электронной почтеССК -http://drupal.org/project/cckПозволяет изменить шаблон
типа данных. Нужен для Drupal 6,
если вы хотите организовать
функциональность, подобную
пользовательским полям (мо¬
дули Field*) в Drupal 7Privatemsghttp://drupal.org/project/privatemsgМодуль личных сообщений, по¬
зволяет организовать внутрен¬
нюю почту на сайтеGooglehttp://drupal.org/project/google_analyticsПозволяет “прикрутить” к ваше¬Analyticsму сайту Google AnalyticsWysiwyghttp://drupal.org/project/wysiwygДобавляет к сайту визуальный
редактор. Этот модуль будет
рассмотрен в следующей главеCAPTCHAhttp://drupal.org/project/captchaДобавляет форму CAPTCHA к
формам Drupal, чтобы умень¬
шить поток спамаXMLhttp://drupal.org/project/xmlsitemapДобавляет карту сайта в форма¬Sitemapте XML, что улучшит поисковую
оптимизацию сайтаCalendarhttp://drupal.org/project/calendarДобавляет календарь к сайтуPage Titlehttp://drupal.org/project/page_titleПозволяет изменять формат за¬
головка сайта и нодыNice Menushttp://drupal.org/project/nice menusДобавляет к вашему сайту ди¬
намическое менюSitemaphttp://drupal.org/project/site_mapДобавляет обычную карту сайтаRedirecthttp://drupal.org/project/redirectРанее этот модуль назывался
Path Redirect, но для Drupal 7
он называется Redirect. Ис¬
пользуется для организации
редиректов(перенаправлений)
98Гпава 5Окончание табл. 5.2НазваниеСсылкаОписаниеMollomhttp://drupal.org/project/mollomИспользуется для интеграции
сервиса Mollom, предназначен¬
ного для ограждения вашего
сайта от спамаDHTML Menuhttp://drupal.org/project/dhtml_menuЕще один модуль для организа¬
ции менюWordPresshttp://drupal.org/project/wp commentsФорма комментариев в стилеCommentsWordPress — для фанатов WPВ следующей главе мы поговорим о создании содержимого вашего сайта, а также
о настройке некоторых стандартных модулей — Forum, Aggregator, Blog и др. В гла¬
ве 6 также будет продемонстрирована установка и настройка визуального редактора
для Drupal.
ГЛАВА 6Работа с материалом6.1. Эволюция систем управления контентомДля многих пользователей данная глава будет самой интересной, поскольку ради
управления материалами сайта (содержимым сайта, контентом сайта) вы и установи¬
ли Drupal. Перед созданием материала в Drupal нужно поговорить о самих системах
управления.Когда появилась Всемирная паутина (если я ничего не перепутал, то это произошло
в 1993 году), не было никаких систем управления контентом. Все сайты писались ис¬
ключительно на языке HTML (Hyper Text Markup Language — язык гипертекстовой раз¬
метки). Язык HTML позволяет форматировать текст страницы, использовать гиперс¬
сылки на другие документы, вставлять в HTML-страницы изображения и таблицы.Для сайта, состоящего из небольшого количества страниц, язык HTML прекрасно
подходит. Но когда число страниц переваливает за несколько десятков, все значи¬
тельно усложняется. Почему? У каждого сайта есть навигационное меню, позволяю¬
щее переходить на другие страницы сайта. В случае с HTML такое меню нужно было
вставлять в каждую страницу сайта, чтобы пользователь, перешедший на другую стра¬
ницу, мог вернуться обратно или перейти на следующую страницу. Следовательно,
при изменении меню (при добавлении новой страницы) вам нужно было отредакти¬
ровать код всех HTML-страниц сайта. Позже эта проблема была решена путем введе¬
ния фреймов. Один фрейм содержал меню, а второй — текст выбранной страницы.Если с меню проблема была решена, то изменение дизайна превращалось в на¬
стоящий ад. Допустим, когда вы создавали сайт, на нем было несколько страниц —
главная, страница о проекте и несколько статей. Через год на сайте уже было около
100 статей, и если бы вы захотели изменить дизайн сайта, чтобы .“освежить” его и
сделать более удобным, то пришлось бы изменить все 100 HTML-страниц.Но почему бы не заставить компьютер сделать все это за нас? В качестве ответа на
этот вопрос и появились первые CMS. Первые системы управления контентом были
очень просты. Их функции сводились примерно к следующим.• Вывод HTML-кода, отвечающего за изменение оформления страницы, — “ди¬
зайна” сайта перед выводом кода страницы. Сам код страницы больше не со¬
держал ни меню, ни кода дизайна.• , Вывод меню сайта, управление меню сайта путем добавления в него ссылок настраницы сайта.
100Гпава 6Смысл заключался в следующем. В одних файлах (первые CMS не использовали
базу данных) хранился чистый код HTML-страницы — без дизайна, без меню. В дру¬
гих файлах хранился код дизайна и меню сайта. Главный файл, представляющий со¬
бой CGI-сценарий, выполнял вывод дизайна, меню и самой HTML-страницы.Следовательно, чтобы изменить меню или дизайн сайта, вам нужно было отредак¬
тировать всего один файл (или файл с дизайном, или файл с меню сайта), но не все
HTML-страницы сайта.Позже CMS стали совершенствоваться: появилась поддержка баз данных, шабло¬
нов, модулей, визуальных редакторов. Сейчас все это — обязательные атрибуты со¬
временных систем. Уже сложно представить современную CMS без использования
базы данных, без шаблонов для изменения дизайна сайта, без модулей для расшире¬
ния функциональности.Drupal — современная система, но от знания HTML вас никто не освобождает.
HTML-код вам придется внедрять в страницы, поскольку в Drupal отсутствует визу¬
альный редактор, также придется редактировать HTML-код шаблона для изменения
дизайна сайта. Можно, конечно, установить визуальный редактор (что мы и сделаем),
но для тех, кто знает HTML, порой проще обходиться без всяких редакторов. Именно
поэтому в приложении В вам предлагается краткий справочник по языку HTML.6.2. Создание материалов сайта
6.2.1. Типы документов и включение необходимых модулейПеред тем как приступить к созданию материалов, убедитесь, что у вас включены
следующие модули:• Blog —создание блога;• Book — создание книги;• Forum — поддержка форума;• Poll—создание опроса (голосования).Если вы не включите эти модули, иллюстрации в книге будут отличаться от изо¬
бражения на экране вашего компьютера.Перейдите в раздел Содержимое (рис. 6.1). Щелкните на ссылке Добавить содер¬
жимое. Раскроется окно выбора типа содержимого (рис. 6.2).Учитывая, что мы включили модули Blog, Book, Forum и Poll, можно создать
контент следующих типов.• Blog entry — запись в вашем блоге. Блог доступен каждому зарегистрирован¬
ному в вашем Drupal-сайте, т.е. у каждого пользователя может быть свой блог,
он может читать и комментировать записи в персональных блогах других поль¬
зователей. По сути, Drupal может использоваться в качестве блог-платформы
(как WordPress Multiuser) — лично мне Drupal в качестве блог-платформы по¬
нравилась больше, чем MU-версия WordPress. Но что касается работы с самими
записями, то WordPress на голову выше, чем Drupal — было бы удивительно,
если бы это было не так. WordPress ведь создавался изначально как блог. А вот
в MU-версии есть свои нюансы — ее, в отличие от Drupal, даже не на каждый
Работа с материалом101шYнЩШШШш<!г\*, С ПД1 имМОс [ f’OaVi^M I «CH-'i Г/ ert—®1Рис. 6.1. Раздел Содержимое: пока еще не создана ни одна страница4j «посопо/^сг&т&лмж^е' £яо?»1 Кзлд^й йО-льгйзатель. ~’йй/ч.«г cso--* перс;>«.*/:ь«уйг!еют ахгр&«и«ун;. ,';?».у.р;<^чес>;у« voyvxsor*<Tsil Onpo'0~)Vi>C С Й>:ЙСПЫ^,!!У rt
СЙ5ЙЛ>-;^ЫЙ, олрсс ялт>ла2йр-лант«'..5--5 Ът2е?а. «'s-ropfcter<a.cers-iTfi-ir-
«я^чесгео го-лолсбг К Ий»Д?.,гй ?..л0'^а.^7 u'?3ft'r3t>'^ О^наензя страницаСгрг5^-,',цй - :-rro Ac^v'--r-!-'“, HCf(Ci.oi-.5jr'"C's »-гяй огра«.>"д. с^'•«Ьар«йалей:/Нгг?&1П^», ?кй:^>; страус *.«х <-0 сайге--' яля ^и*;а
АО»уУ.гг*?ь; >тигт. тлпг не х-^ажлхя на nepsy-o сгм.^-.г/ сайта и ^И5Нен»€У ойПа у^олчйник:?
згл^г-лено ио&луентир^-хт»у;:, озтьяC’T-.'fr.-r — ГГ/? iiW.yMfi;--!-', «С ГСО МЛ OOtW^f* ИС SWi&r'yeTa* Д.«3 ЭДЗ^СГеЙ ДНО «СО? ^
хсоо-^у-гшй, дя'г Уйго^ь^..не Зай.й%*сг?;у$г*,&-' rm/rvta до^у^йятг?'. Этот т;,-,<.} ада.уч^мта'.'С^ол'язуж-'/;!-?. егдеч^з перс^н&льисгз бяог« По >«о/;»;*ч'лк5 й.мн/у?н.т;;; ?-^гс т,s~^c/x?;■:..?
иг- C2-;pS-.-H-';лу i.-ivsre }-t „•;>; pft.,?pst,;e;40/Тема. форумаОку-^челг-и-: >то дг=й:^*4г, «стооьм Д’гО^яен фа:>у«. При- хш6йзя&ии:,от?;тдоилл^/гга г'€о6а5димо кыбп«-д форуу. кс-то^ыА Ьапъ':и% й-:е'о л&б.кс|;,'^-- дред.лага*мс>! *-Рис. 6.2. Выбор типа содержимого
102Гпава 6хостинг установишь. Если у вас на хостинге установлен WordPress, это не зна¬
чит, что вы сможете установить на нем же и MU-версию WordPress. Но это дру¬
гая история, а сейчас мы рассматриваем Drupal.• Book page — создает подшивку, элемент электронной книги. Данный тип кон¬
тента поддерживается модулем Book.• Опрос — вы можете создать опрос, т.е. предложить посетителям сайта вопрос с
несколькими вариантами ответов. Опросы очень полезны при создании сайтов
сообществ — аудитория увидит, что вам интересно ее мнение.• Основная страница — одна из основных страниц сайта, например, “О сайте”,
“Контакты” и т.д. По умолчанию страницы этого типа нельзя комментировать
и они не выводятся на главной странице.• Статья — основной вид контента сайта. Статьи помещаются на главную стра¬
ницу и их можно комментировать.• Тема форума — материал данного типа будет добавлен на форум. Позже мы
разберемся, как создать форум на базе Drupal, а пока просто не следует выби¬
рать этот тип контента.6.2.2. Создание основных страниц сайтаВыберите тип документа Основная страница. Введите заголовок страницы и ее со¬
держимое (рис. 6.3). При вводе содержимого страницы можно использовать HTML-
теги <а>,<еш>, <strong>,<cite>,<blockquote>,<code>, <ul>, <ol>, <li>, <dl>,
<dt>, <dd>.Содер о (i i rt . i r nt)ССД£Г> W - стран! ьы Enl ЗТс НТ*Г-ТеГ»1<em> <strong> *cite> <Biocfcquate> <code^«ul> <ot> <ii> <&>
Руководство no HTWL-тегам приводится в приложении Ej■ Soяее **■ Айра а. -ли <•• пучт-ы детом эти «и е ссылкиРис. 6.3. Создание основной страницы
Работа с материалом103После ввода содержимого страницы можно установить ее параметры (рис. 6.4).■ Фаршат текста f Filtered HTML ^ - г 4'' * Адреса -страниц и змктр-онной псчта mrzuzrmzcm пр-ео6раХ};кж:.<г а ссьт-т.* Доступны* HTML теги. <а> <%иощ> <ci?z> <hk>dcqij.e-t.s ? <сойч> <ui>
' « Стрст 'Л параграфы шлтатичйски<ft> «!>«*> <«,»:шк• Нейтральный по отношению к. языку [тТ■» п с| Дооазить ссылку в дееноОгл-й®ле«-м-е по&шншш ' -' ;•Тч *> г-«" -< и г; р и и* v: Параметр?/! 'адреса- '' .£ 11 -h'Jr ’ *<#Рис. 6.4. Параметры страницы• Формат текста — можно выбрать Filtered HTML (допускается вводить только
вышеуказанные теги), Full HTML (HTML-код с полным набором тегов, без
ограничения), Plain Text (обычный текст).• Язык — язык, на котором написана страница. Этот параметр будет доступен
только при включенном модуле Content translation.• Параметры меню — в этом разделе параметров вы можете добавить ссылку на
страницу в меню (рис. 6.5). Можно указать название элемента меню, выбрать
родительский элемент и установить вес ссылки. Вес используется для сорти¬
ровки страниц с одинаковым родительским элементом. Чем “легче” страница
(меньше ее вес), тем выше она будет отображаться в меню.• Оглавление подшивки — вы можете добавить созданную страницу в подшивку.
Допускается выбрать существующую подшивку или создать новую.• Информация о редакции — если вы сами ведете сайт, вряд ли будете запол¬
нять информацию о редакции. Она больше нужна для других пользователей,
которые также “ведут” контент сайта, чтобы они знали, что появилось нового в
этой редакции страницы. Эта информация комментирует изменения, внесен¬
ные вами (или другим пользователем) при редактировании страницы.• Параметры адреса — здесь вы можете создать синоним для создаваемой
страницы.
104Гпава 6• Параметры комментариев — здесь вы можете включить или выключить коммен¬
тарии. По умолчанию для данного типа документов комментарии выключены.• Информация об авторе — в этом разделе вы можете указать автора страницы
(по умолчанию автором является пользователь, создавший страницы) и изме¬
нить время создания страницы.• Параметры публикации — здесь вы можете опубликовать эту страницу на глав¬
ной. Для некоторых типов документов публикация на главной странице сайтов
осуществляется по умолчанию, но для этого типа (основная страница) по умол¬
чанию публикация на главной странице сайта не осуществляется.к*ешоЩ Добавить ссылку б меню-
Название ссылки к меню. О проекте ; :- Шмфярм-яитОписаниеЛ а p-а. мет ры адрес:Описание яоказы&аетсз при назеденуип на пункт менк> ъшшшаГодй ГйЛ ЬС«1*Й пунктГгсг^е мен'л-; •Эсм- :более пепми «есом ‘всплывают1’ ■над с.сы/жаш?Рис. 6.5. Параметры менюДля сохранения страницы щелкните на кнопке Сохранить. Можно также щел¬
кнуть на кнопке Предпросмотр для предварительного просмотра страницы. Пере¬
йдите на главную страницу вашего сайта. Как видите, ссылка на созданную только
что страницу была добавлена в главное меню сайта (ссылка называется О проекте) —
рис. 6.6.6.2.3. Создание статейДобавление статей происходит практически так же, как и основных страниц сайта,
лишь за небольшими исключениями. После списка выбора формата текста будет поле
для ввода тегов — ключевых слов (рис. 6.7) — и поле добавления в статью картинки.
Ключевые слова указываются через запятую.
Работа с материалом105ЯН. © Основная страница О проекте был созданSП8ЕМЗЯН&епгаепяО проекте; Просмотр Поредактировать К'Структура iСсдсржтюе страницы. Вы можете кспалюеват*- НГ.‘Г1 "ми;"• Ружтаясяво_ йо НйИ.-з’егш^'сргшдаг^-эсз''& црг^огежгг ВРис. 6.6 Основная страница создана; Формат текста ; Filtered HTML [yi- Ьоле« подробная ннферш?и>?я о текстовых фа?;Tags;!muK ubuntu, debian•Зйедт'с- через, запятую сг>мсск слоа,Изображение< Выбеоите файл , с.1 ^ VV - * ~ • I/,’ Vi,Дест/пиые расширения файлов, png; gif jpg ipegЯзыкНе папьный по отьчиению к г ■*Рис. 6.7. Форма добавления статьиВыберите файл и щелкните на кнопке Загрузить (рис. 6.8). Статьи публикуются
по умолчанию на главной странице сайта, комментарии для статей разрешены. Из¬
менить параметры публикации и ввода комментариев можно точно так, как и в случае
с основной страницей сайта (см. выше).
106Гпава 6Tags\;fkiu%, ubtmttL debian . :ИзображениеBwtJВ 8-1 .png (8.64 КБ) Удалить;Альтернативный текстт будет исяользогтн для чтения с зкрангv-а или »<о-“дй. шобрёжение не можетЗ.аг ражен^е s эту стать»Рис. 6.8. Изображение для статьи загруженоПосмотрим, как будет выглядеть только что созданная статья на главной странице
(рис. 6.9). iУстановка статического IP-адреса для сетевого интерфейса в Ubuntu
9,04/ВбшхПодключиться к локальной сети в Ubuntu очень просто, если п сети ясзользуетея ВНСР-сераер ~сервер авто^атд-?е ской настройки узлов сети (1>НСР - Dyaasaie Host Con!дш1аэтческо2 настройки узла). Вс*, что нужно для «одклктшш- к лот:сетевой кабель, а вей остальную работу за вас сделают BHCF-ceрвер еКконфигуратор сети Ubmifa. В случае у дагчтаiоводкяюче&яя к локально!регулятора громкости еы зайдите индикатор еоедяаения. Если содвесттвы узнаете, к какой сети вы подключены (см. рисаА/с. 6.9. Созданная новая статья на главной страницеДобавленное изображение отображается после заголовка статьи, далее идет укоро¬
ченный вариант текста статьи — анонс. Анонс устанавливается системой автоматиче¬
ски, но если вы хотите сами установить анонс, используйте тег <! —break—>:Подключиться к локальной сети в Ubuntu очень просто, если в сети
используется DHCP-сервер - сервер автоматической настройки узлов сети
(DHCP - Dynamic Host Configuration Protocol - протокол динамической
Работа с материалом107настройки узла). Все, что нужно для подключения к локальной сети, - это
подключить сетевой кабель, а всю остальную работу за вас сделают DHCP-
сервер и NetworkManager - конфигуратор сети Ubuntu.<!—break—>В случае удачного подключения к локальной сети на панели GNOME возле
регулятора громкости вы увидите индикатор соединения. Если подвести к нему
указатель мыши, то вы узнаете, к какой сети вы подключены (см. рис.).Текст до тега <! - -break—> будет анонсом, а все что после — основным текстом
статьи. Для просмотра всего текста статьи используется ссылка Подробнее. После
текста статьи отображается форма добавления комментариев (рис. 6.10).Установка статического iP-адрееа для сетевого
интерфейса a I’buntu y,04/Denixл Подключение и прог-одной гети ^Подкяючкться к локальной сетй в ХТшпЫ очень просто, если в сет используется Ш1СР-сервер- сервер авто^этяческой яастроёжи узлов сети (DHCP ~ Dynamic Host Configuration Protocol --
протокол динамической настройки узла). Все, что нужно для подключения *: локальной сегщ-
это хшзключйть- сетевой кабель, а вещ осталшукз работу5 за вас сделают DHCP-серкер я
NetvvorkMaKsger ~ конфигуратор сете ШпшШ.В случае удачного нодетючекйя к локальной сети на панели GNOME возле регулятора
грош-соетй вы увидхп-е хшдшч.атор соединения, Если подвести к шщу указателе мыши,то вы
узнаете, к какой сети вы подключены (еи.ркс.).Дойявить ешментарш»Добавить комментарий
А/с. 6.10. Вот так анонс и текст статьи отделяются тегом <! —break—>Дополнительные изображения могут быть вставлены с помощью тега <img>:<IMG src=/путь/картинка>Подробнее тег <IMG> описан в приложении В. Начинающим пользователям будет
удобнее использовать визуальный редактор: как его установить, будет рассказано в
последнем разделе этой главы.6.2.4. Записи блогаТеперь разберемся, как добавить запись в ваш блог. Выберите тип документа Blog
entry (когда же ее название будет переведено на русский язык?). Параметры у этого
типа документов такие же, как у основной страницы сайта. Посмотрите на созданную
108 Гпава бмною запись блога — рис. 6.11. Записи блога по умолчанию публикуются на главной
странице и для них разрешены комментарии.Моя первая запись
 HassРис. 6.11. Созданная запись блогаВозле ссылки Подробнее есть ссылка Блог пользователя admin. Помните, я го¬
ворил, что Drupal позволяет создавать многопользовательские блоги. Если вы хотите
создать свой блог на базе Drupal, но не желаете, чтобы другие пользователи могли
также создавать свои блоги, а могли только комментировать ваши записи (функцио¬
нальность на уровне обычной версии WordPress), тогда можете вообще не включать
модуль Blog. Вместо блога вы можете публиковать на сайте статьи — при этом каждая
статья может расцениваться как запись блога, для которой комментарии разрешены.
Поэтому в таком варианте модуль Blog вам вообще не нужен. Он нужен лишь для
того, чтобы другие пользователи вашего сайта могли не только комментировать ваши
материалы, но и публиковать собственные материалы. Когда вы перейдете по ссылке
Блог пользователя <имя>, то будут отображены все записи, созданные этим пользо¬
вателем.Все записи блогов (со всех блогов, а не только вашего) публикуются на главной
странице сайта. Но если некоторое время записи блога не будут добавляться, а вы
будете создавать другие типы документов, то найти ссылку Блог пользователя <имя>
будет все сложнее и сложнее. Следовательно, нужно добавить доступ к блогам в меню
Navigation. Сделаем это. Выберите команду CTpyKTypa^MeHto^Navigation^cnHCOK
ссылок. Установите флажок Включено для элемента Блоги и щелкните на кнопке Со¬
хранить конфигурацию (рис. 6.12). Далее перейдите на главную страницу. Посмотри¬
те, как будет выглядеть наша ссылка в меню навигации — рис. 6.13.6.2.5. ФорумыСледующий тип содержимого — тема форума. Модуль Forum нуждается в допол¬
нительной настройке. Перейдите к списку модулей и щелкните на ссылке Настроить
напротив модуля Forum. Откроется окно (рис. 6.14), в котором можно будет создать
контейнеры и форумы. Контейнеры используются для группировки форумов. Напри¬
мер, вы можете создать контейнер Операционные системы и добавить в него форумы
Linux, Windows, MacOS. Можно также вообще не создавать контейнеры — как вам
больше нравится.
Работа с материалом109—
Ш11Я1ЙИИн■А/с. 6.12. Добавление ссылки Блоги в меню навигацииГпазязя »'6п<!ги » Блог adminНавигация... ...► Блога .' * й$6ж87Ь£®г,ержгг:ло>?.-Моя первая записьПросмотр Редактировать Сь’^^оаЛ Jo с гк_ а р ? о"!‘ г- Г it 'Добавить комментарийВаше имя adiniixТемаКомментарий*А/с. 6.75. Ссылка Блоги создана
110 Гпава 6fтамая -4 Адмик^струря-га^е * Crsyy.'ypsФорумы содер:**т обсуждехи* Дя» группировки фордов можна ислсль5ое?1Гь. чснтейм^ры.4- ДоЫзтъ контейнер Ф Додакиь форукHA33SHHE
( + G«e»l dnrassbn;. в£С;-;А/с. 6. /4. Настройка модуля ForumСоздайте необходимые форумы и контейнеры. Я удалил форум по умолчанию —
General discussion — и добавил форумы Linux, Windows, MacOS в контейнер Опера¬
ционные системы. Результат проделанной работы представлен на рис. 6.15.список ЬШШШШЁт.яИИМИГйагйвй * АдмккйСТ> Структура
^ форум ШлЛ'М обновлен.-^оо/;.п! содержат обсуждения. Дг.я группировки форумов можно мспольъсг&гъ и?мтейн«оы■$• Деб-йййть контййиер *4* Добавить фср/w.^НАЗВАНИЕ};, ;С"-/■.} '.;./> '4, Qnep&m’,c»Hbit с и С!дсйстгия .. •f MatGS
4*- Window/Сохрачить;:;--А/с. 6.75. Только что созданные форумы
Работа с материалом111Вот теперь можно добавлять темы форума. Но это лучше сделать не через панель
управления, а через интерфейс пользователя — перейдите по ссылке Форумы, затем
выберите Создать Тема форума. Согласен, что перевод здесь не очень, но надеюсь,
что в следующей редакции он (перевод) будет лучше (рис. 6.16).* ФортаыФорумыиамиидмииидимииРис. 6.16. Темы форума6.2.6. Опрос на вашем сайтеКак уже было отмечено ранее, опросы крайне важны, чтобы аудитория видела, что
администрации сайта интересно ее мнение. Выберите команду Содержимое^Добавить
содержимое^Опрос. Создадим простейший опрос (рис. 6.17). Введите вопрос и вари¬
анты ответов на него. При желании можете организовать “подтасовку” голосования
(прямо как на настоящем голосовании), установив начальные значения счетчиков го¬
лосов для каждого из вариантов. Для добавления дополнительных ответов щелкните
на кнопке Больше вариантов.Рис. 6.17. Создание голосования
112Гпава 6Когда голосование станет неактуальным, установите для него статус Закрыто.
Длительность опроса может быть как неограниченной (голосование будет активным
всегда, пока вы его не закроете), так и с ограничением времени (по прошествии вы¬
бранного времени опрос будет закрыт автоматически).Созданная нами страница голосования представлена на рис. 6.18. По желанию
можно отключить возможность комментирования опроса.о, Вам нравится дизайнНет
ДаРис. 6.18. Страница голосованияВ параметрах публикации для опроса желательно включить опцию Закреплять
вверху списков (рис. 6.19), чтобы опрос не потерялся на главной странице.г&япую
>ху списковРис. 6.19. Параметры публикации опросаПри желании можете перейти в раздел Структура^Меню и добавить пункт Опро¬
сы в меню Navigation (рис. 6.20), чтобы пользователи смогли просмотреть весь список
существующих опросов (даже закрытых — чтобы просмотреть статистику по ним).6.2.7. ПодшивкиВаш сайт может быть разносторонним, даже если соблюдается общая тематика.
Например, если вы создали сайт об операционных системах, то поскольку операци¬
онная система в мире не одна, у вас будут материалы по самым разным ОС. Вы може¬
те создать подшивку (электронную книгу) по каждой из операционных систем. Таким
образом, все материалы по одной ОС (записи в блогах, темы форумов, статьи) будут
помещены в одну подшивку, что существенно упростит работу с материалами.
Работа с материалом113Модуль Book обеспечивает функциональность подшивок. Как добавить материал
в подшивку (при этом имеется возможность создать саму подшивку), было показано
выше (см. раздел 6.2.2). Чтобы добавить команду Подшивки в меню навигации, вос¬
пользуйтесь инструкциями, как для добавления команды Опросы (только, само со¬
бой, следует добавить команду Подшивки) — см. рис. 6.20.6.3. Новостные лентыНе у всех есть возможность каждый день добавлять новости на сайт, но делу можно
помочь. Вы можете опубликовать на сайте новостную ленту какого-нибудь одного из
часто обновляющихся ресурсов, что создаст иллюзию обновления вашего сайта — на
нем постоянно будут появляться все новые материалы.Для публикации новостных лент (поддерживаются форматы RSS, RDF, Atom) ис¬
пользуется модуль Aggregator — включите его. После включения модуля Aggregator
перейдите в раздел Конфигурация — в группе Web-сервисы появится команда Сбор¬
щик RSS-лент (рис. 6.21). Выберите ее.RSS-ленты можно группировать по категориям (рис. 6.22), но в большинстве
случаев можно обойтись и без этого — ведь на вашем сайте будет и другой контент.
Поэтому вполне хватит одной-двух новостных лент, что позволит обойтись без
категорий.
114Гпава 6жп<:•гл,}у*мх* ялъоп'К'г&кяьны»:поиск и метаданные?«:*«*• сПеу^ае<д« €?>’>? 5 г.1кэ>-'ч.'.иг;а.-.йе-р'-:/г>» я рз.во«!“»г ^осгаэ^й»ГсОИО.'ЗМес’йОЙжЛ И!-Х;?;(;С^Ма.= -<,5«, йясв
п;:м rw^c;^ Q-^'OpeS й ЛО/Г'Й»вv!3*.«:ri(-;-n5K H>s CTo.va^.>H,; f..a«Ta ’"-узЧ’.уs 4y,CT*Z2 CCiifiKV*3r/.s<;4«-^/.i.-.'C'Y?:.'!K.He^vv?‘ -глп^х и:ы»ок. «а с я->.:*■WES СЕРВИСЫ3НйГТГгйЙяй е:ЫСЙ«>9( «ЙТЙ«ГгЛ^ЧКСтик r,yn%XQt, %«С б о pus,«K R5 S -■ ;Ш4 5Нй‘-ЛуО;%-К сбора .ЛНф-ОйиачГй
«fUr^tsi ярс-аег.'-*:-» s', C"GCS6 йрегион и язык#а й срлчйЙр<-«скн-o?oO-,>s^*-,v5P/*мс. 6.27. Раздел Конфигурация, группа Web-сврвисы;п/,3 публикую? се-зя последние заго;иваетсяВЙЙЮЧИТе вОбз?вй мй «страниие упр«
’ ДоОЗЙ^Ь R5S->5ViHTyО Г,.ц/ wr.-,®.,Her доступных каналов. Д-абз^тв %5-чал.Обзор категорий:■ ЗАГОЛОВОК."_. ....'" .Нет доступах категорий, До^агигг категорий.Т’мс. 6.22. Сборщик RSS-лент
Работа с материалом115Добавьте на сайт новостную ленту с помощью команды Добавить RSS-ленту.
Для этого нужно знать адрес добавляемой ленты, но не стоит беспокоиться, вы без
проблем найдете подходящую ленту новостей — в Интернете множество новостных
сайтов. Ёсли вы пока не знаете, какую ленту лучше добавить, для примера восполь¬
зуйтесь следующей лентой (рис. 6.23):http://static.feed.rbc.ru/rbc/internal/rss.rbc.ru/rbc.ru/news.rssPuc. 6.23. Добавление на сайт новостной лентыПока лента не обновится, в ней будет 0 элементов. Вы можете обновить ее немед¬
ленно, выбрав ссылку обновить новости (рис. 6.24).Затем в меню навигации выберите команду Сборщик RSS-лент (можно изменить
название этого пункта, отредактировав меню Navigation), и вы увидите новости, до¬
бавленные со всех новостных лент (рис. 6.25).Общие параметры сборщика лент можно изменить, выбрав ссылку Настроить в
списке модулей (рис. 6.26). Параметры достаточно просты и понятны. Самый глав¬
ный параметр — это список допустимых HTML-тегов. По умолчанию допустимы сле¬
дующие теги:<а> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>Для отображения картинок добавьте тег <img>.
116Гпава 6стсш 8-8* ДсС>лг;лть -^л-егор^к; 4- ДсбдйОбзор RSS-лент.ПОСЛЕДНЕЕ •'. . -'СТЕДУТОИКЕ.-ОБНОВЛЕНИЕ - '• . ' 05Й0ШЖЙИЕ.' .'• ■■'■■у*Й''1вШ ;. ," .'. ,ЗАГОЛОВОК ПОЗИЦИИ25 прошло 59ыян- 50■ Юсек назад лзкс’-ч'Т-пунктов сел-25 _ про-игло 5Р a-ww 55V-.iL. 5-сек. назадлунктог сг#.'Кг *М/ категорийРис. 6.24. Сборщик RSS-лент: добавлено 2 ленты°' Сборщик RSS-лентими края, пострадали грае рабочих из КНР,Нзвигаияя "■ ■дна уяал башенный крчЬй, задс^гствозаяный яр;? стро?гтелъ-отВ'й десягйэтажяогс
‘ рабочих из КНР. Об этом сообахае.т прых-службе, главного управления МЧС по
юградзяшах доставали в го|х?дск;ук> клиентскую болшиоу. в.вастожйее гремя
ул лечебное учреждение.С,Собянин поставил срок для наведения порядка so всех дворах Москвы
8.ВС - .г9 лаш. ^4 сек, назадСегодняшний объезд столяаы мэр Москвы Сергей Собянин посзз'пил проблем© лорлдкэ so дворах
доно-в. Уннд&йяая картина гызеала у градоначальника раздрзжгнт Мэр озаакоагплся5 с состоянием-г С&орхзтс RSS-лентРис. 6.25. Работа добавленных лент новостей
Работа с материалом117Допускаются только следующие HTML теги,<а> <Ъ> <br> <6d> <di> <?!?.> <вт> я> <Н> <о!> <р> <stfong> <и> <и!>:й?оу я^тах которые >?е> & :: ■. '■Пункты на страницеЭ пункта [.»]Отбрасывать старее че»v -3 месяца Э неделя tilн<пус«е его?!Выдерите категории используя
/Ьп&шиДЛ* nyHHV^ ЛгЬ?‘«’Ш. При ,1СГ.0ДЬЗС>»ЙНМЯ &-.>ЛсСЙОГС Ь.СЛ;‘Л»СТ5Й Йбгего-йййДлина урезанного описания:»ОС.«80П09''Е]:KprtTi'-O:/! SC;3CVU1 Д0Куг,1*!Ч.?я. OTS.'.eTaT« J'a ЗПЙЧЯЯЙЙ Ьулпгтедаа ч ногг,ш о6г»озлаии^чРис. 6.26. Общие параметры модуля Aggregator6.4. ТаксономияЕсли вы внимательно прочитали эту главу, то у вас возник вопрос: а как создать
категорию (рубрику) для статей и других материалов? Да, выше было сказано про
подшивки, но ничего про категории. Так оно и есть. Во многих системах управления
контентом (в том числе и в Joomla!) материал разбивается на категории (рубрики).
В Joomla! уровень рубрикации ограничен двумя уровнями, т.е. вы можете создать ка¬
тегорию и подкатегорию. Например, вы можете создать категорию Автомобили, а
подкатегориями в ней будут марки автомобилей.В Drupal подобного механизма нет. Вместо него вы можете использовать или под¬
шивки, или таксономию — что кому больше нравится. О подшивках мы уже говори¬
ли, а о таксономии мы поговорим сейчас.Некоторые пользователи, встретив непонятное название (“таксономия”), не ре¬
шаются использовать эту возможность. Таксономия — это средство классификации
содержимого. Благодаря таксономии вы сможете классифицировать контент вашего
сайта. Можно долго теоретически рассуждать о таксономии, но это только еще боль¬
ше вас запутает. Лучше всего попробовать использовать таксономию на практике. Вы
увидите, что все это довольно просто. Чтобы было понятнее, представим, что мы соз¬
даем сайт по компьютерам. Все материалы можно разбить на две большие группы —
“Программное обеспечение11 и “Железо” (аппаратные средства).
118Гпава 6• Словарь: Компьютеры■ Термин: Программное обеспечение■ Термин: Железо■ Подтермин: Процессоры■ Подтермин: Оперативная память■ Подтермин: ВидеокартыТеперь, думаю, понятно, как с помощью таксономии распределить материал сайта
по категориям.Гй&каз % я СтруктураТаксономия поз&отет классифицировать садгг^аи^е 8 таксономия используются слокаои (4 термины, которые входят а
сяоеар'и Например, сяоааоь который называется -‘Фрукты*, может содержат^ тес-мины «’Яблоке»- ^Ane/i&Cs-iH® и «Банан»*&* ДоЬ&Гуать словарь
s-мвдчге елдарл действия■ ■■■;" «сумы слсгарь. список те.;;шиное- до^ Tags агь^адт^ ело&арь £Я-ис-з-!ст?;р«,ч.ноЕ доПоказать sec поя«й/*ис. 6.27. О/сно команды ТдКСОНОМиЯПервым делом нужно создать словари. Выберите команду Структура^Таксономия.
Далее щелкните на ссылке Добавить словарь (рис. 6.27). Введите название словаря и
его описание (рис. 6.28).После того как словарь будет создан, выберите команду добавить термины.
В нашем примере добавьте два термина (“программное обеспечение” и “железо”).
Работа с материалом119Добавленные термины будут отображены на вкладке Список окна редактирования
словаря (рис. 6.29).ГгДЛКГИРОЯАТЬ : УПРА£ГИ>,ТЫЮГ!ВИИ ( УП.'АГГЯТЬ OfOSP*W).«« йСДЗ■ Ц” ' ■СПИСОКа^М>ш№ма№йш#^Ш IГдазнза > Айм^нястрирсгаиие ч Стр^гг/р-а * ‘Параметры любого герминз уож.но изменить. нажай ссылку *праа-ка> напротив этого тега
4* Добавить термин. л-': :■'■); 4* программной обеспечениеЛок®,зз.т& йес полейРис. 6.29. Список терминов словаряПомимо словарей, созданных вами, Drupal автоматически создает и ведет два соб¬
ственных словаря. Первый — это Форумы. Терминами этого словаря выступают кон¬
тейнеры и форумы, созданные вами (рис. 6.30).Второй словарь называется Tags. В этот словарь автоматически добавляются тер¬
мины, которые вы вводите в поле Tags при добавлении материала. В результате при
добавлении нового контента появляется возможность выбрать нужный термин из
списка, указав лишь начальные его символы (рис. 6.31).Г:'£АХ('АГ0>..~УЬ \ YW/jyi'ilbiUmiMM 5 yii~A.rJviih Or-OvyftS.tS!*» «ая » Адд-ши^стрйроааийФорумы contain? terms groused under parent terms You сап reorganize the terms in Форумы usin-g their drag-and-drop'
Нал die s..* Добавить 7epv»w.. J..’ / . :-4* OfsepaiiHO'Hi-i»!• Ф LmuirД1. ' , ... ; --По кале*?* sec полейЛис. 6. 50. Термины словаря Форумы
120Гпава 6Алс^сз и >я*к'П/Он>;ей авта^йт^газ^ греоСг^уклхя 2 <;:ыдм-1.Дос-упг'й^ !-<ТМ?.т«ги. <5> <&."TJ> •Cf*!’»:: -.Ьк?с!<:аи<>й> <c^d*> <;uL- <0;> •-.'!>> <cH> w;> ~t?d>Стр;;.--:й « п^^гоз^’ы П“р^г;с»,7£Л вьтжиггсче/:**<z:zjРис. 6.31. Выбор ранее введенного термина (тега)Ссылка http: //сервер/taxonomy/term/<TID> (TID — идентификатор термина)
показывает все материалы, соответствующие этому термину. У меня TID для термина
ubuntu равен 3, следовательно, URL http: //cepBep/taxonomy/term/З отобразит
все материалы, соответствующие термину ubuntu.Вы можете добавить в меню Navigation ссылки вида http: //сервер/taxonomy/
term/ <tid> для отображения документов, соответствующих тем или иным терминам,
благодаря чему сформируете нужную структуру сайта. Понимаю, что в других CMS это
делалось автоматически, ну а в Drupal придется немного поработать руками.
Дополнительную информацию о таксономии вы можете получить по адресу:http://Baui_cepBep/node/5#overlay=admin/help/taxonomyА по следующему адресу вы можете скачать дополнительные модули, которые рас¬
ширяют возможности таксономии:http://drupal.org/project/modules?filters=tid:716.5. Установка визуального редактораНапоследок расскажу, как облегчить жизнь начинающим пользователям Drupal.
Сейчас мы займемся установкой визуального редактора материала, позволяющего
обойтись без знания основ HTML. Хотя все же рекомендую прочитать приложение В
книги, поскольку знание языка HTML пригодится вам в главе 8, когда мы будем созда¬
вать графическую тему для нашего сайта. Там без HTML уже никак нельзя обойтись.Итак, начнем. Первым делом скачайте, установите и активируйте модуль Wysiwyg.
Сам модуль не является визуальным редактором, однако представляет собой как бы
мост между Drupal и визуальным редактором, который вы выберете. Довольно непло¬
хая реализация — кому-то нравится один редактор, а кому-то — другой, в результате
же каждый работает со своим.Установите модуль как обычно. Модуль должен установиться без всяких проблем
(если не считать того, что перед установкой нужно удалить еще одно расширение
. gz — видимо, это фирменная особенность данного сайта), рис. 6.32.
Работа с материалом121* tmUilUd wystwyg successfully* tn&bk newly added modules in Wvsavyg* Administration pages* T-Yoni pa.g?Лис. 5.52. Модуль Wysiwyg установленСледующий этап — это активация модуля (рис. 6.33). Здесь тоже все должно прой¬
ти гладко.' ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ~^'2 Е: "СИЯ orliWH/= к.--*-,*: \7\ Wysiwyg 7 x-2.x~dev Allows user* to edit contents with dient-Vrde editors.Puc. 6.33. Модуль Wysiwyg активированПосле активации модуля Wysiwyg в конфигурации сайта (команда Конфигура¬
ция в главном меню панели управления) должна появиться команда Wysiwyg profiles
(рис. 6.34). 1Скрыть Q?Yi1Cf>Mm
ЛЮДИН м€1 DC? Й Га? уч йТНО-Й 3Л ?? С 'Л
; иасту,зй«й' регистр®',мй с&йте., содер^а^еотпрй£л.-д^и?;1>; писем,- пол-яисей иизсбо-з..<-ений пс;а&.50зйтч:л^?лм..&??окйро-зка I? йдресоеУявъьъъну-*:. за&'кзчйрозанн^мг-* if-;;.йоес.гш'и; АВТОР КОНТЕНТ Д.- Wys;wyg profiles' & Форматы тейстаHaCS.’CO;>X-)i фл4г;~ ГО*;СТЙ ?>0^СУЛЗ.<?МЫХnar-»%oscr?/v«?.?^ иапр-и-^ер.,псг?.?.ки 5 t«,v;ct тегсз HTML РНР *:ад& Тг.к:*:е гкх?чог-яыгюжяючлгъ ф^/^он. гф«дсстй5ЯЯе«:я.;-сЛис. 6.34. Новая команда в меню конфигурации сайта
122Diaea 6г.'Wysiwyg- ргой!е$: '.'„о.A WyjUvyg prcffe is a4seci?ited wkfr an input format й Wysiwys p?ofiis defines which cuent- side editor rs loaded witi'i a pamc^ac input format.. what
aunons or themes <s/e ena.i?;ed fo»- the editof, bow the editor s.s dispJay-fcd, and a few other editot-sp-eafk. functions.▼ JNS1 AUAflON INSTRUCTIONSThere arc- no editor Imsarsss installed currency. The following ifst contams a l^si of c-urremiy supported editors.Еет*емсЫ™Md“*■4 !”5*r-- "■■•■'■•; загт/йШ libzaries/pk,-5о-.гйе.а«»агШгегу;сая-ив :, ;л гг tea/ell*1 lifcrariea/e’*)•., :;' tsBta#ea«bM;lin(iraf. -is -.gr--.-:,r: -: -: r-;eг -. ^.-fiires/eU/UbJreri-as^ge; /ккииНЬ».**^,..; ч
-., »j,^e.3/ai2/iii>rarle»/f с»: z-'.izzr :"':'.;'/'£'SctrBct{he''&rehr^raiidxdg ■ : • 1 ' ■ 1 1 ■' ' Рис. OJ. Инструкции no установке разных редакторовВыберите эту команду. Вы увидите инструкции по установке различных визу¬
альных редакторов (рис. 6.35). Я выбрал редактор CKEditor — не зря же он находит¬
ся выше всех, значит, и проблем с ним должно быть меньше. Щелкните на ссылке
Download, чтобы скачать архив с редактором. Затем нужно распаковать архив, в ре¬
зультате будет создан каталог ckeditor. Его нужно закачать на FTP-сервер в каталог
sites/all/libraries/ckeditor так, чтобы был доступен следующий адрес:http://Baui_cepBep/sites/all/libraries/ckeditor/ckeditor.jsВернитесь в окно браузера и просто обновите страницу. Вместо инструкций по
установке у вас появится возможность выбрать визуальный редактор (рис. 6.36), ко¬
торый будет использоваться для работы с форматами разных типов (Filtered HTML,
Full HTML, Plain Text). Для последнего формата редактор можно не выбирать — это
просто обычный текст. Щелкните на кнопке Сохранить. Выбираем в обоих случаях
редактор CKEditor — другие у нас пока не установлены.После сохранения страница с параметрами визуального редактора будет выглядеть
так, как показано на рис. 6.37. Чтобы назначить для определенного формата другой
редактор, нужно сначала выбрать команду удалить, а затем уже выбрать из списка
другой редактор (при этом неплохо бы его сначала установить).Не знаю, как вам, а мне сразу же захотелось испытать установленный редактор. Для
этого нужно перейти в раздел Содержимое и щелкнуть на ссылке изменить напро¬
тив любого документа (желательно выбрать статью, чтобы текст был побольше). Но
Работа с материалом 123результат меня разочаровал (рис. 6.38). Я даже подумал, не поменять ли редактор. Как
ведите, вместо полноценного текстового редактора в стиле Word я получил пустую па¬
нель инструментов с одной лишь кнопкой для ее сворачивания и разворачивания.Wyw.y'j p.’Cflii <• оA Wysiwyg profile is associated -л;тЬ ей in$ui format A Wysiwyg profile defines which dk»r.t-side ed:?cw i-s «e-sded •*:#> а ?;а:|:а«аг <hjh« 'дат?.*, v
buttons о; themes ar« еваЫей to; the editor, how she td-лог is displayed, and a fw огйег ed;ior~spea6c ^гпс^оя:-.VjNWt:m(!M4T ; EonroR-'-..: r '. • . - • • ;'' ' .действия. .• ' ""filtered HTML CKEnrtOf 3 4.2.6£U1 g}! CKEdrtor 3 4 2 6041 is!'-
[cK&tc ,4/гСУ т•, f.iitv! 'dtfew' to- ul/i йяЛэО;:# firU* K- f, 11 Mi') , v‘.F” .S i%,Puc. 6.36. Выбор визуального редактора, используемого для работы с разными форматами«шин || ^Жwy5iwyg profiles О :у ':. ■■',■■ ,:. ,/:"•. 'k Wywwyg profik is aisociaied vtizh ari inpus format A Wysiwyg orc-fik defines vvhieb client-side editor is tosded »«ith d ра?гк.«!г»- input format, wh«s,t
buttons or themes are enabled far the editor, ftovv the «di-tor ts displayed. and a few ache! editcs-spednc fyncuori-s„„ ; -
Futered HTML Civcaicor 3.4 2 6041 Vas^tbF i'i HTML' 3-4.2 6045Ran text Jt 3.4 2 6-04?Та assign a diffeent sdiKu -o a texi farms! сЯк 'd-глхъ" to г*гпс*и\пи ex^’ing йгс.г: » INSTAUATIOW INSTRUCTIONSPuc. 6.37. Профили визуальных редакторов
124Глава 6' f t Дх1Ь7Уфйо-ЧЬ CfAfrS’ УгТйпОШМ СТАТИЧЕСКОГО !Р-*!Д1)СС,. :\У‘.л •' Г*'Н )< О Г-Н Р l;bon;hI 9ч04/0епШ;Й':./л>й;; % ;Щ:>w/E fe0 ПГО». ?е.О?Г* Р£ДЛ*1ИРОКЛГЬ С i sJVrf ГУ-'ЛТ Не *овка сгатичесгаго IP-здреса для сетевого интерфейса в UtСодержимое (Редактирован ь <шои<)Подключиться к локальной сети в Ubuntu очень просто, если в cent используется DHCP-сервер - сервер автоматической
настройки узлов сети (DHCP - Dynamic Host Configuration Protocol - протокол динамической настройяи узла) Все, что нужно
для подключения к локальной сети - это подключить сетевой кабель, а всю остальную работу за вас сделают DHCP-сервер
it XetvvofkMaoager ~ конфигуратор сети Ubmfu В случае удачного подключения к локальной сети на панели GNOME возле
регулятора громкости вы увидите индикатор соединения. Если подвести к нему мышь, то вы узнаете, к какой сети вы
подключены (рис. 1). Ш.Рис. '6.38. Немного не то, что ожидалосьРис. 6.39. Параметры настройки визуального редактораНа самом деле я просто поторопился. Оказывается, нужно опять зайти на страницу
профилей визуального редактора (см. рис. 6.37) и перейти по ссылке редактировать.
Работа с материалом125Откроется страница настройки параметров визуального редактора. Зайдите в раздел
Buttons and plugins (рис. 6.39) и установите флажки для всех необходимых вам кно¬
пок панели инструментов, а затем щелкните на кнопке Сохранить. После этого сно¬
ва попробуйте отредактировать статью. Как видите, ситуация намного улучшилась
(рис. 6.40), не правда ли? Поэкспериментируйте с параметрами визуального реактора
и настройте его так, чтобы он полностью соответствовал всем вашим потребностям.’Рёдактироват&Огатм, Установка 'статического|Р-адреса; для "сетевого интерфейса в Ubuntu •.
9,04'/Den tx V-;.': :■--г• {л-г/ "-г-. /■ . ■' •\ ® ПРОСМОТР РЕДАКТИРОВАТЬ СТРУКТУРАTitle *■ г ' -‘i ■,■ г ■. ■■ >' г./ч г <, у < .'фвИСй Ц UL' \ 7 “ *и'ть^ я чоч&льо! сеш & L tuiitu i. «нь просто, ei.'M в -то г пияь erc^DHCP - Lcpt-p лет i»i ни 1-ч.г »гк'стр-и'*:г з7ив»ст»0>НСР -D nai^r Hof Сonfinuratioa Prrttcjl — пр<'т< &о,~зикамич^-ссг.i рлсгр^Г'^т' чсО Екс rr~ Hrih
pi* nrjr„7i-uM“F ^ сч чс* апы-iufi - -тс n-~3v*4»nm, стеьсй ~зГ авсл. пгцг1ы; гиргГсх за ' D5*C Р . сит.r\ri' rkMaiw^ei ^ ск^г1Г ^ этир i m’-J'trni 3 ’ jvst «чп позгч'ч'ч0^.»'? г по*д.ть » r ’nt пм^чт'Г\OVr б«. .."fр ПЛЯТ ’’ре'"' “П'' БЫ 'BIUf’Tr- Пг :!Р 1ТСр ц. J1IЯ ГОЗВг-'ТТ! J На,Ь MoIZZto Т r I НсТ-ТР i PJ Л '.Ы/Г? подключены {рис. 1 > Й. Рис. 6.4ft Редактор в действииТакже можете попробовать установить альтернативные редакторы. Редактор
CKEditor — далеко не единственный, поддерживаемый модулем Wysiwyg. Вполне ве¬
роятно, что вам может понравиться какой-то другой редактор. Однако помните, что
все визуальные редакторы — это довольно сложные комбинации программ на языках
JavaScript и РНР. Вы можете столкнуться с тем, что один редактор прекрасно работает
в одном браузере, но неправильно — в другом. Так что нужно или выбрать редактор,
который работает в вашем браузере, или подобрать универсальный редактор, одина¬
ково работающий во всех браузерах. Тестировать все браузеры я не стал, могу сказать
одно: CKEditor нормально работает с IE, Chrome и Opera. С другими браузерами я его
не тестировал.Следующая глава посвящена пользователям, правам доступа и ролям. В ней вы соз¬
дадите несколько полезных ролей для вашего сайта — редактор, модератор и дизайнер.
ГЛАВА7Пользователи и права доступа7.1. О безопасности учетных записейDrupal позволяет пользователям регистрироваться на сайте самостоятельно, а
администратору — создавать учетные записи пользователей. Администратор может
создать несколько учетных записей для своих помощников или, если есть проблемы
с регистрацией у пользователя, например, почему-то не приходит ссылка активации
учетной записи, — тогда администратор может помочь пользователю. Из соображе¬
ний безопасности рекомендуется создать дополнительную учетную запись для адми¬
нистратора, позволяющую ему просто управлять контентом, но запрещающую из¬
менение важных системных параметров (конфигурация сайта, управление модулями
и т.д.). В случае взлома этой учетной записи (перехват пароля, троян, собирающий
пароли и т.д.) злоумышленник не сможет уничтожить весь Drupal. Контент, конечно,
тоже жалко, но тем не менее.К тому же публиковать материалы от имени администратора тоже не рекомендует¬
ся. Из-за тех же соображений безопасности. Логика следующая: вы — единственный
хозяин сайта, во время его наполнения вы ведете его самостоятельно (всякие помощ¬
ники появляются позже — по мере развития сайта). Когда вы установили Drupal, была
создана учетная запись администратора (даже, если вы ее назвали не admin, a user).
Злоумышленник рассчитывает, что вы не создали дополнительных записей, а рабо¬
таете от имени пользователя-администратора. Ему достаточно просмотреть первые
материалы, перебрав ссылки http: //cepBep/node/N (где N — от 1 до 10), чтобы вы¬
яснить, кто на сайте администратор.Думаю, все понятно: кто установил Drupal, тот и создал несколько первых записей.
Следовательно, этот пользователь является администратором. Затем запускается про¬
грамма перебора паролей по словарю. Написать такую не проблема для пользовате¬
ля, владеющего навыками программирования на РНР или любом другом языке про¬
граммирования с сетевыми функциями. Такая программа будет запущена на каком-то
хостинге, что обеспечит ее работу даже, когда злоумышленник спит. Максимальное
время выполнения сценария? Если в вашу голову пришел этот вопрос, то вы уже об¬
ладаете средними навыками программирования на РНР или же просто внимательно
перечитали php .ini. Так-то оно так, но, чтобы вы знали, существует много спосо¬
бов обойти это ограничение. Что же касается словаря, то словари популярных паро¬
лей доступны в Интернете, за них даже не нужно платить деньги. Можно написать
Пользователи и права доступа127программу, перебирающую все возможные комбинации символов. Работать такая
программа будет дольше, но результат гарантирован, если хакер угадает количество
символов в пароле. Понятно, что если у пользователя семизначный пароль, а про¬
грамма подбирает только шестизначные, то она никогда не достигнет цели. В этом
случае перебор по словарю является более эффективным, особенно, учитывая, что
пользователи любят короткие и простые пароли. Я это не просто так рассказываю.
Делайте выводы: пароль должен содержать буквы и цифры, желательно, чтобы в нем
был нижний слеш — знак подчеркивания (когда программа переберет все буквы и
цифры, она начнет создавать пароли с другими символами, а на все это нужно время),
минимальная длина пароля должна быть 7 символов.7.2. Параметры регистрации пользователейЗайдите в панель управления. На рис. 7.1 показано, как выглядит панель управле¬
ния, если зайти в нее по ссылке http: //сервер/admin. Перейдите в раздел Конфи¬
гурация. Сейчас нас больше всего интересует подраздел Люди раздела Конфигурация
(рис. 7.2), содержащий параметры учетных записей.Аштттттт^ задачиРис. 7.1. Панель управления DrupalМы уже рассматривали этот раздел, но я пообещал, что мы к нему еще вернемся
для подробного разговора. Напомню, что все параметры в разделе Настройки учетной
записи уже были рассмотрены нами в главе 4. Сейчас нас больше интересуют параме¬
тры регистрации пользователей (рис. 7.3).
128Гпава 7" Vi Г. нал - ^'релв.-'М’гКонфигурация оСкрыть описания' ЛЮДИ■ Й Настройки учетной■ Нестройна регистра*.or а р аап я с м « к пу\ се »ииз о 6 раже н ;д й г, о я ьзскироека *' -Д--Управление забясжи1?--г.ар‘2сал'и.Рис. 7.2. Подраздел Конфигурация^ЛюдиРЕГИСТРАЦИЯ И УДАЛЕНИЕ
К'о может создавать аккаунты?ЬКО администратор
.етитеяиетитеяй, требуется разрешение администраторадуется пр-озерке адреса -электронной лс‘гты при со5дан*т учетной записиiec6#OAitf!»ia будет пстб«рйитг саой ал.рес электронной ?яочгя пг-0?д едаздом нй сайг « ка будя' «йзи^че^ы
;й пароли Пр<* отключении этой «йстродаи сможет &ойт« « систем/ сг>«гу после регмспузцуг,* ^ «ь:бpats с«слПри удалении пользовательской учётной записида- Отключить учетную запись и сохранит* есе содержимое.люч/пгь учетя/ю запись и сиять с публикации все <*.« материалы
ьяить учетную запись я поисвсить асе ее материалы яользозат&тс Гостьлить учетную запись. ^ весь ее контент.':£зтел^ с прс1.гйад-и метод дляудзая-мря учег-ысй $я.:?мЫ' ап-а ’Упр-хе^ение w^ryy жеог ^«тедй и ■,* шРис. 7.3. Параметры регистрации и удаления пользователейДля закрытых сайтов (например, сайт-визитка, каталог товара без возможности
заказа и т.д.) регистрацию вообще можно выключить, установив переключатель Кто
может создавать аккаунты? в положение Только администратор. Для большинства
сайтов пользователи нужны (даже если у вас сайт с персональными статьями, реги¬
страция пользователей необходима, чтобы они могли добавить свои комментарии).
Поэтому в большинстве случаев нужно установить этот переключатель в положение
Посетители, но не Посетители, требуется разрешение администратора. Как уже
было отмечено в главе 3, этот режим вам очень быстро надоест и создаст дискомфорт
для пользователей, которые будут часами ждать разрешения администратора.
Пользователи и права доступа1297.3. Бан пользователейВ разделе Конфигурация^Люди1^Блокировка IP-адресов (рис. 7.4) вы можете за¬
блокировать (забанить) пользователей по их 1Р-адресу.блокировка IP адресов оs ме получат дасr/п я сайту Йадесто этогоссо&щениа о том чго ихЗДОЛОЙИрОг'З.М-'ШМ5Р адрес.. Дебзвтъ,уЗДБЛОКИеОЗЛЧЧИЕ Iе1 ДДРЕС4 ДЕЙСТВИЯЛис. 7.4. Блокировка пользователей по 1Р-адресуБлокировка по IP-адресу — функция одновременно полезная и бесполезная. Ка¬
залось бы, хорошо заблокировать пользователя, который регулярно спамит на вашем
сайте или его поведение отклоняется он принятых норм морали (грубо говоря, он
нецензурно выражается и хамит другим пользователям — таких нужно гнать в шею,
пока они не распугали основную аудиторию сайта). Допустим, вы его заблокировали,
а на другой день он опять может оказаться на сайте. Как это получилось, думаю, вы
уже догадались — в настоящее время в большинстве случаев используются динами¬
ческие IP-адреса. Сегодня пользователь получил от DHCP-сервера один адрес, а зав¬
тра — другой. Заблокировать всю подсеть нельзя, иначе другие пользователи из нее не
смогут получить доступ к вашему сайту.С другой стороны, на некоторых пользователей блокировка, даже непродолжитель¬
ная, действует положительно. К тому же, некоторые провайдеры намерено присваива¬
ют пользователям один и тот же IP-адрес, чтобы можно было сразу понять, кто и что
натворил, без просмотра многотомных журналов. У меня последние три месяца был
один и тот же IP-адрес, и он и дальше был бы таким же, если бы я не сменил тарифный
план. В моем случае блокировка по IP-адресу — достаточно хорошая мера. Так что
пробуйте — может, у вас получится заблокировать спамеров и хамов по их 1Р-адресу.7.4. Список пользователейВ панели управления перейдите в раздел Люди и вы увидите список пользователей
вашего сайта (рис. 7.5). После установки Drupal у вас будет только один пользова¬
тель — администратор (его имя может отличаться от приведенного на рис. 7.5, по¬
скольку имя выбирается пользователем самостоятельно).
130Глава 7ОБНОВИТЬ ПАРАМЕТРЫ
. Разблокировать отмечениы:; (Ч admi. активен * administrator 4 дня 2! час II мин. 56 сек. назад изменит»аттейЩ^М^т,,),Рис. 7.5. Список пользователей сайтаСписок пользователей содержит следующие поля:• Имя пользователя — имя пользователя, использующееся для входа в систему;• Статус — статус учетной записи (активна, блокирована);• Роли — роли, назначенные пользователю;• Время участия — время, прошедшее с момента регистрации пользователя на
сайте;• Последний доступ — время последнего входа пользователя на сайт;• Действия — действия над учетной записью.Для выполнения действий над выделенными учетными записями пользователей пред¬
назначен список Обновить параметры (рис. 7.6). Он содержит следующие элементы.• Разблокировать отмеченных пользователей —учетные записи пользователей,
если они были заблокированы, разблокируются.• Блокировать отмеченных пользователей — данный способ блокировки в
большинстве случаев более эффективен, чем блокировка по IP-адресу. Поль¬
зователю придется создать другой почтовый ящик и заново зарегистрироваться
на сайте, чтобы снова начать “гадить” на сайте.• Отменить выбранные учетные записи — удаляет учетные записи, хотя на са¬
мом деле выполняется действие, выбранное вами в списке При удалении поль¬
зовательской учетной записи в разделе КонфигурациямЛюди^Настройки
учетной записи (см. рис. 7.3). В результате пользователь может быть не удален,
а просто временно заблокирован.
Пользователи и права доступа131Добавление роли выбранным пользователям — позволяет добавить роль
administrator (пока только эта роль доступна) выбранным пользователям, что
автоматически сделает их администраторами сайта.Удаление роли для выбранных пользователей — удаляет выбранную роль у
выбранных пользователей.ОБНОВИТЬ ПАРАМЕТРЫРазблокировать отмеченных пользователей [Si:.€>6новш>! ШжтвтшжтяйБлокировать отмеченных m
Отменить выбранные учетные записи ь....'Добавление роля выбранный пользователям и
administrator :^Удаление роли для выбранных лользователейЫг^гагог 4
: '{ administrator |Рис. 7.6. Допустимые действия над выбранными учетными записями пользователейНад списком действий находится область фильтров, позволяющая отобразить
пользователей, соответствующих установленным условиям: роль, разрешение (мож¬
но выбрать возможность, которой должны обладать выделенные пользователи), со¬
стояние (активен, блокирован). Фильтры полезны, когда у вас будут сотни пользо¬
вателей — порой найти нужных пользователей довольно сложно, а с фильтрами это
сделать существенно проще.I ЛЮДИ ОШжЩШя. ШШШтШШшШШШЭта стркиица позволяет администраторам регистрировать- новых пользователей Пользовательские e-mart адрес* и имена должны бытьИш пользователя * ...i'denПро€*«лм дог гуация не дхтустима, за исилючгнием точек, дефиш, и гю&ч’ёрштмпй.^ж'ктронныйdftsi!abs@Йудг*' огсылъхься «а злеотр<?»-ж<?й по--гш ме* 5ссс*«иазлен9*я пароле или для получения новостей а у-зедрмяенмйПароль 9 ^ -
Повторите пароль *ХорошоПароли совпадают; да: Чгойы CR«Ji».TS*-S-5m ГСЗДОЛЬ-
* Д<г*5л8'лгь зггггйймыг.!и'6уй.ЕйадиУкажите паро.пь для патй учетной зРас. 7.7. Форма регистрации пользователя
132Гпава 7Добавим учетную запись пользователя. Щелкните на ссылке Добавить пользова¬
теля. Теперь следует заполнить открывшуюся форму регистрации пользователя — по¬
добную вы заполняли при установке системы (рис. 7.7).Внизу формы регистрации можно установить статус пользователя (хотя есть ли в
этом смысл?), выбрать для пользователя роли (пока доступна роль administrator) и
выбрать язык пользователя (рис. 7.8).окмрозано
.0; «ктие.чыйг ОЛ>*гисгрироейиньт пользователе:nir>zretorг*<э«ь.геза-ге<~я о сс«я.ач'ия учетной записи
ЯЗЫКОВЫМ НАСТРОЙКИ sЯзыкАнглийский (En-giishj,S; Русскийft/c. 7.<R Дополнительные возможности при регистрации пользователяПосле создания пользователя у вас будет возможность добавить еще одного поль¬
зователя — и так до тех пор, йока вы не перейдете на вкладку Список со списком
пользователей (рис. 7.9).: 0/^;.;иадпйявбвАТШ':;'.'гели fWM.w -г .г'./ДЕЙСТВИЯ.■Iактивен13 сек, никогдаакгиаен -», administrator . . 4 дня 22 часа.. - - - -13 сек. назадРис. 7.9. Созданная учетная запись пользователя7.5. РолиРоли используются для управления правами пользователя. Другими словами, с по¬
мощью ролей мы можем разрешить пользователю выполнять те или иные действия.
Перейдите на вкладку Разрешения ролей (рис. 7.10).Всех пользователей можно разделить на две группы: анонимные пользователи и
зарегистрированные. Для зарегистрированных пользователей можно создавать роли.
Одна из ролей создается при установке Drupal — administrator. По сути, в системе по¬
сле установки есть три роли — для анонимных пользователей, для зарегистрирован¬
ных и для администраторов. Но об этом чуть позже.
Пользователи и права доступа133/!'0;ч.‘ о ,решения юяи4 1’ ' ■ Ъ?* •>»-Праза доступ ;т& я^шожнегепши попьгоагтелей нз. сайге. Калдги» рая*. имеет <50й набор праа Например, можно азть-гальхога^елг зоввмньы пользователь* пра&о ло6ввлят> комментарии а гю>п&го8дч,ел.ям рс«>! «анонимный посетитель?■такого прas-» а даяиые роед ^зарегистрированный пользователь» распрострз-няютоа ча поль-аоеат'глйй всех р-олей, заисключение*, шеетлтела-». Для управления сайтом можно выбрать роль, ксто-р-зй будут автоматячесм назначаться see
газалежмы* ?;;г.-нлОсоыть о^езтиnpia^„w, .НОКНМИЫЙ“ ПОЛЬЗОВАТЕЛЬ ПОЛЬЗОВАТЕЛЬ Wk.lNISTRATORAggregator:' Настройке ковосгиых лент - ' ' F j ЩПросмотреть: лентм новостей f:\ ’<['’ Щ \Biock . , ................... .• ;Упрагление блоками ГП : : fjf.BookУправление оглавлениями подшивки i :СОЗДАТЬ HGSYSO ПО&ШИвКу • . i"1 Г ! Q!Добавить- контент и дочерние страницы к подвмеке ч Щ ЩРис. 7.10. Вкладка Разрешения ролейПрава доступа определяют, какие действия пользователь может выполнять на сай¬
те. Например, у зарегистрированных пользователей есть право оставлять коммента¬
рии на сайте, а у анонимных пользователей такого права нет. Можно, конечно, его
добавить (рис. 7.11), но делать это не рекомендуется — иначе вам надоест потом уда¬
лять спам.ПРАВО ДОСТУП». ПОЛЬЗОВАТЕЛЬ ПОЛЬЗОВАТЕЛЬмуям^мгзйд /„.ънных. tv vwpui<i& вогх rrcstiHu «о-«гг 5»«a?s» пр-сдзл;лCommentУправление «.еммечтрийми и настройка комментариев
Просмотр комментариев
Добавлять- коиментар^ы - - -Добавление комментариев без проверки
Редактировать собственные комментарии . ; -Рис. 7.11. Права доступа, относящиеся к комментариямРоль определяет список разрешенных прав доступа. Назначив пользователю ту
или иную роль, вы наделяете его правом выполнения определенных действий, харак¬
терных для этой роли.
134Гпава 7Роль administrator обладает всеми необходимыми правами. А вот набор прав для
зарегистрированных пользователей нужно изменить. По умолчанию зарегистрирован¬
ные пользователи не имеют права участвовать в опросах (голосовать). Очень странно,
потому что опрос мы добавили на сайт именно для таких пользователей. Свое мнение
мы и так знаем, а мнение аудитории можем и не узнать, если не предоставим заре¬
гистрированным пользователям права Добавление ответа и Просмотр результатов
(рис. 7.12); То же самое касается прав поиска (группа Search) —поиск на сайте зареги¬
стрированным пользователям нужно разрешить, чтобы они могли быстро найти нуж¬
ный им материал. Хотя в действительности опросы и поиск можно включить также и
для анонимных пользователей — тут все зависит от политики сайта. Нет ничего пло¬
хого в том, что пользователь не хочет регистрироваться, а просто зашел на сайт, чтобы
найти интересующую его информацию. Тогда возможность поиска будет ему очень
кстати. Что же касается опросов, то в большинстве случаев вам нужно знать мнение
зарегистрированных пользователей — вашей истинной аудитории, для которой вы и
стараетесь, работая над сайтом. Поэтому участие в голосованиях имеет смысл сделать
доступным только для зарегистрированных пользователей. С другой стороны, если
ваши опросы могут быть интересны очень широкой аудитории, то можно сделать их
доступными и для анонимных пользователей — зачем человеку регистрироваться на
сайте, если ему хочется просто поучаствовать в голосовании.Также просмотрите группу Node: нужно разрешить зарегистрированным пользо¬
вателям создавать собственные блоги, ведь выше мы уже торжественно объявили, что
каждый пользователь в Drupal может создать свой блог, а на практике у вас получится
так, что создать блог сможет только пользователь с ролью administrator.Рис. 7.12. Права для опросов и поискаКроме роли administrator вы можете создать еще несколько дополнительных ро¬
лей, чтобы лучше распределить права пользователей. Например, можно создать роль
editor (редактор). Пользователи с этой ролью смогут редактировать и управлять пу¬
бликацией материалов других пользователей. Также можно разрешить этим пользо¬
вателям переводить материалы на другой язык, если это вам нужно.Чтобы создать новую роль, перейдите на подвкладку Роли во вкладке Разрешения
ролей (рис. 7.13). Вы увидите, что в системе есть три роли: анонимный пользователь,
Пользователи и права доступа135зарегистрированный пользователь и administrator. Первые две роли вы не можете из¬
менить или удалить — это базовые роли. Роль administrator удалить тоже нельзя, но
зато можно изменить ее название (ссылка изменить роль позволяет изменить только
один параметр для этой роли — ее название).ЛЮДИ ОРАЗРЕШЕНИЯ ГОЛЕЙРоли используются для группировки пользователей -л передачи им определенных пр&з- Примеры ролей: «анонимный посетите^)).»,
«зарегистрированный пользователь», зддуимлстратор'». «модератор*, «редактор», «покупатель» и т.д Для удаления роли, аыбер-иге ссылку
«правка*, напротив ей нязаамил.По умолчанию, Drupal поставляется с двумя пользовательским w ролями;* Анонимный пользователь уга роль- используется для пользователей,. которые не имеют учетной записи или ме авторизованы* Аетор-лзое-аиный пользователь- ггз роль автоматически применяете» ко ксем книедиым под. сваям именем пользователямНАЗВАНИЕПоказать еес полей4* анонимный пальзоаатеяь блох яра вл н).‘J* гарегистрированный пользователь (заблокирован)
*$•- administrator:^ЁЙсдаЯ'.'й‘>измеиить »ояьизмйн«г?*> лрй?-й
.изменить npa.sa
<ш>?|?^итъ ора&а; ч;охрзя|#1ь:порядок';'Рис. 7.13. Список ролейВведите название роли (editor) и щелкните на кнопке Добавить роль. Роль будет
добавлена без изменения каких-либо параметров. Затем перейдите по ссылке изменить
права (для роли editor) и вы увидите страницу изменения прав роли (рис. 7.14). Вклю¬
чите следующие права доступа (в скобках — пояснение прав доступа, если нужно):• Группа Book:■ Управление оглавлениями подшивки;■ Создать новую подшивку;■ Добавить контент и дочерние страницы к подшивке;■ Просмотр версии для печати.• Группа Comment:■ Просмотр комментариев;■ Добавлять комментарии;■ Добавление комментариев без проверки;■ Редактировать собственные комментарии.• Группа Content translation:■ Содержимое перевода.• Группа Node:■ Просмотр, правка и удаление всех документов;
136Гпава 7■ Управление содержимым;■ Просмотр обзорных страниц;■ Просмотр опубликованного содержимого;■ Просмотр собственного содержимого, снятого с публикации;■ Просмотр редакций содержимого;■ Вернуть редакции содержимого;■ Удалить редакции содержимого;■ Запись в блоге: Create new content (создать новую запись в блоге);■ Запись в блоге: Edit own content (редактировать собственный контент);■ Запись в блоге: Edit any content (редактировать контент любого пользо¬
вателя);■ Запись в блоге: Delete own content (удалить собственный контент);■ Тема форума: Create new content (создать новую тему форума);■ Тема форума: Edit own content (редактировать собственные темы);■ Тема форума: Edit any content (редактировать темы других пользователей);■ Тема форума: Delete own content (удалить свои темы);■ Статья: Create new content (создать новую статью);■ Статья: Edit own content (редактировать свои статьи);■ Статья: Edit any content (редактировать статьи других пользователей);■ Статья: Delete own content (удалять свои статьи);■ Book page: Create new content (создать свою подшивку);■ Book page: Edit own content (редактировать свою подшивку);■ Book page: Delete own content (удалить свою подшивку).• Группа Poll:■ Добавление ответа;■ Отмена и изменение своих ответов;■ Просмотр результатов.• Группа Search:■ Управление поиском;■ Использовать поиск;■ Использовать расширенный поиск.• Группа User:■ Просмотр профилей пользователей;■ Изменение собственного имени пользователя.Мы предоставили пользователю editor огромные права по управлению контентом
(запретили только удалять контент других пользователей, но разрешили его редакти¬
ровать). Так что назначайте роль editor только проверенным пользователям.
Пользователи и права доступа137Права доступа позволяют упразлкть. еоз-можносгями пользователей на сайте Ка»:,
пользователям роли «зарегистрированный пользователь» noas-D добаплять кся
т&каго яраеа не давать. See лоаза данные рели «зарегистрированный лол&зо.
«-и je- ц м роли «жмекимяый посетитель'», Для управлении? сайтом ида,;;Ро»:н;,р яра? Н-алртше», мажна дат*,
ролл «анонимный посетитель*
s полыояатслей sc^x ролей, за
!ь, которой вуд^т ветсшатически ^а5Ий«дтьса see■■■ПРАВО
Aggregator
Нестройна моаостных лент
Просмотреть ленты новостей
Block
Управление блоками
BookУправление оглавлениями подшивкиСоздать новую подшивкуюггоя:1ЭаРис. 7.14. Страница изменения прав ролиПосле создания роли нужно назначить ее пользователям. Перейдите на вкладку
Список. Для назначения роли пользователю (или пользователям) выделите пользо¬
вателя (пользователей) и выберите из списка действий команду Добавление роли
выбранным пользователям, editor. Можно также перейти по ссылке изменить на¬
против имени пользователя и выбрать роль на странице изменения учетной записи
пользователя (рис. 7.15).Чтобы изменить текущий пароль, укажите нозый пароль в зоемх оедях.
Г* лту стонированоО - "if ТьЕКЫйРолл•}ар^п1етрированнъш пользователь
sdrnmistrator
wi editor; Язык■ f j Акглйнскйй (Eriglisb)'i -ф Русский- Язык по умолчанию этой учетной, записи д.ш зжктротой тчты.Рис. 7.15. Изменение роли пользователя
138Гпава 7Кроме роли editor (редактор), можно создать еще роль designer (дизайнер сайта).
Этой роли нужно разрешить следующие права.• Группа Aggregator:■ Настройка новостных лент;■ Просмотреть ленты новостей.• Группа Block:■ Управление блоками.• Группа Comment:■ Просмотр комментариев;■ Добавлять комментарии;■ Добавление комментариев без проверки;■ Редактировать собственные комментарии.• Группа Dashboard:■ Открыть административную панель.• Группа Image:■ Управление видами показа изображений.• Группа Poll:■ Добавление ответа;■ Отмена и изменение своих ответов;■ Просмотр результатов.• Группа Search:■ Управление поиском;■ Использовать поиск;■ Использовать расширенный поиск.• Группа System:■ Управление темами;■ Использование сайта в режиме обслуживания.Для роли moderator (модератор форума) можно указать такие права.• Группа User:■ Просмотр профилей пользователей;■ Изменение собственного имени пользователя;■ Управление пользователями.• Группа System:■ Заблокировать IP адреса;■ Управление модулями.• Группа Node:■ Тема форума: Create new content;■ Тема форума: Edit own content;
Пользователи и права доступа139■ Тема форума: Edit any content;■ Тема форума: Delete own content;■ Тема форума: Delete any content.• Группа Forum:■ Управление форумами.• Группа Dashboard:■ Открыть административную панель.• Группа Toolbar:■ Используйте административную панель.Все эти роли создавать не нужно: создайте только те, которые вам действительно
необходимы. На этом данную главу можно считать завершенной. В следующей главе
мы поговорим о создании собственной темы оформления для Drupal.
ГЛАВА 8Изменение темы (дизайна) сайта8.1. Способы изменения дизайна сайтаКак уже было отмечено выше, на практике дизайн сайта нужно изменять до на¬
полнения его материалами, чтобы было видно, как материалы отображаются в вы¬
бранной теме. Но в этой книге я сознательно слегка изменил порядок создания сайта,
чтобы, пока вы будете учиться, все приведенные иллюстрации соответствовали тому,
что вы будете видеть на своем экране. Поэтому во всех примерах и использовалась
стандартная тема. Теперь настало время эту тему изменить.8.1.1. Способ 1: предустановленная темаСуществует несколько способов заполучить тему оформления. Самый простой —
это использовать предустановленную тему. Кроме темы по умолчанию, в состав Drupal
входят еще несколько альтернативных тем. Можете выбрать одну из них. Преимуще¬
ство такого решения — его простота. Вы выбираете тему оформления, ваш сайт уже
не похож на установку по умолчанию и вам практически ничего не нужно делать. Но
эта тема оформления все равно использует логотипы Drupal (вместо логотипа ваше¬
го сайта), да и выглядит созданный сайт довольно простенько. Поэтому пора перей¬
ти к следующему способу получения темы (кстати, темы оформления еще называют
шаблонами).Необходимые знания: умение использовать панель управления Drupal (это мы уже
умеем! ©).8.1.2. Способ 2: загрузка темы с drupal.orgВторой способ заключается в загрузке новой темы оформления. Множество бес¬
платных тем доступно на сайте разработчиков — www. drupal. org. Уверен, что вы
найдете тему на любой вкус и цвет. Но тут тоже есть свои подводные камни. В рубрике
Most installed themes содержатся самые качественные темы (самые красивые, менее
“глючные”, одинаково отображающиеся в разных браузерах). Но, выбирая тему из
этой рубрики, сразу будьте готовы, что в Сети есть сотни сайтов с подобными темами.
Ваш вряд ли будет выглядеть уникально. Конечно, выбранную тему можно изменить,
но об этом позже.
Изменение темы (дизайна) сайта141Необходимые знания: установка темы оформления была рассмотрена в главе 4,
кроме навыков работы с панелью управления и браузером вам больше ничего не по¬
надобится.8.1.3. Способ 3: покупка темыВ Интернете есть много сайтов, где можно купить темы для Drupal. Такой сайт
вы найдете без проблем, поскольку их владельцы тратят сотни долларов в месяц на
рекламу в Google и других поисковых системах — чтобы их легко находили потенци¬
альные клиенты. Стоимость одной темы оформления составляет от 50 до 70 долларов.
Возможно, получится договориться с разработчиками, чтобы они несколько моди¬
фицировали тему оформления, добавив ваш логотип и т.д. Если даже разработчики
не возьмутся за это, можно попросить фрилансера — свободного специалиста. Мно¬
жество специалистов ждут ваших заданий на http: //freelancer. ru. Оплата услуг
фрилансера стоит относительно недорого. В случае с модификацией темы оформле¬
ния вы можете вложиться в 10—30 долларов.Но вот с точки зрения необходимых знаний не все здесь так просто. Об умении
пользоваться поисковиком Google, браузером и другими средствами, которыми дол¬
жен уметь пользоваться каждый интернет-пользователь, говорить не стану. А вот про
оплату труда фрилансера вы должны знать. Оплата обычно осуществляется по си¬
стеме WebMoney, следовательно, вам обязательно нужно освоить эту программу. До¬
статочно подробно она описывается в главе 10 этой книги, поэтому не поленитесь
и внимательно прочитайте ее. При оплате труда нужно позаботиться, чтобы вас не
“кинули”. Поэтому все переводы отправляйте с протекцией со сроком в 3 дня. Ваш
перевод фрилансер увидит сразу, но не сможет его получить, пока не введет код про¬
текции. Если это не произойдет за 3 дня, то вы получите свои деньги обратно. Три
дня вполне достаточно, чтобы фрилансер выполнил свою работу. Если результат вас
устроит, тогда вы сообщите ему код протекции, чтобы он смог получить деньги.У данного способа есть один небольшой недостаток. Поскольку темы (хотя и ком¬
мерческие) общедоступны в интернет-магазине, есть достаточно большая вероят¬
ность, что ее купил кто-то еще. Следовательно, в Сети, скорее всего, будут еще сайты
с подобным оформлением. И ничего с этим не поделаешь — т.е. заплатив в общей
сложности ~ 100 долларов, вы получите “неуникальную” тему. Да, она будет более ка¬
чественная, более привлекательная и менее распространенная, чем бесплатные темы
с сайта www. drupal. org, но она не будет уникальной.8.1.4. Способ 4: разработка уникальной
темы в дизайн-студииВы можете обратиться в дизайн-студию, где для вас разработают действительно
уникальную тему. Такой темы, как у вас, больше не будет ни у кого (если только кто-то
потом ее у вас не позаимствует без вашего согласия). Это профессиональный подход,
но стоимость создания темы в этом случае будет зависеть от раскрученности и жадно¬
сти той дизайн-студии, в которую вы обратитесь. Приготовьте не менее 400 долларов,
а верхний предел может легко достигнуть нескольких тысяч. Разумно это или нет, ре¬
шать вам. Но зачем тогда покупать книгу по бесплатной CMS, чтобы потом заплатить
такие деньги за разработку темы оформления?
142Гпава 8Необходимые знания: любые профессиональные знания, которые помогут вам за¬
работать те самые 400 (или больше) долларов за разработку темы оформления...8.1.5. Способ 5: разработка темы вручную с нуляВ Интернете можно найти достаточно подробные руководства по созданию тем
для Drupal, в которых объясняется, что и в каком файле должно быть, с приведени¬
ем необходимых примеров. При желании разобраться будет можно. Созданная вами
тема будет уникальна, и вы за это ничего не заплатите. А вот как будет выглядеть эта
тема, зависит от ваших навыков. Как минимум, понадобится отличное знание хотя бы
одного графического редактора (Photoshop, GIMP), знание процесса HTML-верстки
(конечно же, и сам язык HTML тоже нужно знать), а также понадобятся знание CSS
(каскадные таблицы стилей) и языка РНР. Да, именно так, нужно быть одновремен¬
но и веб-разработчиком, и дизайнером, чтобы успешно создать собственную тему
для Drupal. Придется еще не одну книгу прочитать. Так что если нечем заняться и
есть тяга к самообучению, можете смело приступать прямо сейчас. От меня вам в по¬
мощь — ссылка http: / /www.drupal .ru/node/10550. Хотя на этой страничке опи¬
сан процесс создания тем для Drupal 6, но, вникнув в него, вы сможете создать тему и
для Drupal 7. К тому же к моменту выхода из печати этой книги наверняка появится
подобное руководство и по Drupal 7.8.1.6. Способ 6: разработка темы на базе уже готовой темыУ предыдущего способа один недостаток: тема будет готова (если вообще будет го¬
това!) через несколько месяцев, а сайт хочется доделать в ближайшее время. Тогда мож¬
но пойти по пути, если не наименьшего сопротивления, то более оптимальному, чем
все предыдущие. Можно найти какую-нибудь бесплатную тему оформления (ее можно
взять с того же www. drupal. org), несколько модифицировать ее желаемым образом
(изменить цвета, некоторые изображения, логотип) и “прикрутить” к своему сайту.Вам не потребуются какие-то особые знания языка РНР, поскольку PHP-код вам
изменять практически не придется (все просто зависит от выбранной вами темы и от
результата, который вы хотите получить). Что же касается HTML и CSS, то достаточ¬
но знать лишь их основы. Язык HTML описан в приложении, а о CSS можно про¬
читать на сайте http: / /css. manual. ru/. Придется, конечно, освоить еще и основы
какого-нибудь графического редактора — ведь вам потребуется подготовить логотип
д ля своего сайта. Но тут уже вы сами — руководств в электронном виде по тому же
Photoshop или GIMP в Интернете предостаточно. При публикации изображений в
Интернете старайтесь использовать формат PNG для снимков экранов и обычных
рисунков (схем), поскольку этот формат поддерживает существенное сжатие практи¬
чески без потери качества.Проверим это на примере. Нажмите <Alt+Print Screen> (будет создан моменталь¬
ный снимок текущего окна), запустите программу Paint, вставьте полученное изобра¬
жение (<Ctrl+V>) и сохраните его в формате BMP. Теперь выберите команду меню
Файл^Сохранить как и еще раз сохраните это же изображение, но уже в формате PNG.
Сравните размеры полученных фалов. Думаю, комментировать ничего не нужно.А вот фотографии старайтесь сохранять в формате JPEG, установив качество 70%
и размер не более 1024x768. Такие параметры позволяют существенно уменьшить
Изменение темы (дизайна) сайта143размер файла картинки практически без потери качества при просмотре ее на экране.
Безусловно, на печать лучше выводить оригинал фотографии, отснятый вашим фото¬
аппаратом, а вот для просмотра на экране вполне достаточно не очень большого раз¬
мера и качества JPEG на уровне 70 %.8.2. Выбор предустановленной темыОткройте панель управления Drupal и перейдите в раздел Внешний вид. Темы
оформления могут быть двух типов: для сайта и для панели управления. Тему для па¬
нели управления менять не нужно — это лучшая тема для панели управления, ко¬
торая когда-либо была у Drupal. Она одинаково отображается во всех браузерах, не
имеет “глюков” с верхним слоем (как в Joomla! 1.5) и значительно удобнее, чем тема
оформления панели, использовавшаяся в Drupal 6. Да, именно удобнее, поскольку
тема оформления изменяет не только внешний вид элементов управления, но и их
расположение на странице.Что же касается тем для сайта, то вы вряд ли будете использовать те темы, кото¬
рые предустановлены в системе. Использовать то их можно (для этого воспользуйтесь
ссылкой Активировать и установить по умолчанию), но все они выглядят довольно
непривлекательно (рис. 8.1).1 1 1М|>ОТКЛЮЧЕННЫЕ ТЕМЫ' шМногоколоночкая тема с настраие аемыми
цвета,«и и переключением между
фиксированным и выводом,8*ЛЮЧИТЬ 'Активировать и установить по- умолчаниюStark 7.0Это тема демонстрирует разметку HTML и CS5
стили Друпала по умолчанию. Чтобы изучить
как построить свою-собственную тему л ■
переписывать код. посмотрите Руководство
v<: ■ii-vay.iiКIIАктивировать и установить по умолчаниюРис. 8.1. Предустановленные темы оформления Drupal 7
144Гпава88.3. Выбор темы на www.drupal.org8.3.1. Загрузка темы: обращаем
внимание на номер версии DrupalЯ предлагаю отправиться на сайт www. drupal. org в поисках подходящей темы
оформления сайта. Перейдите по адресу:http://drupal.org/project/themesОбязательно задайте требуемую версию Drupal — нам нужны темы только для
седьмой версии (рис. 8.2).§ Download & Extend' * r ' ■ D-jpc’i Tbe 'IIS'sMter by compatibility: ; ?.x .dearth Tlif-mes'iMatting ffc»tMore adva^ | j- * > t f :’ok and feei of your Datpal site. You can use themes vr , r rcontributed by others or create your win to share with the community. Contributed r я < e _ .not part of arsy official release and may net have optimized code/functionabty for yo с f *-s.You can also create a sub-theme of sn ewsting theme. A. sub-theme inherits a pare t- n ^ •>resources. Read more about $yb-thern<? ышешп? and inbedtarKe, You can also m ex », , , , s. .themes listing only their titles. MosS lnstmea2“,Ptbted-byfrhnAibfr on&tcter 12 20G6 3Z зг-Я-Яз*’, ; I~J~ Щ j V■ I 1 :i Lst-t thaogad: S sve-eks 5''iCvjrs &са ; _ , , , Iя..».....--.u.-i..- -■-• -l ...i ix- .^и& ,,'1;..,.)Рис. 8.2. Форма поиска тем оформления: выбрана седьмая версия DrupalНа момент написания этих строк на сайте drupal. org было всего 70 тем для седь¬
мой версии. 70 — это тоже немало, но всего на этом сайте загружено более 700 тем.
Думаю, в скором времени для Drupal 7 появятся дополнительные темы.При выборе темы следует внимательно читать описание — почему-то в категорию
для версии 7.0 попали и некоторые темы, разработанные для 6-й версии Drupal.
Изменение темы (дизайна) сайта1458.3.2. Установка темыВыбрав тему, в разделе Внешний вид перейдите по ссылке Установить новую тему.
Выберите файл темы (рис. 8.3) и щелкните на кнопке Установить. В случае успешной
установки вы увидите сообщение, подобное представленному на рис. 8.4.Установить новый ьюдут жнс указав адрес к сети, по которому находится пакет проекта, или загрузить файл проектасамостоятельно. На сайт-s l,ofg можно найти дополнительные модуЯ’И и дополнительные темы. Поддерживаются файлы соследующий** расширена» 'zgzhz2*Установить с адреса
ИлиЗг’гругите архив модуля или гомы- для установки.: Выоеситеcbaim < *r,a\isc 7 c*/tst а?Puc. 8.3. Файл с темой выбран|j|| installation was completed successfully.analytic* Installed anniyttc successfully* *йа!уис theme as default* танов pagesjePuc. 8.4. Тема успешно установленаПерейдите по ссылке Administration pages, а затем снова перейдите в раздел Внеш¬
ний вид. Установленная тема будет добавлена в список тем в разделе Внешний вид
(рис. 8.5).8.3.3. Состояние темы и модули для
переключения тем пользователямиТема может быть активной и выключенной. Все активные темы доступны пользова¬
телям, и каждый пользователь может выбрать любую из активных тем — ту, которая
ему больше всего понравилась. Когда этот пользователь зайдет на сайт, указав свое имя
пользователя и пароль, Drupal “оденет” сайт в тему, выбранную этим пользователем.
146Гпава 8Однако для всего этого нужно предварительно установить дополнительные модули.
Самый лучший модуль для решения данной задачи — switchtheme, он выводит спе¬
циальный блок, в котором пользователи могут выбрать тему. Есть и другие модули,
например, role_theme_switcher, позволяющий выбрать тему в зависимости от роли
пользователя. Модуль blogtheme разрешает пользователю изменить тему своего бло¬
га. Если вы хотите разрешить пользователям изменять оформление сайта, установите
все эти модули. Их можно найти на сайте www. drupal. org.шишшишшшшшяшшяшияшшшшашшятНастрой тЩ%ттШШШтAnalytic 7.x-!„x-tlevTheme for commumnes, bioqs and online media provided by pixeJjeb zt,ri>.
import&m Nore: The right column is dzsab?«d fry default m adrmn sactw , as
sometimes the concern of admin sectton m wider sban central column, and the content
Is cur. You cm turn on/off rsgbifar left) coSumn for admin s«ct(o-rt ш theme
configuration.Настройки ' Отключить " Установить no умолчаниюSeven 7.0-beta3Проста* одноколоноччая. табличная, с изменяемой шириной тема для
администрирования.настройки : Откяюмить г Устамогшь по умолчаниюЛ/с. 8.5. Тема Analytic добавлена в список доступных темОдна из активных тем является темой по умолчанию — ее увидят анонимные поль¬
зователи и пользователи, которые не выбрали собственную тему. Перейдите по ссыл¬
ке Установить по умолчанию, чтобы сделать установленную тему темой, выбираемой
по умолчанию.8.3.4. Темы и ошибки в нихПерейдем на главную страницу, чтобы посмотреть, как выглядит наш сайт в новой
теме. Однако когда я это сделал, вместо красивой графической темы я увидел сообще¬
ние об ошибке:Parse error: syntax error, unexpected T_ENDIF in /var/www/sites/
4>all/themes/analytic/page.tpl.php on line 72Ничего страшного. Привыкайте. Я бы даже назвал эту ситуацию нормой для бес¬
платных тем. Всегда придется что-то доделывать. Вот для этого вам и понадобятся
Изменение темы (дизайна) сайта147базовые навыки использования РНР. А поскольку у вас их пока нет, будем действовать
интуитивно. Откройте файл page. tpl. php в любом текстовом редакторе (например,
в Блокноте) и найдите 72-ю строку. Как оказалось, разработчик темы перемудрил с
комментариями и тегами вставки PHP-кода. Можно было бы корректно исправить
ошибку, но, поскольку мы пока ничего не знаем о тегах вставки кода, придется просто
удалить эти самые теги и комментарии. Итак, удалите следующий код:<?/*php if ($search_box): ?><div id="search-box"><?php print render($search_box); ?></div><!— /search-box —><?php endif;*/?>Затем удалите подобный код между строками (чтобы вы два раза не обновляли
страничку, скажу, что там тоже есть ошибка):<!— admin edit
<!— admin edit—>—>Дадее загрузите файл page. tpl. php на сервер и обновите страничку. На рис. 8.6
показано, как выглядит сайт с новой темой.,........: гг О! -• * ' Xa*Msajamia<icioroJErffl{ssa.*a-ft«mirAHHB¥i|.ejacaлМт№$ЛШ)яях,'■*■ I■ .чий'-'И Рис. 8.6. На сайте установлена новая тема8.3.5. Выбираем другую темуПоработайте с темой и решите, что будет проще: выбрать другую тему или “до¬
вести до ума” эту. Как по мне, то намного проще выбрать другую тему, поскольку эта
не заслуживает нашего внимания. Зачем же мы тогда ее установили? Всю работу мы
проделали д ля получения некоторого опыта. Вы уже успешно можете установить лю¬
бую тему, сделать ее активной и знаете, что в темах встречаются ошибки. Работая над
книгой, я бы мог перебрать с десяток тем и выбрать ту, с которой все пройдет гладко.
148Гпава 8Но она могла бы вам не понравиться и вы бы выбрали другую тему, возможно, даже
эту. Однако в ней обнаружилась бы ошибкам вы бы не знали, что же нужно сделать,
чтобы заставить эту тему заработать.Поэтому выбираем любую другую тему. Если хочется, чтобы все прошло без оши¬
бок, рекомендую выбрать тему Nitobe (рис. 8.7) или Busy. Понятно, что я физически
не могу протестировать все темы, однако обе эти темы работали у меня без особых
нареканий. Потребовалось лишь внести кое-какие изменения в тему Busy.Рис. 8.7. Сайт, “одетый” в тему Nitobe8.3.6. Из чего состоит темаПрежде чем вносить изменения, нужно разобраться, из чего, собственно, состоит
каждая тема. Перейдите в каталог sites /all/themes. В этот каталог система уста¬
навливает все сторонние темы (т.е. те, которые установили вы). Перейдите в любой
подкаталог: каждый подкаталог в этом каталоге соответствует отдельной установлен¬
ной теме. Какой именно — понятно по названию подкаталога. В подкаталоге вы обя¬
зательно найдете файлы template. php, page. tpl. php, другие файлы с “двойным
расширением” . tpl. php, файлы изображений (обычно в каталоге images) и CSS-
файлы (обычно в каталоге css).Файл temp late, php вам потребуется редактировать нечасто, поскольку в нем
определяются служебные функции темы. В зависимости от темы, этот файл может
содержать всего одну-две функции или же быть довольно большим. Некоторые темы
поставляются с динамическим меню — тогда этот файл будет приличного размера
(равно, как и связанные с темой Javascript-сценарии).Файл page. tpl. php — это основной файл, задающий размещение элементов на
странице. Он же управляет и выводом элементов — от содержимого этого файла за¬
висит, например, будет ли отображаться вторичное меню или боковая панель. Если
в файле page. tpl. php не будет строки, отображающей тот или иной регион, тогда
Изменение темы (дизайна) сайта149он просто будет отсутствовать на экране. Что делать? Найти строку, отображающую
этот регион в подобном файле другой темы и скопировать ее в файл page. tpl. php
используемой вами темы.Другие файлы . tpl. php задают разметку других страниц, но они не обязательны.
Например, в некоторых темах есть файл node. tpl .php, определяющий, как будет
выглядеть дизайн при просмотре нода — статьи, записи блога и т.д.Если вам нужно изменить только цвета темы, а во всем остальном она вас устраи¬
вает, тогда вам следует отредактировать CSS-файлы темы. Главный CSS-файл темы
называется css/styles. css. Вот пример определения стиля hi:hi {font-size: 1.5em;
font-weight: normal;
color: #1D4C7F;}Данный стиль влияет на отображение тегов <Н1> (самый большой заголовок).
Свойство font-size задает размер шрифта, font-weight — ширину, a color — цвет.
Поскольку цвет обычно указывается в шестнадцатеричном виде, как понять, какое
значение нужно указать? Проще всего воспользоваться программой GIMP (www.
gimp. org) — это бесплатный аналог графического редактора Photoshop. Установите
ее — все равно она вам понадобится при работе с изображениями. Запустите про¬
грамму и на панели инструментов в ее окне отыщите два прямоугольника — щелчок
на них позволяет выбрать цвет переднего (или заднего) плана. Щелкните на любом
из прямоугольников и выберите в открывшемся окне Изменить цвет ... нужный вам
цвет. При этом в поле HTML-разметка будет выведено искомое шестнадцатеричное
значение (рис. 8.8).Рис. 8.8. Диалоговое окно выбора цвета в программе GIMPЕсли тема позволяет изменять цвета (а это позволяют не все темы), то вам даже не
придется редактировать файл стиля. Достаточно будет щелкнуть на кнопке Настрой¬
ка рядом с названием выбранной темы в разделе Внешний вид (рис. 8.9). Некоторые
темы позволяю выбрать также расположение элементов — меню, боковой панели
(sidebar).
150Гпава 8ЦВЕТОВАЯ СХЕМА
Установки v г ■ ▼Hr rf<ler Sidebar(Мегш AcsiveHeader Con rent
AreaHeader Featured
Block
Copy Text
featured BlockPuc. 8.9. Страница настройки темыНекоторые темы не позволяют вывести слоган сайта, взяв его из базы данных.
Обычно такие темы делают ленивые разработчики — им проще записать слоган в
файл page. tpl. php. С одной стороны, им это действительно проще, а с другой — вам
придется редактировать файл page. tpl. php. Вот соответствующий фрагмент файла
раде. tpl. php из темы Busy:<div id="header-bottom"><div id="header-bottom-left">&nbsp;</div><div id="header-bottom-right"><div class="title-area"><h2>This is the Ultimate Drupal Corporate Theme "Busy"</h2><a class="read-more" href=".">More information</a></div></div><div class="clearfix"x/div></div></div> ;Ясно, что строки "This is the Ultimate Drupal Corporate Theme "Busy""и
"More information" вам придется заменить своими. На месте первой строки обыч¬
но выводится слоган сайта. На месте второй строки может быть что угодно. Чтобы
каждый раз при изменении слогана не редактировать файл page. tpl .php, можно за¬
менить первую строку ("This is...") PHP-кодом, выводящим слоган сайта:<?php print $site_name_and_slogan ?>
Изменение темы (дизайна) сайта151Также мною было замечено, что некоторые темы не выводят боковую панель, на
которой обычно отображаются поле поиска и меню навигации. В Drupal может быть
две боковых панели. В 6-й версии они назывались right и left (правая и левая),
в Drupal 7 они называются first и second (первая и вторая). Вывести эти боковые
панели можно с помощью следующих строк кода:<?php if ($paget"sidebar_first"]) echo render($page["sidebar_^first"]); ?><?php if ($page["sidebar_second"]) echo render($page["sidebar_^second"]); ?>Данный код нужно вставить в файл page. tpl .php — в ту позицию, в которой
должны отображаться боковые панели. А вот чтобы понять, куда именно нужно вста¬
вить эти строки, вам необходимо знать основы языка HTML — чтобы вы могли при¬
мерно представлять, что и где находится.А теперь о самом интересном. Наверное, вы уже перепробовали несколько тем,
скачанных с сайта www. drupal. org, и не понимаете, куда подевалось меню навига¬
ции и поле поиска на сайте? Вы думаете, что эта тема “бракованная” и устанавливаете
следующую. Но в следующей ситуация повторяется. Например, я установил тему Busy,
по умолчанию она выглядит, как показано на рис. 8.10. Вы видите вышеупомянутые
строки This is the Ultimate Drupal Corporate Theme "Busy" и More information, глав¬
ное меню сайта (элементы Home и О проекте), список нодов, но место справа явно
пустует. Правильно, здесь должна быть боковая панель, но ее почему-то нет. Однако
причина явно не в теме, поскольку в файле page. tpl. php есть весь код, необходи¬
мый для отображения боковой панели. В чем же дело?Вам нравится дизайн сайта?[roaocofm]Псдеей^е»* Дэбэеи-г* мглиенгъртМоя перваязап/сь Рис. 8.10. Тема Busy отображается без боковой панели
152Гпава 88.3.7. Блоки и регионыНастало время познакомиться с блоками. Блоки позволяют выводить нужную ин¬
формацию в различных регионах страницы темы. Поскольку не у всех тем есть оди¬
наковые регионы (тут все зависит от фантазии разработчика темы), то размещение
блоков на странице нужно выполнять для каждой включенной темы — это как бы
обязательный этап настройки любой темы. Вот примеры блоков:• Навигация — отображает меню Navigation;• Форма поиска — отображает форму поиска на сайте;• Сейчас на сайте — блок показывает список пользователей, в данный момент
находящихся на сайте.Со списком всех блоков вы можете ознакомиться на странице Структура>=> Блоки.
А вот примеры регионов:• Header — заголовок страницы;• Footer — нижняя часть страницы;• Sidebar — боковая панель.Следовательно, если нам нужно, чтобы блок Навигация отображался в боковой
панели, его нужно связать с ней. Перейдите в раздел панели управления Структура^
Блоки (рис. 8.11). Здесь сначала отображается список регионов (областей): Header,
Content top и т.д. После каждого региона отображается список блоков, содержащих¬
ся в нем. Для темы Busy у нас будет семь пустых областей — ни один бЛок не добавлен
ни в одну из них.Might- басиоя s ? 7ой- областиНат 6лете в зHer блоков & .?И-ет Smios в зтоЯ егблаегл-- Her - i-j;- н*г • а;:Нат: в• нсГ ВРис. 8.11. Блоки и регионы окна сайта
Изменение темы (дизайна) сайта153Добавим блок Навигация в область Sidebar first. Щелкните на ссылке настро¬
ить (рис. 8.12) напротив блока Навигация. Далее можно будет выбрать регионы, в ко¬
торых должен отображаться этот блок для каждой темы. Напомню, что список ре¬
гионов в конкретной теме зависит только от разработчика темы. В одной теме может
быть регион А, а в другой теме этого региона может и не быть, зато будут регионы
В и С, которых нет у первой темы. Введите заголовок блока и установите регионы для
каждой темы, в которых должен отображаться этот блок. Поскольку меня в данный
момент интересует только тема Busy, то я выбрал для нее регион Sidebar first (пер¬
вая боковая панель), а все остальные темы оставил как есть.ришмрдиБлок "Навигация" оЗаголовок блока• НавигацияЙ5•«£'>*??: ЪЛ'УкА. p.PA ЗЫЙОЙЛ . ЯСЛГЙЬ;s Ж У Ь КТ£viДХр?--CJ'- )-;«JS-S-bVT.с..стз*-г..те что. полйРЕГИОНАЛЬНЫЕ НАСТРОЙКИУкажи! е к темах w регионах дольем отображаться этот блок.Susy (default theme): ■ Sidebar first [gFixture ReioatfetS- Her - [3fjr. Seven {a./^tutuxidin}fi Фите)*Лис. <£ 72. Назначение регионов для темыВнизу страницы вы можете определить настройки видимости блока (рис. 8.13).• Страницы — здесь можно указать страницы, на которых будет виден данный
блок.• Типы содержимого — здесь можно определить типы содержимого (статья,
запись в блоге, тема форума и т.д.), при отображении которых будет показан
блок.• Роли — здесь можно задать роли пользователей, которым будет доступен дан¬
ный блок.• Пользователи — параметры видимости блока для пользователей.
154Гпава 8Настройки видимости' Страницы^ Тшш содержимого■> Лю».': ■ .': Наагрлнячан. Пштзсша'геай■ >"V гПок^эьсьагь блок «а определенных г границах<щ, бее cr^^i-./.uw. кроме перечисленных
•;f':i Тсяько- на, леречислемиыл страницах . -А/с. 8.13. Параметры видимости блокаПосле установки всех требуемых параметров щелкните на кнопке Сохранить блок.
На рис. 8.14 представлен результат нашего творчества — блок Навигация появился в
боковой панели темы Busy.
Изменение темы (дизайна) сайта155Аналогично можно добавить форму поиска, блок Сейчас на сайте и другие. Пом¬
ните, что для отображения RSS-лент нужно добавить блок Последние новости для
<название ленты>, причем для каждой RSS-ленты создается отдельный блок.■Вам нравится дизайн сайта?в HST■Г; ДаМоя первая записьШя первая запись з 5/к?г-? Ошрз!Установка статического IP-адреса для сетевого интерфейса в Ubuntff
9.04/Denfc 'к.п->;саг:;-н-0й есги е & «ту)«fgap нзстг^йкй -/jr^vrr-сфш iOHCF ~ Hv£t Cc?v?ifh;r:M;or. Pr^tocc; -- гф-с.йкар.настр-гйки #jna>. Boi чту нуда j для по^ег^нсй ал и- jys по^яй-^тьКто онлайнСздч-зс на сайге 1 гА/с. 8.15. Блоки Форма поиска, Навигация, Сейчас на сайте (тема Busy)Порядок отображения блоков в области задать просто: перетащите мышью значок* возле названия блока вверх или вниз, вместе с ним переместится и блок (рис. 8.16).
После каждой манипуляции с блоками не забывайте щелкать на кнопке Сохранить
блоки для сохранения выполненных изменений.: Sidebar first’ Форма поиска’: Sidebar first \*)«««иг.Навигация: Skieosi fifst. jvj;: 4* Сейчас на сайтеS'defcar firstjrj'■■ifriyCQSlbРис. 8.16. Изменение порядка отображения блоковТеперь попробуем изменить цвета темы. Это можно сделать как с помощью панели
управления (правда, в этом случае можно изменять цвета и параметры не всех эле¬
ментов), так и посредством редактирования файла sites/all/themes/busy/css/
style. css. При редактировании любых файлов темы не забывайте закачивать их от¬
редактированные варианты обратно на сервер. А то часто бывает так — файл скачан,
156Гпава 8отредактирован, сохранен. Обновляется страница сайта в браузере, а в ней никаких
изменений нет! И это не удивительно — просто вы забыли поместить измененный
файл обратно на сервер.Итак, нам осталось только изменить название первого пункта главного меню.
Перейдите в раздел Структура^Меню^Мат Мепи^Список ссылок (рис. 8.17) и от¬
редактируйте название элемента Ноте.8.4. Файл page. tpl .php — подробноНекоторые пользователи предпочитают строить свою тему на базе стандартной
темы Drupal, а поэтому будет не лишним подробно разобрать содержимое файла
page. tpl .php темы Bartik, которая используется в Drupal по умолчанию. Файлы этой
темы хранятся в каталоге themes/bartik. Зная, что означает та или иная строчка
файла раде. tpl. php, вы сможете построить свою тему даже без знания языка РНР,
обладая только лишь навыками HTML-верстки. Последнее потребуется обязатель¬
но — ведь вам придется изменять HTML-код и стили CSS, да еще и собственные кар¬
тинки создавать.Поскольку содержимое файла page . tpl. php является PHP-сценарием, полезно
будет сказать сначала несколько вводных слов о PHP-коде. Можно сказать, что РНР-
сценарий представляет собой обычный HTML-файл, но со вставками PHP-кода. Вот
пример некоторого РНР-сценария:<hl>3amnoBoic l</h2><?php PHP-код ?><Ь2>Заголовок 2</h2>Данный файл выводит два заголовка и результат выполнения PHP-кода между
ними. В примере PHP-код внедряется HTML-файл с помощью конструкции <?php
РНР-код ?>.Чтобы сэкономить время, некоторые программисты используют сокращенную
версию этой конструкции (слово php опускается):<? РНР-код ?>
Изменение темы (дизайна) сайта157Комментарии в РНР могут быть однострочными и многострочными. Вот пример
таких комментариев:// однострочный комментарий/* мно'гострочныйкомментарий */Комментарии в языке HTML выглядят иначе:<!— Это HTML-комментарий —>Имя переменной в РНР начинается со знака доллара, строковые константы за¬
ключаются в двойные или одинарные кавычки. Для вывода чего-либо в браузер ис¬
пользуется оператор print:print $title; // вывод значения переменной titleprint "title" // вывод слова "title"print 'header1 // вывод слова 'header'Теперь полученных вами знаний будет достаточно, чтобы ориентироваться в со¬
держимом файла page. tpl. php, которое представлено в листинге 8.1.Листинг 8.1. Файл page. tpl. php темы Bartik <?php// $Id: page.tpl.php,v 1.9 2010/11/07 21:48:56 dries Exp $j -k -k* @file* Реализация темы Bartik для отображения одной страницы Drupal
■к* HTML-теги doctype, html, head и body вынесены за пределы* этого файла. Если вам нужно их отредактировать вы их найдете* в шаблоне html.tpl.php, который обычно находится в каталоге* modules/system
■к* Доступные переменные:
к* Переменные общего назначения:* — $base_path: базовый путь (URL) Drupal-инсталляции. Очень* часто он сводится к /* — $directory: Каталог, в котором находится шаблон то есть* modules/system или themes/bartik.* — $is_front: TRUE, если загруженная страница является главной.* — $logged_in: TRUE, если пользователь зарегистрирован и вошел* на сайт.* — $is_admin: TRUE, если вошедший пользователь 'является* администратором.
к* Идентификация сайта:* — $front_page: URL главной страницы. Используйте это вместо* $basej?ath, когда создаете ссылки на главную страницу. Эта* переменная содержит доменное имя.
158Гпава 8* — $logo: путь к изображению логотипа, определенный в* настройках темы.* - $site_name: название сайта, переменная не содержит значения,* если она отключена в настройках темы.* — $site_slogan: слоган сайта, если отображение слогана* выключено в настройках темы, то эта переменна ничего не* содержит.* — $hide_site_name: TRUE, если в настройках темы выключено* отображение названия сайта. При этом название сайта все еще* выводится в HTML-код страницы, но поскольку используется* класс "element-invisible", то визуально оно не отображается.* — $hide_site_slogan: TRUE, если в настройках темы выключено* отображение слогана, далее то же замечание, что и для* переменной $hide_site_name.
it* Навигация:* — $main_menu (array): массив, содержащий ссылки главного меню* (Main menu) сайта, если они настроены. По умолчанию в* главном меню есть только одна ссылка — Ноте.* - $secondary_menu (array): массив, содержащий ссылки* вторичного меню(Secondary menu) сайта, если они настроены.* - $breadcrumb: "хлебные крошки" (breadcrumb) для текущей* страницы.** Содержимое страницы (в порядке использования в файле* page.tpl.php):* — $title_prefix (array): массив, содержащий дополнительный* вывод модулей, относящийся к заголовку, содержимое этого* массива появляется до заголовка.* — $title: заголовок страницы, обычная строка, можно* использовать в HTML-тегах.* — $title_suffix (array): содержимое этого массива появляется* после заголовка.* - $messages: сообщения для статуса и ошибок (в формате HTML)* — $tabs (array): обеспечивает показ вкладок просмотра и* редактирования при отображения нода.* - $action_links (array): действия, характерные для страницы.* — $feed_icons: последовательность всех feed-картинок текущей* страницы.* — $node: объект нода с автоматически загруженным нодом.
it* Регионы (области):* — $page['header']: содержит элементы заголовка.* - $page['featured']: регион функций.* — $раде['highlighted']: регион подсветки.* — $page['help']: регион справки, используется для панели* управления, а не для пользовательского интерфейса.* — $page['content']: основной контент текущей страницы.* - $раде[1sidebar_first']: элементы первой боковой панели.* — $раде['triptych_first']: элементы первого триптиха.* — $раде['triptych_middle']: элементы среднего триптиха.* — $page['triptych_last']: элементы последнего триптиха.
Изменение темы (дизайна) сайта159* — $page['footer_firstcolumn']: элементы первой колонки футера* (нижней части страницы).* — $раде['footer_secondcolumn']: элементы второй колонки* футера.* — $раде[1footer_thirdcolumn']: элементы третьей колонки* футера.* — $раде['footer_fourthcolumn']: элементы четвертой колонки* футера.* — $раде['footer']: элементы всего футера.** 0см'. template_preprocess ()* 0см. template_jpreprocess_page()* 0см. template_process()* 0см. bartik__process__page ()*/?><div id="page-wrapper"xdiv id="page"><!— Выводим вторичное меню, если оно определено в Струтура, Меню —><div id="header" class="<?php print $secondary_mei)u ? 'with-sec
4>ondary-menu': 'without-secondary-menu'; ?>"><div class="section
^ clearfix"><!— Если в настройках темы включен показ логотипа, выводим его —><?php if ($logo): ?><а href="<?php print $front_page; ?>" title="<?php print t
4> ('Home'); ?>" rel="home" id="logo"> ‘<img src="<?php print $logo; ?>" alt="<?php print t('4>Home'); ?>" /></a><?php endif; ?><!— Если включен вывод названия сайта или слогана сайта —><?php if ($site_name || $site_slogan): ?><div id="name-and-slogan"<?php if ($hide_site_name && $hi
tl>de_site_slogan) { print ' class="element-invisible"'; } ?»<!— Если включено отображение имени сайта —><?php if ($site_name): ?><?php if ($title): ?><div id="site-name"<?php if ($hide_site_name) { print
4> ' class="element-invisible"'; } ?»<strong><a href="<?php print $front_page; ?>" title="<?4>php print t('Home'); ?>" rel="home"><span><?php print $site_name; ?></
span></a></strong></div><?php else: /* Используем hi, если заголовок контента
Ч> пуст */ ?><hl id="site-name"<?php if ($hide_site_name) { print
1 class="element-invisible"'; } ?»
160Гпава 8<а href="<?php print $front_page; ?>" title="<?php
print t('Home'); ?>" rel="home"><spanx?php print $site_name;
?></spanx/a></hl><?php endif; ?><?php endif; ?><!— Если включено отображение слогана сайта —><?php if ($site_slogan): ?><div id="site-slogan"<?php if ($hide_site_slogan) {
print ' class="element-invisible"'; } ?»<?php print $site_slogan; ?></div><?php endif; ?></div> <!— /#обработка имени/слогана завершена —><?php endif; ?><!— Рендеринг заголовка страницы
Функция render() относится к API Drupal, о ней можно прочитать
по адресу:http://api.drupal.org/api/drupal/includes—common.inc/function/
^drupal_render/5<?php print render($page['header']); ?><!— Отображаем главное меню (Main Menu) —><?php if ($main_menu): ?><div id="main-menu" class="navigation"><?php print theme('links system_main_menu', array('links' => $main_menu,'attributes' => array('id' => 'main-menu-links','class' => array('links', 'clearfix'),),'heading' => array('text' => t('Main menu'),'level' => 'h2','class' => array('element-invisible'),),)); ?></div> <!— /#эавершение обработки главного меню —><?php endif; ?><!— Отображаем вторичное меню (Secondary Menu) —><?php if ($secondary_menu): ?><div id="secondary-menu" class="navigation"><?php print theme('links system_secondary_menu', array('links' => $secondary_menu,'attributes' => array('id' => 'secondary-menu-links','class' => array('links', 'inline', 'clearfix'),
Изменение темы (дизайна) сайта161),'heading' => array('text' => t('Secondary menu'),'level' => 'h2','class' => array('element-invisible'),),)); ?></div> <!— /# завершение обработки вторичного меню —><?php endif; ?></div></div> <!— завершили обработку заголовка —><!— Выводим сообщения об ошибках или сообщения статуса.Если все нормально работает, то эти сообщения не выводятся,
поэтому в 99% случаев следующий код ничего не выведет. —><?php if ($messages): ?><div id="messages"xdiv class="section clearfix"><?php print $messages; ?></div></div> <!— завершение обработки сообщений —><?php endif; ?><!— обработка региона feautered —><?php if ($page['featured']): ?><div id="featured"xdiv class="section clearfix"><?php print render($page['featured']); ?></div></div> <!— завершение обработки featured —><?php endif; ?><!— просто вывод HTML —><div id="main-wrapper" class="clearfix"xdiv id="main" class=
V'clearfix"><!— Вывод "хлебных крошек" — дополнительной навигации —><?php if ($breadcrumb): ?><div id="breadcrumb"x?php print $breadcrumb; ?x/div>
<?php endif; ?><!— Вывод первой боковой панели
Вывод самой панели обеспечивает строка:print render($page['sidebar_first']);—><?php if ($page['sidebar_first']): ?><div id="sidebar-first" class="column sidebar"xdiv class=
*l>"section"><?php print render($page['sidebar_first']); ?>
</divx/div> <!— завершение обработки боковой панели —><?php endif; ?><div id="content" class="column"xdiv class="section"><!— обработка региона highlighted —><?php if ($page [ 'highlighted' ]) : ?xdiv id="highlighted">
4><?php print render ($page ['highlighted']); ?x/divx?php endif;
162Diaea8ч> ?><a id="main-content"></a> - ;<?php print render($title_prefix); ?>.<?php if ($title) : ?><!— выводим заголовок —><hl class="tit'le" id="page-title"><?php print $title; ?></hl><?php endif; ?><?php print render($title_suffix); ?><!— выводим вкладки для нода —><?php if ($tabs): ?><div class="tabs"><?php print render($tabs); ?></div><?php endif; ?><!— отображения региона справки —><?php print render($page[’help']); ?><!— показываем ссыпки действий —><?php if ($action_links): ?><ul class="action-links"><?php print render($action_links); ?></ul><?php endif; ?><?php print render($paget1 content']); ?><?php print $feed_icons; ?></div></div> <!— вывод контента завершен —><!— вывод второй боковой панели —><?php if ($page['sidebar_second']): ?><div id="sidebar-second" class="column sidebar"xdiv class
4>="section"><?php print render($page['sidebar_second']); ?>
</div></div><!— обработка второй боковой панели завершена —><?php endif; ?></div></div> <!— /#main, /#main-wrapper 1—><!— вывод триптиха —><?php if ($page['triptych_first'] II $page['triptych_middle']
4> || $page['triptych_last']): ?><div id="triptych-wrapper"xdiv id="triptych" class="clear
4>fix"><?php print render($page[1triptych_first']); ?><?php print render($page[1triptych_middle']); ?><?php print render($page['triptych_last']); ’?></divx/div> <!— конец обработки триптиха --><?php endif; ?><div id="footer-wrapper"xdiv class="section">
Изменение темы (дизайна) сайта163<!— вывод нижней части страницы (footer),состоящей из четырех колонок, если они определены, в противном
случае выводится единый код для нижней страницы — см. ниже —><?php if ($page[1footer_firstcolumn1] || $page['footer_se
4>condcolumn'] || $page['footer_thirdcolumn'] || $page['footer
4>_fourthcolumn' ]) : ?><div id="footer-columns" class="clearfix"><?php print render($page[1footer_firstcolumn']); ?>
<?php print render($page['footer_secondcolumn']); ?>
<?php print render($page[1footer_thirdcolumn1]); ?>
<?php print render($page[1footer_fourthcolumn']); ?>
</div> <!— /#footer-columns --><?php endif; ?><!— вывод нижней части страницы (footer) —><?php if ($page['footer1]): ?><div id="footer" class="clearfix"><?php print render($page['footer']); ?></div> <!— /#конец вывода футера —><?php endif; ?></div></div> <!— /.section, /#footer-wrapper —></div></div> <!— /#page, /#page-wrapper —><!— BCE —>С файлом template. php из темы Bartik тоже можно ознакомиться. Он совсем не¬
большой — всего 4 Кбайт. Когда будете создавать собственную тему с нуля, вам при¬
годятся вот эти операторы:drupal_add_css(path_to_theme() . '/css/ie.css', array('group'=> CSS_THEME, 'browsers' => array('IE' => 'lte IE 7', ’!IE *=> FALSE), 'preprocess' => FALSE));drupal_add_css(path_to_theme() . '/css/ie6.css', array('group'=> CSS_THEME, 'browsers’ => array('IE' => 'IE 6', ’!IE' => FA
4>LSE), 'preprocess' => FALSE));Два приведенных выше оператора регистрируют два CSS-файла. Обратите внима¬
ние, что первый CSS-файл регистрируется для браузера IE 7, а второй — для IE 6, что
позволяет добиться корректного отображения темы в Internet Explorer разных версий.
Хотя одних этих операторов мало — не забудьте про корректное содержимое самих
CSS-файлов.8.5. Преобразование старых тем в новый форматСейчас найти тему для Drupal 6 намного проще, чем для Drupal 7. А может быть и
такое, что у вас уже установлена CMS Drupal 6, вы потратили кучу времени и нервов
(а может, и денег) на создание уникальной темы, а потом перешли на Drupal 7. Теперь
вам нужно изменить вашу тему так, чтобы она работала и с новой версией Drupal.
164Гпава 88.5.1. Заголовок DOCTYPEНачнем преобразовывать тему для Drupal 6 в новый формат. Начать нужно с за¬
головка HTML. Ранее он выглядел так:<?php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:4>//www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print
$language->language ?>" lang="<?php print $language->language
^ ?>"dir="<?php print $language->dir ?>"><head>?>В Drupal 7 его нужно заменить следующим кодом:<?php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://
www.w3.org/MarkUp/DTD/xhtml-rdfa-l.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print
$language->language ?>" dir="<?php print $language->dir ?>"<?php print $rdf_namespaces ?»<head profile="<?php print $grddl__profile ?>">?>Такое изменение нужно сделать для поддержки RDF.8.5.2. Изменения в . info-файлеС каждой темой поставляется . info-файл, соответствующий названию темы, на¬
пример, для темы thema в архиве с темой должен быть файл thema .info. Не забудьте
в этом файле указать версию Drupal:core = 7.хРанее в этом файле можно было не указывать основной CSS-файл style. css —
Drupal находил его автоматически. Сейчас все CSS-файлы нужно указывать явно:'stylesheets[all][] = css/layout.css
stylesheets[all][] = css/style.css
stylesheets[all][] - css/colors.css
stylesheets[print][] = css/print.cssTo же самое касается и JavaScript — все скрипты должны быть явно указаны в
.info-файле:scripts[] = jquery.js
scripts[] = js.js8.5.3. Небольшие переименования — изменения в регионахТо, что раньше называлось Primary/Secondary Links, в новой версии называ¬
ется Main Menu и Secondary меню. Левая (left) и правая (right) боковые панели
(sidebar) теперь называются первой и второй боковой панелью (Sidebar first
и S idebar second) без привязки к левой или правой стороне. Просто две боковых
Изменение темы (дизайна) сайта165панели. Класс clear-block переименован в clearfix. Все это было сказано здесь
для того, чтобы у вас не появлялось вопросов, что такое первая боковая панель или
для чего Используется класс clearfix.Ранее боковые панели выводились так:<?php if (!empty($left)): ?><div id="sidebar-left" class="column sidebar"><?php print $left; ?></div> <!— /sidebar-left —><?php endif; ?><?php if (!empty($right)): ?><div id="sidebar-right" class="column sidebar"><?php print $right; ?></div> <!— /sidebar-right —><?php endif; ?>В новой версии они выводятся так:<?php if ($sidebar_first): ?><div id="sidebar-first" class="column sidebar"xdiv
class="section region"><?php print $sidebar_first; ?></div></div> <!— /.section, /#sidebar-first —><?php endif; ?><?php if ($sidebar_second): ?><div id="sidebar-second" class="column sidebar"xdiv
class="section region"><?php print $sidebar_second; ?></divx/div> <!— /.section, /#sidebar-second —><?php endif; ?>В Drupal 6 было пять стандартных регионов: left, right, content, header,
footer. В седьмой версии к ним добавили регион help, который используется для
вывода подсказок преимущественно в панели управления (так как в пользователь¬
ском интерфейсе они не нужны). Раньше вывод подсказок осуществлялся сверху
контента, а теперь для справки у вас появился целый регион. Вместо использования
переменной $help теперь нужно использовать регион $help. Однако разработчики
тем для интерфейса пользователя никаких изменений не заметят, так как переменную
$help они никогда раньше не использовали. Зато они заметят исчезновение пере¬
менных $mission, $footer_message и $content. Теперь вместо них используются
регионы highlight, footer, content.Внутри файла block, tpl. php объект $block->content переименован в
$content.8.5.4. ТаксономияВ Drupal 6; мы выводили термины таксономии так:<?php i£ ($taxonomy): ?><div class="terms"> •' ■ '■■' <?php print, $terms ?>>■".
166Гпава 8</div><?php endif;?>В новой версии их нужно выводить так:<?php if ($terms): ?><div class="terms"><?php print $terms ?></div><?php endif;?>8.5.5. Изменения в CSSПривычные всем CSS ID тоже были изменены. Сведения об изменениях будет
проще продемонстрировать, поместив их в табл. 8.1.Таблица 8.1. Изменения CSS IDDrupal 6Drupal 7Комментарийblock-blog-0block-blog-recentПоследние записи блогаblock-book-0block-book-navigationНавигация в подшивкахblock-comment-0block-comment-recentПоследние комментарииblock-forum-0block-forum-activeАктивные темы форумаblock-forum-lblock-forum-newНовые темы форумаblock-locale-0block-locale-language-switcherПереключатель языкаblock-node-0block-node-syndicateСиндикацияblock-statistics-0block-statistics-popularПопулярные записиblock-search-0block-search-formПоискblock-profile-0block-profile-author-informationИнформация об автореblock-user-0block-user-loginБлок авторизацииblock-user-1block-system-navigationБлок навигацииblock-user-2block-user-newНовые пользователи на сайтеblock-user-3block-user-onlineСейчас на сайтеpictureuser-pictureАватар пользователя.sidebar-left.sidebar-firstПервая боковая панель.sidebar-right.sidebar-secondВторая боковая панельТакже были добавлены два класса:• . element-hidden — используется для сокрытия элемента от всех пользователей;• . element-invisible — используется для сокрытия элемента визуально.В чем разница? Проще будет привести CSS-код, чем объяснит^:.element-hidden {
display: none;}.element-invisible {
height: 0;
overflow: hidden;
position: absolute;
Изменение темы (дизайна) сайта1678.5.6. Генерирование HTML-атрибутов через переменнуюТеперь можно использовать переменные $attributes, $title_attributes и
$content_attributes (модуль RDF и некоторые другие модули выводят важную
информацию через эти переменные):<div id="..." class="..."<?php print $attributes; ?»<h2<?php print $title_attributes; ?»...</h2><div class="content"<?php print $content_attributes; ?»...</div></div>С практической точки зрения толку в этом изменении мало, но вы должны знать,
что такая возможность существует. :8.5.7. Имена функцийИмена функций в файле template. php теперь должны начинаться с имени темы.
Например:function dentheme_preprocess_menu_link(&$variables) {
if (substr($variables['element']['#href'], 0, 5) == 'http:' ||
substr($variables['element']['#href'], 0, 6) == 'https:') {$variables['element']['#localized_options']['attributes'][V target'] = '_blank';}}Кстати, данная функция заставляет открываться в новом окне все ссылки, начи¬
нающиеся с http или https.У всех функций теперь есть универсальный аргумент $ variables, вот пример его ис¬
пользования:function theme_table($variables) {$header = $variables['header'];$rows = $variables [.' rows' ];$attributes = $variables['attributes'];$caption = $variables['caption'];$colgroups = $variables['colgroups'];$sticky = $variables['sticky'];}8.5.8. Файл box. tpl.php больше не используетсяПо правде говоря, этот файл и ранее не использовался, но теперь он уже не ис¬
пользуется явно. Выводимый ранее через него контент теперь имеет собственные
функции — theme_search_results_listing () и theme_comment_form_box ().8.5.9. Функция render ()При рассмотрении примера файла page. tpl. php мы познакомились с функцией
render (), которая может использоваться для рендеринга абсолютно всего — меню,
168Гпава 8контента, ссылок, комментариев. Появилась и вторая замечательная функция —
hide (), позволяющая скрыть некоторые элементы контента.Например, если нам при выводе контента не нужно выводить ссылки и коммента¬
рии, используем следующий код:<div class="content"><?phphide($content[1 comments']);
hide($content['links1]);
print render($content);?></div>Когда возникнет необходимость вывести ссылки и комментарии отдельно, можно
использовать функцию render () :<?php print render($content['comments']); ?><?php print render($content['links']); ?>8.5.10. jQueryUI (1.7)В ядро Drupal 7 была добавлена JavaScript-библиотека jQuery UI (1.7). Теперь
для добавления CSS-файлов и скриптов на языке JavaScript используются функцииdrupal_add_j s() и drupal_add_css().8.5.11. Переменной $closure больше нетПеременная $closure использовалась для вывода в конце тега <body>, настроить
вывод можно было через функцию theme_f ooter ():<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtmll/DTD/xhtmll-strict.dtd"><body class="<?php print $body_classes; ?>"><?php print $closure; ?></body></html>В Drupal 7 теперь есть регион page_bottom, в котором и выводится переменная
$ closure, вам не нужно использовать ее явно. Теперь аналогичный код будет вы¬
глядеть так:<?php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN""http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><body class="<?php print $classes; ?>"><?php print $page_top; ?><?php print $page_bottom; ?> ■</body></html>?>
Изменение темы (дизайна) сайта169Кроме page_bottom, появился еще и регион page top. При использовании ре¬
гионов в файле page. tpl. php важно не забыть описать их в . info-файле темы:regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottomВ листинге 8.2 приводится полный код . info-файла темы Bartik.Листинг 8.2. Файл bartik. info; $Id: bartik.info,v 1.5 2010/11/07 00:27:20 dries Exp $; Название темыname = Bartik
; Описание темыdescription = A flexible, recolorable theme with many regions.; Пакетpackage = Core
; Версия темы
version = VERSION
; Версия ядраcore = 7.x; Описываем CSS-файлыstylesheets[all][] = css/layout.css
stylesheets[all][] = css/style.css
stylesheets[all][] = css/colors.css
stylesheets[print][] = css/print.css; Описываем регионыregions[header] = Header
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
regions[highlighted] = Highlightedregions[featured] = Featured
regions[content] = Content
regions[sidebar_first] = Sidebar first
regions[sidebar_second] = Sidebar secondregions[triptych_first] = Triptych first
regions[triptych_middle] = Triptych middle
regions[triptych_last] = Triptych lastregions[footer_firstcolumn] = Footer first column
regions[footer_secondcolumn] = Footer second column
regions[footer_thirdcolumn] = Footer third column
regions[footer_fourthcolumn] = Footer fourth column
regions[footer] = Footer
170Гпава 8settings[shortcut_module_link] = 0; Информация, добавленная сайтом drupal.orgversion = "7.0-beta3"
project = "drupal"
datestamp = "1289694732"8.5.12. Новая функция theme_llnk()Функция theme_link () упрощает переопределение ссылок. Ранее для этого ис¬
пользовалась функция hook_preprocess_link () и код был довольно громоздким.
Вот пример такого кода:<?phpfunction firsttheme_preprocess_link(&$variables) {
if (strpos($variables['path']/ ':1) !== FALSE) {$variables['options']t'attributes']t1 class'][] = 'link-ext
Vernal';$variables[1 options']['attributes’]t'class'][] = 'link-' .4> parse_url($variables[’path1], PHP_URL_SCHEME);}else {$variables [' options1 ] [ '.attributes' ] t' class1 ] [ ] = ' link-inter
4>nal';if (empty($variables['path']) || $variables['path'] == '<^front>') {$variables['options']['attributes']['class'][] = 'link-
4>front';}else {$class = 'link-path';
foreach (explode('/', $variables['path']) as $path_part) {$class .= . $path__part;$variables['options']['attributes']['class'][] = $class;}}}}?>С новой функцией код будет более компактный:function firsttheme_link($variables) {
return '<span class="link-wrapper"><ahref="' . check_plain(url ($path, $options)) . ,drupal_ ,^attributes($options['attributes1]) .'xspan class="link-content-wrapper">' .($options ['html'] ? $text : checkjplain($text)) . '</spanx/a>^/spanV;}
Изменение темы (дизайна) сайта171Остальные нововведения менее значительны. Надеюсь, приведенной информации
достаточно, чтобы конвертировать тему в формат Drupal 7. Почему в этой книге не
было приведено руководство по созданию темы с нуля? Да потому что для начинаю¬
щих пользователей оно не нужно — гораздо проще (учитывая умения и навыки на¬
чинающих пользователей) скачать какую-то тему и слегка модифицировать ее. А для
опытных пользователей такое руководство тоже неактуально. Опытные пользователи
Drupal уже работали с предыдущими версиями, поэтому им больше интересно, как
преобразовать старые темы в новый формат.Напоследок посоветую вам браузер Firefox с расширением Firebug (http://
getfirebug.com/), что существенно облегчает исследование уже готовой темы
оформления — расширение позволяет “на лету” просматривать исходный код стра¬
ницы, подключаемые CSS-файлы и скрипты JavaScript (рис. 8.18). Включить рас¬
ширение Firebug в браузере Firefox после его установки можно, выбрав команду
Инструменты^ Firebug^ Открыть Firebug. Также просмотрите содержимое меню
Инструменты^ Web Developer — в нем вы найдете много полезных команд. .. i //i; J 5 v-й :-J, ;V'; '' ч ,'/'5?; ;: ;;x
. .. r~ .......... .......Puc. 8.18. Браузер Firefox с расширением FirebugВ следующей главе мы поговорим об обслуживании Drupal-сайта: мы разберемся,
как создать резервную копию базы данных и всего сайта, как оптимизировать табли¬
цы Drupal, как улучшить безопасность, восстановить пароль администратора и пере¬
нести сайт на другой хостинг.
ГЛАВА 9Обслуживание Drupal-сайта9.1. Резервная копия базы данныхРезервная копия базы данных — залог вашего спокойствия. Может случиться все
что угодно: вы можете нечаянно удалить материал, может выйти из строя жесткий
диск (на сервере хостера установлены такие же жесткие диски, как и у всех, и никто
не застрахован от заводского брака), ваш сайт могут взломать и удалить весь контент.
Самое важное, что есть на вашем сайте, — это база данных, т.е. таблицы с контентом,
учетными записями пользователей, параметрами настройки сайта. Переустановить
Drupal — дело нескольких минут, особенно когда уже знаешь, что делаешь. А восста¬
навливать содержимое можно очень долго: свой сайт вы создавали не один месяц.Резервную копию базы данных можно создать несколькими способами.• Средствами панели управления хостингом.• С помощью программы phpMyAdmin.• Путем копирования файлов базы данных (этот вариант возможен только на ло¬
кальном сервере).9.1.1. Использование DirectAdmin для
создания резервной копииРассмотрим первый способ. В этой книге мы рассматриваем панель управления
DirectAdmin. Если у вас на хостинге установлена другая панель управления, обра¬
титесь к соответствующей документации. Зайдите в панель управления и в главном
меню выберите команду Управление MySQL (рис. 9.1).Для загрузки резервной копии базы данных перейдите по ссылке Download, рас¬
положенной в строке с названием этой базы данных (рис. 9.2). Будет загружен архив
в формате . gz (GNU ZIP). Для восстановления резервной копии выберите файл в
области Загрузить бекап базы, укажите базу данных, которую вы восстанавливаете,
и щелкните на кнопке Загрузить.При желании можно загрузить резервную копию не только базы данных, но и все¬
го сайта. Для этого вернитесь в главное меню DirectAdmin (см. рис. 9.1) и выберите
команду Создать1^ Восстановить бекап. Выберите элементы, которые вы хотите по¬
местить в резервную копию, и щелкните на кнопке Создать бекап (рис. 9.3).
Обслуживание Drupal-сайта 173Управление Emafl%* В«#чхья-wCfwтApwneл,Рис. 9.1. Меню панели управления DirectAdmin\|Рис. 9.2. Список баз данных
174Гпава9Рис. 9.3. Создание резервной копии всего сайтаРезервная копия (бекап) будет создана и помещена в каталог /backups на вашем
сервере. Внизу страницы создания резервной копии находится список файлов с ре¬
зервными копиями — для восстановления резервной копии нужно выбрать файл и
щелкнуть на кнопке Восстановить. Для большей надежности рекомендую зайти на
ваш сервер по FTP в каталог /backups и скачать файл с резервной копией на локаль¬
ный жесткий диск.При создании резервной копии всего сайта будет создан полный бекап: все файлы
сайта, содержимое всех баз данных, все почтовые учетные записи и т.д. Файл с полной
резервной копией занимает много места, поэтому он помещается на сервер, а вы уже
можете скачать его по FTP самостоятельно.9.1.2. Использование программы phpMyAdminНа самых дешевых хостингах нет панели управления сайтом. Все просто: чтобы
удешевить услуги, от панели управления пришлось отказаться. Однако программа
phpMyAdmin, представляющая собой удобный веб-интерфейс для управления база¬
ми данных пользователя, установлена практически в 99% случаев. Причина проста —
программа очень удобна и абсолютно бесплатна.О том, как получить доступ к этой программе, вы можете уточнить у админи¬
стратора хостинга. Обычно путь такой: http: //Baitf_cepBep/phpmyadmin, одна¬
ко из соображений безопасности он может быть другим. Даже если на хостинге нет
панели phpMyAdmin, вы можете скачать ее самостоятельно (с сайта http: //www.
phpmyadmin. net/home_page/downloads. php) и установить на свой сервер. Для ра¬
боты этой программы нужно отредактировать всего один конфигурационный файл,
в котором нужно указать параметры доступа к серверу MySQL — имя узла, имя поль¬
зователя и пароль.
Обслуживание Drupal-сайта175Запустите панель phpMyAdmin (рис. 9.4) и выберите команду Экспорт. Далее нуж¬
но указать название базы данных, которую вы хотите экспортировать, и установить
параметры экспорта (рис. 9.5). Формат экспорта нужно установить SQL, иначе потом
будет сложно импортировать базу данных обратно.Рис. 9.4. Окно программы phpMyAdmin[ ft |»tW//9im4.177/phoMyA«mm/ъ -2 a q оpi'sr'0!T?'.tr.r, bdwsp/5Puc. 9.5. Экспорт базы данных
176Гпава9Рекомендуется включить режим сжатия, установив переключатель Упаковать в по¬
ложение gzip (рис. 9.6). Даже не для экономии места — вам в любом случае придется
сжать экспортированный файл перед его импортом, когда это понадобится, так по¬
чему бы это не сделать прямо сейчас? Дело в том, что дамп базы данных может легко
превысить лимит РНР на загрузку файлов, и тогда загрузить дамп вообще не получит¬
ся. Однако текстовый формат SQL очень хорошо сжимается, поэтому при использо¬
вании упаковки у вас не должно быть проблем с загрузкой.р Сохранить как файл г- ■ — — ; ——: г :——j| Шаблон фзЛла^ SERVER * у запомнит шаблон )Улзксаагь. Нет zip * g-ip; OR 'prs Значение обрабатывается функцией strfi-.rr.ii благодаря чэму возможна вставка текущей даты и времен!*. Допслнитепьно мог^т
^ бы’ь испопьзоезчы следующие псдстансеш SERVER /имя сервера Остальной текст останется о<зз измененийРис. 9.6. Сжатие дампа базы данныхДля восстановления базы данных нужно выбрать команду Импорт (см. рис. 9.4).
Как видите, в системе установлен лимит на размер загружаемого файла — 8 Мбайт.
Будем надеяться, что ваш архив не превысил этот размер. Иначе придется просить
восстановить бекап хостера — другого выхода у вас нет. Конечно, есть возможность
загрузить файл по FTP, а потом ввести команду восстановления по SSH, но SSH-
доступ предоставляется редко, поэтому мы даже не будем рассматривать подобную
процедуру восстановления.Рис. 9.7. Импорт базы данных
Обслуживание Ршра1-сайта1779.1.3. Копирование файлов базы данныхЕсли вы сам себе администратор, т.е. у вас локальный сервер, тогда вам нужно ско¬
пировать следующие каталоги.• с: \xampp\mysql\data\<Ha3BaHtfe базы данных> — если у вас ХАМРР.• <каталог установки My SQL>\data\< название базыданных> — если MySQL
в Windows вы устанавливали отдельно, а не использовали пакет ХАМРР.• /var/mysql/data/<название базыданных> или /var/lib/mysql/<название
базы данных> — если у вас Linux, хотя название каталога может отличаться —
все зависит от настроек MySQL. Одно могу сказать: файлы каждой базы данных
хранятся в отдельном каталоге, и этот каталог нужно искать в каталоге /var.• /vaг/db/mysql/<Haзвание базы данных> — если у вас локальный сервер
под управлением FreeBSD.9.2. Оптимизация таблиц DrupalДля повышения производительности базы данных нужно время от времени опти¬
мизировать таблицы. При оптимизации таблицы происходит объединение фрагмен¬
тированных записей, и мы избавляемся от потерь дискового пространства, которые
происходят из-за удаления или обновления записей таблиц базы данных. Чем интен¬
сивнее CMS работает с таблицей и чем больше размер этой таблицы, тем чаще табли¬
ца нуждается в оптимизации.Для оптимизации таблицы используется SQL-оператор OPTIMIZE TABLE назва¬
ние таблицы>. Чтобы не вводить его вручную, можно использовать подручные сред¬
ства. Например, в панели DirectAdmin нужно выделить базу данных и щелкнуть на
кнопке Optimize, находясь в окне со списком баз данных (см. рис. 9.2).В панели phpMyAdmin нужно выделить все таблицы (команда Отметить все) и в
списке действий выбрать значение Оптимизировать таблицу (рис. 9.8).shortcut_set№ ё У ь it XЩпШВ д:‘ Jshortcu?_set0 .. ¥ ■: кInnoOB utffi_gen«ral_eisystemа: а s а хInnoDB utf8_general_citaxonomy index - Ш ■ - « X iInnoDB uif8_gener3l_citaxonomy Jerm date й 5-t* у * оInnoDB utf8jjeneral_citaxonomy term_hierarchy £ . - XInnoDB utf8_general_citaxonomyoc.bu.anr 8 й E I* It XInnoOB utf8_g9neral_c!url_aliasuser»® С отмеченными.S S ОЧИСТИТЬInnoOB utf8_general_ci
InnoDB utfB_generat_ciusers_rolesщ ^Удапигь x, r -j Версия для печати fInnoDB u®_genoraI_civariablewatchdogТа’■* ES Проверить таблицу■if is;::;:.”;-':Восстановить таблицу
блиц: 78 Анализ таблицы 0%InnoDB utfo_jensraf_ci
InnoDB utf3_general_ciMylSAM tatin1_swedish_ci_ Отметить все /Снятьвыделение . ! С отмеченными: ЩРис. 9.8. Оптимизация таблиц с помощью панели phpMyAdmin
178Гпава 9На локальном сервере оптимизировать таблицу можно еще посредством ввода сле¬
дующих команд:cd каталог_базы_данных
myisamchk -г имя_таблицыНо вы вряд ли станете использовать программу myisamchk, потому что ее при¬
дется вызывать для каждой таблицы отдельно. Гораздо удобнее использовать средства
/ DirectAdmin или phpMyAdmin.9.3. Безопасность вашего сайтаДля всех пользователей Drupal есть отличная новость: теперь CMS Drupal больше
защищена, чем Joomla и даже некоторые коммерческие CMS. В большинстве случа¬
ев для защиты вашего сайта вам практически ничего не придется делать. Не верите?
Поищите информацию по защите вашего Drupal-сайта в Интернете. Если для Joomla!
и других CMS приводятся целые руководства по защите (там модуль доустановить,
там код подправить, там — права доступа изменить...), то в Drupal с безопасностью
все нормально.Но нет предела совершенству. По умолчанию в Drupal нет средств для защитц от
перебора паролей. А такая защита есть во многих системах — даже в мобильных теле¬
фонах. Вспомните, стоит три раза неправильно ввести PIN-код, и ваша SIM-карта
будет немедленно заблокирована. В Linux тоже есть подобная блокировка: стоит
пользователю три раза (или больше — зависит от настройки системы) ввести непра¬
вильный пароль, и его учетная запись будет на некоторое время заблокирована. Все
это отбивает у злоумышленников желание заниматься перебором паролей. А вот по¬
добрать пароль часто бывает очень просто. Обычно пользователи не желают приду¬
мывать достаточно сложный пароль, поэтому ограничиваются паролями вида 123456
или qwerty. Прочитайте следующую статью — может, найдете в ней свой пароль:http://wvjw.opennet.ru/opennews/art.shtml?num=22371Простейший способ добавить в Drupal подобную блокировку описан в статье
http://www.dr upal.ru/node/ 31163. Однако данный способ подойдет далеко не
всем. Если у вас выделенный Linux-сервер и вы можете свободно редактировать все
файлы системы, тогда можете попробовать выполнить рекомендаций из статьи. А на
хостинге у вас не будет возможности редактировать системные конфигурационные
файлы сервера, поэтому настроить Drupal подобным образом у вас не получится. До¬
полнительные способы защиты представлены по адресу:http://www.drupal.ru/taxonomy/term/835.Вот еще несколько рекомендаций по поддержанию безопасности Drupal на долж¬
ном уровне.• Следите за обновлениями, как самой CMS Drupal, так и установленных у вас
модулей. Перед установкой обновления ознакомьтесь с вносимыми изме¬
нениями — неплохо бы знать, что будет после обновления. Если обновление
не затрагивает вопросов безопасности сайта и не содержит Полезных для вас
функций, устанавливать его не стоит, так как никто не дает Никакой гарантии,
Обслуживание Ргира1-сайта179что после обновления не обнаружатся новые подводные камни. Бывает так, что
исправляется одна старая ошибка, а добавляется две новых.• Если вы обладаете навыками программирования на РНР и изменили код не¬
которых PHP-файлов, относящихся к Drupal, сделайте резервные копии этих
файлов — они могут быть перезаписаны при обновлении. Но после обновления
не нужно помещать файлы из резервной копии на место обновленных файлов.
Может случиться, что старые файлы (с вашими изменениями) не будут работать
с новой версией системы (модуля). Лучше всего проанализировать код новой
версии файла и добавить изменения, внесенные ранее вами в старую версию,
вручную.• Никогда не предоставляйте вашим пользователям слишком много прав. Пом¬
ните о простых паролях пользователей — учетную запись пользователя могут
взломать и воспользоваться его правами.• Для защиты от спама установите какой-то модуль, реализующий функции
САРТСНА (для публикации комментария нужно ввести специальный код, изо¬
браженный на картинке). Таких модулей много, так что вы без проблем найдете
модуль для Drupal.• Регулярно (раз в 1-2 месяца) обновляйте пароли для базы данных, FTP-сервера
и администратора Drupal. Если на сайте есть пользователи с правами админи¬
стратора, тогда их пароль нужно принудительно изменять вместе со своим па¬
ролем — вне зависимости от желания пользователя. Только не забудьте потом
сообщить новые пароли пользователям. Желательно также проследить, чтобы
они не изменили свой новый и безопасный пароль на старый 123456. Да, сде¬
лать это просто только на словах, поскольку пароли хранятся как хеш MD5,
просто перед установкой нового пароля для пользователя сохраните его хеш.
После этого измените пароль и сообщите его пользователю. Далее через 1-2 дня
снова проверьте его хеш — не равен ли он случайно старому хешу? Если равен,
то пользователь вернул обратно старый пароль. Информация о пользователях
(в том числе пароли) хранится в таблице users.• Регулярно просматривайте страницу http: //drupal. org/security — на ней
вы найдете информацию об обнаруженных проблемах безопасности и способах
их устранения.9.4. Перенос сайта на другой хостингВ начале этой книги вам был предоставлен выбор — или купить хостинг, или на
время настройки установить Drupal на локальный сервер, а после настройки купить
хостинг и перенести сайт на него — так дешевле. Если вы установили Drupal на ло¬
кальный сервер, то рано или поздно вам понадобится перенести его на хостинг. Сей¬
час мы рассмотрим процедуру переноса. Данная процедура подойдет и для “переезда”
с одного хостинга на другой — последовательность действий будет такой же, за ис¬
ключением некоторых деталей.При переходе с одного хостинга на другой перед выполнением описанных ниже
действий нужно перевести сайт в режим обслуживания (чтобы пользователи не смог¬
ли изменить БД сайта в процессе) и отключить модули boost, authcache.
180Гпава 99.4.1. Подготовка базы к переносуЭтап 1: очистка таблиц cache и sessionsПервым делом нужно подготовить базу данных к “переезду” на новый сервер. За¬
пустите панель phpMyAdmin и выделите таблицы cache и sessions, а затем в списке
действий (см. рис. 9.8) выберите команду Очистить. Мы только что очистили табли¬
цы, содержащие информацию о кешированных страницах и локальных сессиях поль¬
зователей, — чтобы после переезда у нас не было проблем ни с тем, ни с другим.Этап 2: дамп таблицВыберите все таблицы (команда Отметить все) и щелкните на кнопке Экспорт.
Выберите формат SQL и включите сжатие gzip. Будет загружен архив, содержащий
дамп базы данных. Мы только что выполнили действие, аналогичное резервному ко¬
пированию базы данных (см. раздел 9.1).Этап 3: импорт таблиц на хостингеТеперь перейдите в панель управления хостингом, создайте новую базу данных для
Drupal (см. главу 3) и запустите панель phpMyAdmin. Перейдите на вкладку Импорт и
выберите полученный с локального компьютера (или с другого хостинга) архив с дампом
таблиц базы' данных. Таблицы должны импортироваться в базу данных на хостинге.Если вы осуществляете “переезд” с одного хостинга на другой и на обоих хостин-
гах используется одна и та же панель управления (например, DirectAdmin), то опи¬
санные выше действия (дамп таблиц и их восстановление на другом хостинге) можно
выполнить средствами панели управления — так может быть даже удобнее.9.4.2. Копирование файлов на хостингПерейдите в каталог, где хранятся ваши файлы (это может быть /var/www в Linux
или с: \xampp\htdocs в Windows) и с помощью FTP-клиента загрузите их в корневой
каталог веб-сервера на хостинге. Это действие подобно тому, которое мы выполняли
при установке Drupal (см. главу 3).При переходе с одного сервера на другой нужно сначала скопировать файлы с
прежнего сервера на локальный компьютер, а потом уже с локального компьютера
загрузить их на новый сервер.9.4.3. Редактирование файла settings.phpОткройте ваш файл sites/default/settings .php. Нужно изменить следующие
строки:$databases = array ('default' =>array ('default' =>
array ('driver' => 'mysql','database' => 'имя базы данных на хостинге','username' => 'имя пользователя базы данных','password' => 'пароль','host' => 'имя узла базы данных, обычно localhost',
Обслуживание Drupal-сайта181'port1 => " ,'prefix' => ",),), '');Указываем новый адрес сайта — в конце переменной base_url не должно быть
слеша(http://www.example.com, а не http://www.example.com/):$base_url = 'http://www.example.com';Если на хостинге вы установили Drupal не в корневой каталог, а в какой-то под¬
каталог (путь это будет каталог drupal), эту переменную нужно установить, как по¬
казано ниже (помните, что не нужно указывать слеш в конце!):$base_url = 'http://www.example.com/drupal';Зайдите на ваш Drupal-сайт, перейдите в раздел Конфигурация^Файловая систе¬
ма. Измените путь к временной папке. На UNIX-хостинге это обычно папка /tmp
(рис. 9.9), но лучше ее название уточнить в службе поддержки хостера.Вот практически и все. Почему “практически”? Да потому что Drupal мы перенес¬
ли, но, возможно, вам придется изменить параметры сторонних расширений. Какие
именно параметры нужно изменить, зависит от используемых вами расширений. Ба¬
зовая конфигурация Drupal должна работать нормально после выполнения описан¬
ных выше действий.9.5. Восстановление пароля администратораУ всех нас время от времени случаются приступы склероза. У кого-то они обо¬
стряются весной, а у кого-то это не зависит от времени года. Просто человек хотел
установить хороший и сложно подбираемый пароль, установил, сохранил в браузере
182Гпава 9(после чего, естественно, забыл его) и переустановил Windows. А что делать потом?
Ведь пароль был сохранен в уже не существующем браузере, а вы его забыли. При
наличии доступа к БД (хорошо, что хоть эти данные у вас распечатаны в договоре с
хостером, ведь он у вас действительно распечатан?) ситуацию легко исправить.Запустите панель phpMyAdmin, перейдите в базу данных с Drupal (список доступ¬
ных баз данных отображается на панели слева), выберите таблицу users. Щелкни¬
те на кнопке Изменить (та, которая с изображением карандаша) напротив учетной
записи пользователя-администратора. Картина будет примерно такой, как показано
на рис. 9.10. Поле pass — это зашифрованный пароль. Расшифровывать его мы не
будем. Просто из списка слева выберите функцию MD5 и введите ваш новый пароль
(рис. 9.11). После этого щелкаем на кнопке ОК внизу страницы и заходим на сайт под
своим именем — старый пароль сброшен.gij Сервер: tocaihos? ► Цй База данных: lest j> |§ Таблица : users "Stores user data.";fjf 06%; ;"jjg ■mmmsoL, п», %0перзц„и fe. -Puc. 9.10. Редактирование таблицы usersgj Сервер: Jocafoost ► Jp База данных; test \г Ц Таблица : users "Stores user data "^вставить■Поле
шй .гшремТип %» v3rchaf|6Dt
,'3rchar(123! ммvarchar(254)«ИЯ I Ii.Tj'■;г> лИ м&йшш
''-•л-'-.;- - ?moy_noviy_parol|
.sdhsilabs@maii.atPuc. 9.11. Установка нового пароляКак видите, ничего страшного в этом нет. Главное, не забыть пароли доступа к
базе данных. Их восстановить при желании тоже можно, обратившись к хостеру и
предоставив доказательства, что вы — владелец хостинга. Как правило, паспорта ока¬
зывается достаточно.Следующая глава посвящена заработку на вашем сайте. Мы рассмотрим, как мож¬
но заработать деньги с помощью сайта, как получить заработанные деньги (что тоже
немаловажно) и как выполнить поисковую оптимизацию сайта (SEO). Особое вни¬
мание в следующей главе уделяется программе WebMoney. Уверещ что эта программа
пригодится вам не только при получении денег, заработанных на продаже рекламы
с вашего сайта, но и для совершения покупок в интернет-магазинах: подавляющее
большинство интернет-магазинов поддерживает систему WebMoney.
ГЛАВА 10Поисковая оптимизация
и заработок в Интернете10.1. Способы привлечения посетителей на сайтПрежде чем заниматься поисковой оптимизацией, нужно поговорить о способах
привлечения посетителей на сайт — без них поисковая оптимизация будет неактуальной.В идеале все выходит замечательно: вы обновляете свой сайт, поисковые машины
его индексируют, а пользователи находят сайт, когда пытаются найти в поисковике
нужную им информацию. Но на практике все иначе. Пока ваш сайт проиндексирует
поисковая машина, может пройти и месдц. Для начинающих сайтов регулярность
визитов поисковых машин предугадать сложно. На те сайты, где есть высокие по¬
казатели PR (PageRank) и ТИЦ, поисковики заходят регулярно — проверять обнов¬
ления. А вот на ваш сайт поисковики будут заходить редко — пока что. Значит, нужно
заявить всему миру о себе.Вот несколько проверенных способов повысить посещаемость.• Реклама — двигатель прогресса. Можно рекламировать сайт по телевизору (до¬
рого), в печатных СМИ (чуть дешевле) и, конечно же, в Интернете (самые до¬
ступные цены на рекламу). Однако не нужно заказывать рекламную кампанию
(размещать те же баннеры на более популярных сайтах), пока не наполните
сайт интересным контентом. Иначе пользователь зайдет на сайт, посмотрит,. что на нем ничего интересного нет и... вы потеряете его навсегда.• Регистрация в каталогах — один из видов рекламы. Желательно проводить реги¬
страцию, когда сайт наполнен интересным контентом. Создайте хотя бы пять
страниц контента, и тогда можете заказывать регистрацию в каталогах. Кстати,
данное средство ускорит процесс индексирования поисковыми машинами, по¬
скольку поисковые машины часто индексируют именно каталоги, а с каталога
по ссылке поисковый паук перейдет уже и на ваш сайт. Регистрация в каталогах
стоит обычно недорого и имеет смысл заплатить за нее специальным фирмам.
Они добавляют ваш сайт в сотни каталогов, это осуществляется автоматически.
Можно и самому, вручную регистрировать сайт в каталогах, но на регистрацию,
скажем, в 300-х каталогах, уйдет немало времени. Даже если на регистрацию в
одном каталоге придется потратить 10 минут, то на все потребуется 3000 минут,
или 50 часов, или 6 с лишним рабочих дней.
184Гпава 10• Пишите статьи и выкладывайте на других сайтах — не жадничайте, но только не
забывайте в каждую статью поместить ссылку на свой сайт. Посетители этих
сайтов обязательно заглянут на ваш. Кстати, не забудьте разместить оригинал
статьи на своем сайте,. Если не умеете писать статьи, можете, например, рисо¬
вать открытки, писать скрипты и т.д. Другими словами, вы должны предложить
свой авторский контент другим сайтам за то, что они поставят ссылку на ваш
сайт.• Регистрируйтесь на форумах — в качестве подписи установите адрес своего сай¬
та, это тоже действует как дополнительная ссылка на ваш сайт.• Создайте собственную рассылку на MailList. Ru или любом другом сервисе по¬
чтовых рассылок — привлечение аудитории к вашему сайту вам гарантировано.
Разрешите подписчикам публиковать фрагменты вашей рассылки на других
сайтах со ссылкой на ваш сайт.• Создайте электронную книгу на базе вашего сайта — пусть электронная книга
выглядит как ваш сайт (с рубриками, метками, записями). Распространяйте эту
книгу бесплатно. Разумеется, не забудьте включить в нее ссылки на ваш сайт.
Можете даже выложить ее на торрентах (http: //rutraker. org) — тогда по¬
пулярность вам гарантирована.• Создайте каталог статей — пусть авторы публикуют свои статьи на вашем сайте,
ведь это уникальный авторский материал, которого вам так не хватало.• Создайте форум — в нем вы будете обсуждать ваши записи более подробно.
К тому же это избавит ваш сайт от ненужного флуда.• Ограничьте доступ к вашему сайту — напишите, что доступ к сайту платный, но
для тех, кто разместит на своем сайте ссылку на ваш, будет открыт бесплатный
доступ.• Устройте конкурс — например, конкурс статей или конкурс сайтов подобной
тематики. Определите какую-то награду. Все это привлечет интерес к вашему
сайту.• Организуйте бесплатные консультации в обмен на ссылку — если вы являетесь
экспертом в какой-то области, консультируйте пользователей бесплатно по
электронной почте в обмен на размещение ссылки на ваш сайт.• Купите новый домен и создайте в нем каталог ссылок — чуть выше мы говорилио небольшом каталоге ссылок на вашем сайте. А может имеет смысл создать
отдельный каталог ссылок, на главной странице которого разместите ссылку
на ваш сайт.• Обменивайтесь контентом с подобными сайтами — обменивайтесь статьями, фо¬
тографиями, другими материалами. Все это тоже способствует росту популяр¬
ности сайта.• Разрешите скачивать программы и скрипты с вашего сайта в обмен на размещение
ссылки — тоже один из вариантов увеличения посещаемости.• Создайте кольцо сайтов — это несколько сайтов, ссылающихся друг на друга.
Например, сайт А ссылается на сайты Б и В, сайт Б ссылается на А и В, а сайт
В — на А и Б.
Поисковая оптимизация и заработок в Интернете185• Предоставляйте место под чужие сайты — если у вас достаточно места на диске,
выделяйте бесплатно всем желающим, скажем, 200 Мбайт под их собственный
сайт. В качестве доменного имени используйте имя. вашдомен. Например, у
меня есть сайт dkws. org. Я могу выделить всем желающим место под сайт, ко¬
торый будет называться имя. dkws. org. Каждый из этих пользователей должен
будет установить ссылки на основной домен. Тогда поисковые машины будут
считать все эти сайты одним целым.10.2. Поисковая оптимизация DrupalПоисковые машины могут проиндексировать сайт по-разному. Чтобы поисковик
проиндексировал ваш сайт более эффективно, нужно заняться поисковой оптимиза¬
цией (SEO, Search Engine Optimization).Система Drupal довольно неплохо выглядит в плане SEO, но сейчас мы рассмо¬
трим несколько способов, позволяющих дополнительно улучшить возможности
оптимизации.. Начнем с карты сайта.10.2.1. Карта сайтаКарта сайта позволяет поисковым роботам лучше ориентироваться на вашем сай¬
те. Вы можете создать даже две карты сайта: одну — для ваших посетителей, а вто¬
рую — для поисковиков. Первая будет удобнее для восприятия пользователя, но в
плане поисковой оптимизации толку от такой карты будет мало. А вторая карта будет
бесполезна для пользователя, но зато позволит поисковикам лучше проиндексиро¬
вать ваш сайт.Расширение XML Sitemap, доступное по адресу http: / /drupal. org/project/
xml sitemap, добавит на ваш сайт карту в формате XML, необходимую для улучшения
SEO. А расширение Sitemap (http: //drupal .org/project/site_map) позволит до¬
бавить на сайт “человеческую” карту сайта.10.2.2. Редактирование файла robots.txtПосредством редактирования файла robots. txt можно запретить роботам индек¬
сировать повторяющийся контент. Для этого откройте файл robots. txt (находится в
корневом каталоге сервера) и в самый конец добавьте следующие строки:Disallow: /user/register?Disallow: /user/login?Disallow: /taxonomy/term*/feed
Disallow: /book/export/html
Disallow: /\*sort=Disallow: *?sort=Disallow: /\*size=i10.2.3. URL, понятные человекуПо умолчанию URL элементов вашего сайта выглядят не очень привлекательно и
не запоминаются человеком. Вы можете изменить стандартный формат URL на при¬
мерно такой: /категория/название_статьи. html, что уже лучше запоминается че¬
ловеком. Для реализации данной возможности нужно включить модуль mod rewr ite
186Гпава 10веб-сервера Apache. После включения модуля mod rewrite нужно зайти в раздел
Администрирование^Настройка сайта и активизировать параметр Чистые ссылки.
После включения режима чистых ссылок URL станут более запоминаемыми, напри¬
мер /node/12345.Чтобы не просто включить режим чистых ссылок, но и настроить их формат (на¬
пример, /категория/название_статьи.html или /категория/дата/название_
статьи, html), нужно расширение Pathauto, которое можно скачать по адресу:http://drupal.org/proj ect/pathauto.Поскольку после включения модуля Pathauto контент станет доступен и по ста¬
рым, и по новым ссылкам, желательно установить модуль Path Redirect (http: //
drupal .org/pro ject/path_redirect), чтобы исключить дублирование контента.
Далее, чтобы все работало нормально, нужно:• при создании статьи сбросить флажок параметра Создавать синоним автома¬
тически;• в настройках Pathauto установить флажок параметра Create a new alias. Redirect
from old alias.10.2.4. Расширение NodewordsВ Joomla! можно установить описание статьи, ключевые слова и другие мета-теги,
в Drupal такой возможности по умолчанию нет, но зато можно установить расши¬
рение Nodewords (http: / /drupal .org/project/nodewords), которое позволяет
подключать множество полезных опций для SEO, что улучшит оптимизацию вашего
сайта в целом.10.2.5. 10 лучших Driipal-модулей для SEOРассмотрим десятку лучших Drupal-расширений, позволяющих улучшить поис¬
ковую оптимизацию вашего сайта. '1. Google Analytics (http: / / drupal. org/pro j ect/google_analytics) — добав¬
ляет код системы Google Analytics на сайт, в результате вы сможете следить за. : - вашими посетителями.2. Taxonomy title (http: //drupal. org/pro ject/taxonomy_title) — использу¬
ется для установки тегов title для страниц таксономии сайта.3. SEO Checklist (http: / /drupal .org/pro ject/seo_checklist) — отслеживает
SEO-задачи, которые необходимо выполнить для вашего сайта. Модуль вообще
не выполняет никаких действий, касающихся оптимизации, зато сообщает вам,
что еще нужно сделать для улучшения поисковой оптимизации. Довольно по¬
лезный “путеводитель” по SEO.4. URL list (http: / /drupal .org/project/игHist) — простая текстовая карта
сайта, может пригодится, если рассмотренные выше расширения вам не по¬
дошли.5. Syndication (http: //drupal .org/pro ject/syndi cation) — собирает воедино
все RSS-каналы, созданные на вашем сайте.
Поисковая оптимизация и заработок в Интернете1876. Menu attributes (http: / /drupal .org/project/menu_attributes) — исполь¬
зуется для создания дополнительных атрибутов элементов меню, что позже по¬
может в организации динамичных меню средствами JavaScript.7. Scheduler (http: //drupal .org/project/scheduler) — модуль отложенной
публикации материалов. В Joomla! подобная возможность есть по умолчанию, а
в Drupal нужно установить модуль Scheduler, который создаст эффект вашего
присутствия на сайте, публикуя автоматически заданные ранее вами материалы.
Вы можете спокойно уехать в отпуск, а модуль Scheduler будет автоматически
(согласно созданному вами расписанию) публиковать указанные материалы.8. Read more link (http: / / drupal .org/pro j ect/ed_readmore) — создаст ссылки
Читать далее..., дружественные поисковым машинам.9. HTML Purifier (http: //drupal .org/pro ject/htmlpur if ier) — исправляет
“плохой” HTML-код, введенный вами или другими пользователями.10. Mollom (http://drupal.org/project/mollom) — проверяет комментарии,
оставленные пользователями, на наличие спама, что положительно скажется
на SEO, потому что Google не будет считать ваш сайт “спамосборником”.Поисковая оптимизация нужна не просто для повышения посещаемости. Когда ваш
сайт достигнет определенного уровня посещаемости, на нем можно будет зарабатывать
деньги, размещая контекстную рекламу и баннеры. Не нужно надеяться на золотые
горы, но если ваш сайт окупит свое существование — это уже хороший результат.10.3. Способы заработка на сайте10.3.1. А можно ли вообще заработать на сайте?Раз вы читаете эту главу, то данная мысль уже приходила вам в голову. Некоторые
сайтовладельцы это поняли и даже отказались от постоянной работы. Теперь их рабо¬
та — это сайт. Вы только себе представьте, как вы просыпаетесь и проверяете, сколько
вы заработали, пока вы спали. Это очень приятно.На сайте можно Заработать. Только не нужно сразу после создания сайта уволь¬
няться с основной работы. Пока ваш сайт не очень популярный, вы вообще ничего
не заработаете. Потом будете зарабатывать центы (как — я потом расскажу), потом
десятки центов в день, потом несколько долларов в день. Почему расценки в долла¬
рах? Да потому что обычно доход от размещения рекламы будет в долларах. Одно могу
сказать, что заработать смогут все. А вот сколько — зависит от вас.Прежде чем приступить к рассмотрению способов заработка, давайте подсчитаем
затраты на сайт. Начнем с доменного имени. Если у вас доменное имя первого уровня
(. com, . ru, . net, . org и т.д.), то, как правило, затраты на него составят 10—15 долла¬
ров в год (если не считать более дорогих доменов вроде . ua, . mobi и т.д.). Доменное
имя второго уровня (. org. ua, . net. ru и т.д.) обойдется в 5—10 долларов, в среднем —
10 долларов.Теперь посчитаем хостинг. Хороший хостинг с 500 Мбайт дискового пространства1 у нормального хостинг-провайдера с безлимитным входящим и исходящим трафиком
обойдется примерно в 5 долларов в месяц (может быть дороже, а может, и дешевле —
зависит от хостера). Итого, 10 + 60 = 70 долларов в год только хостинг и домен. Также
188Гпава 10вы потратите как минимум 20—30 долларов (единоразово) за регистрацию вашего сай¬
та во всевозможных каталогах. Заказывать или не заказывать рекламу в поисковых
машинах или другие виды рекламы — зависит от вас. Поэтому мы эти расходы вообще
считать не будем. Кто-то может заказать рекламу в Google, на 50 долларов, а кто-то —
рекламу по телевизору за $5000.Итого получилось где-то 100 долларов за первый год и по 70 за все последующие.
Это не считая помощи отдельных специалистов по настройке движка сайта. Надеюсь,
что эта книга вам поможет, и с ее помощью вы немного сэкономите.Значит, в месяц ваш сайт обходится вам в 8,33 доллара. Поэтому сначала поставим
перед собою цель — заработать 8,33 доллара в месяц, чтобы сайт окупал себя. Для
начала и это неплохо. 8 (и даже 10) долларов в месяц — это более чем реально. Посчи¬
тайте и убедитесь сами. Некоторые рекламные службы платят за размещение рекламы
от 2 до 10 долларов за каждые 1000 посещений. А теперь считаем: 1000 посещений в
месяц (чтобы заработать заветные 10 долларов) — это 34 посещения в день, т.е. вам
нужно добиться стабильной посещаемости на уровне 34 человека в день. Тогда сайт
будет окупать себя.Почему такой большой разрыв — от 2 до 10 долларов? Как правило, 2 доллара пла¬
тят за размещение баннеров, не содержащих информацию для взрослых, а 10 долла¬
ров — за размещение баннеров эротического содержания. Не хотите, чтобы на вашем
сайте были такие материалы или это противоречит политике хостера? Ну и отлично,
можно увеличить посещаемость в 5 раз (хотя бы до 150 человек в день) или поместить
несколько баннеров разных систем на свой сайт, чтобы увеличить прибыль. Оба ва¬
рианта вполне реальны.10.3.2. Как именно заработать на сайте?А вот теперь я готов дать ответ на этот вопрос. Заработок на сайте заключается в раз¬
мещении рекламы на вашем сайте. Реклама может быть в виде баннеров, всплывающих
окошек, ссылок в тексте сайта и т.д. Больше всего “напрягают” посетителей всплы¬
вающие окошки, но за них больше всего и платят. Когда у вас мало посетителей, лучше
отказаться от всплывающих окошек — вы распугаете аудиторию. А вот когда ваш сайт
станет популярным, тогда можно и добавить всплывающие окна с рекламой.Оплата за рекламу может начисляться либо по количество кликов, либо по ко¬
личеству показов вашего сайта (следовательно, и рекламного баннера). Чем больше
посещений (кликов) и чем выше у вас ТИЦ (индекс цитирования, Яндекс) и PR (Page
Rank, ранг страницы — Google), тем больше денег вы сможете заработать.Как получить заработанные деньги? Деньги начисляются сначала в аккуанте ре¬
кламной (баннерной, тизерной и т.д.) системы, потом выводятся вам. Практически
все системы поддерживают вывод в кошелек Web Money. Вы можете работать с не¬
сколькими системами, а потом вывести все деньги в кошелек WebMoney. Получится
солидная сумма. Что с ней делать дальше? Можно потратить в Интернете, например,
заплатить за хостинг, купить себе новый компьютер, бытовую технику и т.д. Это са¬
мый экономный вариант. Вы заплатите за сам товар и за перевод денег на кошелек
хостинг-провайдера или интернет-магазина. А учитывая, что в интернет-магазинах
цены ниже, то покупка товаров за WebMoney выгоднее, чем покупка товаров в обыч¬
ном магазине за наличные. А вот если вы хотите получить “кэш”, т.е. наличные, при¬
дется потратиться. Вы заплатите за вывод денег из системы WebMoney, комиссию
Поисковая оптимизация и заработок в Интернете189банка, в который вы выводите деньги, а потом за снятие денег из банкомата. На все
про все иногда может уйти 5-7%. Все зависит от жадности банка, в котором у вас от¬
крыта платежная карточка. Подробнее о системе WebMoney мы поговорим ниже в
этой главе, иначе получается, что мы обсуждаем, как потратить деньги, которые еще
не заработали. К тому же, чтобы все было по закону, при выводе денег на карточку вам
нужно сообщить ваши налоговые данные — ИНН, паспортные данные, т.е. остаться
анонимным и уйти от уплаты налогов не получится.Итак, рассмотрим проверенные способы заработка на сайте.• Контекстная реклама — рекламные объявления, которые размещаются на ва¬
шем сайте. За показ таких объявлений Google, Yandex и Бегун платят деньги.
Однако каждая система предъявляет определенные требования к вашему сай¬
ту — обычно установленное количество посетителей в сутки. Если у вас меньше
посещений, вы не сможете участвовать в той или иной рекламной кампании.• Продажа текстовых ссылок — зарегистрируйтесь в системах Sape (www. s ape. ru)
и Xap (www. хар. ru) и получайте деньги за размещение рекламных ссылок на
страницах вашего сайта.• Прямое размещение рекламы на сайте — вы можете договориться с рекламодате¬
лем о размещении его баннера на вашем сайте. Стоимость такой рекламы уста¬
навливается по договоренности с рекламодателем.• Написание заказных статей — некоторые пользователи пишут заказные статьи,
в которых они рекламируют ту или иную продукцию, за это рекламодатель пла¬
тит денежку. Стоимость такой услуги у некоторых сайтовладельцев достигает
10 долларов за каждые 1000 символов (с пробелами). Написали обзор какой-
то платной программы, тысяч эдак на 5 символов, и заработали 50 долларов.
Вполне неплохо. И какая разница о чем писать? Во-первых, на вашем сайте
будет авторский контент, что немаловажно для поисковиков, а во-вторых, вам
за этот контент еще и заплатят.• Партнерские программы — у Васи Пупкина есть интернет-магазин, в котором
он продает, скажем ноутбуки. А ваш сайт посвящен ноутбукам и мобильным
устройствам. Вы можете разместить код партнерской программы у себя на сай¬
те, в результате в месте размещения кода вы увидите ссылки для перехода на
интернет-магазин Пупкина. Все, что ваши посетители купят у Пупкина^ зачис¬
лится на ваш аккуант. Затем, как правило, в конце месяца вы получите 5—10%
от общей суммы заказов ваших посетителей. Обратите внимание: 5% от стои¬
мости ноутбука (от 500 долларов) — это уже неплохо. Партнерских программ в
Интернете — огромное количество, так что вы легко найдете ту, которая соот¬
ветствует тематике вашего сайта.• Размещение ссылок в записях — можете зарегистрироваться в сервисах вроде
Blogun, J2J, BLOGODA, PROFITBLOG и заработать за размещение их реклам¬
ных ссылок в записях вашего сайта.Не нужно рассчитывать, что какой-то метод заработка вас сразу озолотит. Нет,
однако, соединив все воедино, вы вполне сможете прилично заработать. Например,
8 долларов за размещение контекстной рекламы, 25 долларов на партнерской про¬
грамме, 5 долларов за размещение ссылок в записях, 20 долларов за продажу ссылок
(Sape) — все это вместе даст вам 58 долларов. Мелочь, а приятно.
190Гпава 1010.4. Основы WebMoney: ваш электронный кошелек10.4.1. Что такое электронные деньги?Немного историиЧтобы понять, что такое электронные деньги, нужно разобраться вообще, что та¬
кое деньги. Давайте мысленно вернемся в те времена, когда денег вообще не было.
Представим, что есть три разнйх племени — рыболовы, охотники и ремесленники.
Пусть в каждом племени по 100 человек. Но рыболовы умудрились выловить рыбы на
130 человек, у охотников оказалось мяса на 120 человек, а ремесленники изготовили
различных изделий, которых хватит на целых два племени. Так появились остатки
(или излишки). Что делать с лишней рыбой? Ведь холодильников тогда не было. Тогда
племена начали меняться между собой. Скажем, определенное количество рыбы ме¬
нялось на одну шкуру медведя или на определенное количество мяса или несколько
различных изделий из глины. Так появился товарный обмен, называемый в современ¬
ном мире бартером.Но возникает вопрос, сколько рыбы нужно отдать за одну шкуру медведя? Нужно
универсальное мерило всего материального. Например, когда вы меняете автомобиль
на квартиру, то точно знаете, что, например, автомобиль стоит 50 000 каких-то услов¬
ных единиц (сейчас я не имею в виду никакую валюту), а квартира — 70 000, поэтому
вы должны отдать автомобиль и доплатить еще 20 000 этих самых единиц хозяину
квартиры.А в те времена не было никаких единиц — не было денег. Нужно было что-то при¬
думать. И случилось чудо — люди нашли золото, которое до сих пор является универ¬
сальным мерилом всего, в том числе и различных валют. Сами по себе современные
купюры ничего не стоят, важен золото-валютный запас страны. Итак, появились уни¬
версальные деньги — золото. С появлением золота можно было точно сказать, что и
сколько стоит.Потом люди поняли, что золото добывать сложно, проще чеканить монеты из той
же меди. Это дешевле и проще. А потом вообще стали печатать деньги на бумаге, что
еще дешевле, нежели чеканить монеты из меди или другого металла (скажем, из сере¬
бра). Так и появились бумажные деньги, к которым мы привыкли сегодня.Самое интересное, что первые банки появились около трех тысяч лет назад! Да-да,
поскольку нашей эре насчитывается всего 2010 лет, то первые банки появились еще
до нашей эры! Конечно, это не те банки, к которым мы привыкли. Раньше банком
считался дворец, в котором хранились товары.А первые деньги, напоминающие современные, появились в Лидии (это сейчас
Турция) примерно в 640 году до н.э. Это были уже не куски золота, а круглые мо¬
неты из сплава золота и серебра. А первые чеки появились примерно через 40 лет -
в 600 году до н.э. — торговцы и путешественники перевозили не монеты, а расписки
банка Тифия. Все как сегодня: человек приносил в банк 50 монет, ему выдавали рас¬
писку на эти самые 50 монет. А путешествовать с таким чеком было намного удобнее.
Ведь в случае ограбления — это всего лишь бумажка, а деньги хранятся в безопасном
месте. А куда можно было путешествовать с такими бумажками? Конечно же, за то¬
варом. Отделения этого банка были в Греции и Ионии — все как сегодня. Человек
приезжал в другую страну, отдавал документ (или “бумажку”), получал свои 50 монет
и покупал на них товар.
Поисковая оптимизация и заработок в Интернете191Недавно купил китайский GPS-навигатор. Проработал он у меня... всего 1 день и
отправился в сервис. Почему китайские товары такие некачественные? Да потому что
китайцы изначально, наверное, самые жадные. Когда в Турции чеканили монеты из
золота и серебра, в Китае чеканили монеты из железа. Первые бумажные деньги тоже
появились в Китае — в 910 году нашей эры. А как же — бумага еще дешевле железа.
Зато китайцы ввели понятие номинала. Раньше стоимость монеты определялась сле¬
дующим.1. Металлом, из которого она сделана (золото — самые дорогие, элерон, т.е. сплав
золота и серебра — чуть дешевле, серебро и медь — самые дешевые, если не
считать монет из железа).2. Размером и весом монеты (чем больше, тем дороже).Теперь возьмите в руки бумажку, на которой написано 500 евро. Умножьте 500
на курс евро в вашей стране. Получается солидная сумма. Неужели вы думаете, что
на изготовление этой бумажки была затрачена такая сумма? Конечно же нет. Это и
есть номинал, т.е. то, что написано на купюре, а не ее истинная стоимость. Эмис¬
сия денег — это самый выгодный бизнес, потратил 50 центов, а напечатал купюру в
500 евро.Мы постепенно подходим к современным временам. Чуть выше мы говорили о
чеках, но то, что было описано выше, можно назвать дорожными чеками (так оно, по
сути, и есть). А вот чеки в современном смысле этого слова появились в 1650 году, их
практически одновременно стали выпускать банки разных стран.В России первый государственный банк Российской Империи появился в 1840 году,
а в США — в 1913 году (Federal Reserve System — Федеральная Резервная Система). Но
не нужно думать, что доллар такой молодой. Конечно же нет, просто до этого цвет
и размер доллара различался в разных штатах, что было не очень удобно. А первая в
США система безналичного расчета была создана в 1824 году.Вы когда-нибудь получали денежный перевод, скажем по Western Union? Даже
если и нет, то вы несомненно слышали об этой системе перевода. Первая система
перевода денег в США появилась в 1918 году. Вы приходили в банк, платили опреде¬
ленную сумму, которую намеревались перевести другому лицу в другом городе, после
чего сотрудники банка отправляли по телеграфу сообщение, содержащее всю необхо¬
димую информацию — кому и какую сумму нужно выдать.Самое интересное, что телеграф появился примерно в 1830-х годах, а использовать¬
ся в банковском деле стал значительно позже. Почему? Потому что банки не доверяли
новым технологиям, равно как и многие пользователи сейчас не доверяют электрон¬
ным деньгам. Впрочем, об электронных деньгах говорить пока преждевременно. ‘В конце 1930-х годов был создан первый компьютер. Конечно, назвать его ком¬
пьютером в современном смысле этого слова очень сложно. Он весил несколько де¬
сятков тонн и занимал огромное помещение. К тому же не отличался надежностью —
понятно, что банки не спешили использовать новые технологии, хотя бы потому, что
они были ненадежны. Ведь первые компьютеры были на лампах, которые постоян¬
но выходили со строя. Позже были построены компьютеры на транзисторах, что не
только повысило надежность, но и уменьшило их размер. Конечно, в 1970-х годах
компьютеры на транзисторах все равно были размером с огромный холодильник; но,
тем не менее, они уже не весили по 20 тонн.
192Гпава 10Чуть позже была создана сеть ARPANET (именно она является предком всемирной
сети Интернет), и благодаря ей стало возможным создание централизованной элек¬
тронной сети учета банковских чеков. В 1973 году было создано Общество Всемир¬
ной Межбанковской Финансовой Телекоммуникации (Society for Worldwide Interbank
Financial Telecommunication — SWIFT), в которое пошли 15 стран и 239 банков.Двадцать лет спустя (точнее восемнадцать) была создана Всемирная паутина —
WWW (World Wide Web). А уже в 1992 году появились первые сайты банков (конеч¬
но, в то время создание сайта и его размещение было по средствам только научным,
правительственным организациям и, конечно же, банкам). Что же касается обычных
пользователей, то им Интернет был не по карману. Ведь только компьютер на базе
386-го процессора стоил как автомобиль, а стоимость быстрого соединения (на базе
линии Т1) с Интернетом была баснословной. Да что там говорить, если в 1997-1998 го¬
дах у меня был так называемый offline-доступ к Интернету — только электронная по¬
чта и новости, плюс модемное соединение. Онлайн-доступ к ресурсам WWW был
тогда более-менее доступным разве что в интернет-кафе. С 1999 года я обзавелся уже
онлайн-доступом, но проводил в Интернете не весь рабочий день, как сейчас, а лишь
несколько часов в неделю.Несмотря на все это, в 1993 году появилась первая электронная платежная систе¬
ма DigiCash. Ведь было подсчитано, что стоимость одной транзакции (т.е. перевода
денег с одного счета на другой) с помощью электронной платежной системы (далее
ЭПС) на 90% дешевле, чем аналогичная транзакция, проведенная в обычном отделе¬
нии банка.Наверное, не стоит говорить, что сначала DigiCash не пользовалась особым спро¬
сом. Тогда ее создатели решили, что нужно “брать” чем-то другим и начали выпуск
смарт-карт. Каждый хотя бы раз в жизни держал в руках смарт-карту. Типичный при¬
мер смарт-карты — таксофонная карточка. В пластиковую карточку встраивается
чип, на который записывается количество минут, которое вы можете проговорить.
Карточка вставляется в таксофон, набирается номер, а встроенный в таксофон “ком¬
пьютер” отсчитывает оставшееся количество минут на карточке. Система DigiCash
тоже использовала смарт-карты, только на чип записывались не минуты разговора,
а сумма денег на счете. Расплатиться смарт-картой можно было в метро, в таксофон¬
ных аппаратах и т.д.От наличных к безналу, от безнала — к электронным деньгамВы идете в магазин и покупаете товар, скажем, ноутбук. Вы выбираете товар, вно¬
сите в кассу деньги и получаете выбранный ноутбук. Это пример наличного расчета.
Теперь поговорим о безнале.Все мы знаем, что такое безналичный расчет. Вы открываете счет в банке, вносите
на него определенную сумму. Для перевода денег другому лицу нужно знать номер его
счета и реквизиты банка. Все эти реквизиты вместе с суммой перевода вы записы¬
ваете в специальный документ — платежное поручение. Далее идете в банк, отдаете
платежное получение оператору, и с вашего счета снимается указанная в “платежке”
сумма и зачисляется на счет получателя. Это и есть безналичный расчет.Теперь подумаем, как реализовать систему безналичного расчета. Самый просто
вариант — для каждого клиента завести карточки, в которые оператор (кассир) будет
записывать всю историю операций со счетом — сколько денег было внесено, сколько
Поисковая оптимизация и заработок в Интернете193снято, сколько отправлено, сколько получено от других клиентов банка. Гражданин
Иванов открывает счет — ему заводят новую чистую карточку. Потом Иванов вносит
деньги на счет. На карточку записывается, сколько денег было внесено. Потом Ива¬
нов переводит часть суммы Петрову, который также является клиентом этого банка.
Кассир записывает в карточку Иванова, что была снята такая-то сумма денег в поль¬
зу Петрова, а в карточку Петрова записывает, что была получена указанная сумма от
Иванова.Если Иванов переводит деньги Сидорову в другой банк, тогда кассир звонит в этот
банк и говорит, что Иванов переводит деньги Сидорову и нужно в его карточку запи¬
сать сумму N. Затем инкассация доставляет сумму N в банк Сидорова.Но такая схема имеет ряд недостатков. Во-первых, если клиентов много, то наша
система не выдерживает никакой критики — чтобы перевести деньги, нужно будет
занимать очередь за три дня. Во-вторых, такая система оставляет огромный простор
для мошенников. Я тоже могу позвонить в другой банк и сказать, что на мой счет (ко¬
торый я открою заранее) будет перечислена от Иванова сумма N.Тогда модифицируем нашу схему. Вместо карточек клиентов создадим базу данных
на мощном компьютере. Тогда перевод денег будет занимать считанные секунды —
компьютер снимет с таблицы Иванова сумму N и зачислит ее в таблицу Петрова.
Таблица — это аналог карточки. Использование компьютера решает проблему с на¬
грузкой на банк, поскольку кассиру нужно выбрать только два счета и указать сумму,
которая переводится. Никакой ручной работы — за исключением того, что нужно по¬
ставить печать банка и свою подпись.Для перевода в другой банк используются защищенные протоколы и защищенные
каналы, вмешаться в работу которых слишком сложно, поэтому мы также решаем
проблему с мошенниками. Конечно, время от времени “хакеры” взламывают банки,
но это случается редко. Чаще происходят обычные ограбления, нежели взлом элек¬
тронных систем.Вы часто отправляете деньги? Или часто получаете деньги? Тогда вы устанете хо¬
дить в банк с платежными поручениями и за выписками о состоянии счета (чтобы
узнать, кто вам перечислил деньги). Именно поэтому была введена система “клиент-
банк”.На ваш компьютер устанавливается специальная программа и ключи, сгенериро¬
ванные только для вас, чтобы банк мог удостовериться, что вы — это вы. Ключи, как
правило, есть только у директора/бухгалтера — на его личной флешке. Вы запускаете
эту программу, выбираете, кому вы хотите отправить деньги, вводите сумму и все — за
считанные секунды деньги будут отправлены. Вам не нужно тратить время на дорогу
в банк и обратно, стоять в очереди.По сути, это и есть система электронного перевода денег. Но есть и отличия, о ко¬
торых мы поговорим в следующем пункте.Отличия виртуальных денег от системы “клиент-банк”Технически, что система клиент/банк, что электронная платежная система (та же
WebMoney) устроены примерно одинаково. Есть программа управления вашим сче¬
том, которая связывается с центральной базой данных (в данном случае — сервер
банка или серверы WebMoney), есть ключи доступа (которые лучше всего хранить на
флешке, чтобы не потерять). Но юридически здесь есть нюансы.
194Гпава 10Когда вы открываете счет, то сообщаете все свои данные — фамилию, имя, от¬
чество, серию и номер паспорта, идентификационный номер налогоплательщика
(ИНН). Операции с вашим счетом “мониторятся” контролирующими органами (на¬
логовой инспекцией), — чтобы там вам ни говорили в банке (даже швейцарские бан¬
ки “сливают” информацию этим самым органам). Доходы нужно декларировать, а с
них — платить налоги, в частности, налог на прибыль и все остальные виды налогов
(а их очень много).Когда вы создаете себе электронный кошелек (это аналог вашего счета в банке),
то не нужно указывать ваши реальные данные. Можете их указывать, а можете нет —
электронные кошельки не просматриваются налоговой службой. Почему? Да потому
что виртуальные денежные знаки не являются валютой и деньгами по сути. Когда вы
вносите обычные реальные деньги в свой кошелек, вы, по сути, покупаете информа¬
ционную услугу, которая заключается во внесении определенных данных в вашу учет¬
ную запись на сайте ЭПС. И ничего больше! Когда вы получаете электронные деньги
(например, когда вам кто-то платит за размещение рекламы на сайте), не считается,
что вы получаете доход. Просто на вашу учетную запись зачисляются цифры — и все.
Ничего больше. Раз вы не получаете доход, значит, вам не нужно платить налоги.Я не учу вас, как уклоняться от уплаты налогов. Налоги вы все равно заплатите,
когда вам захочется превратить электронную валюту в реальную, т.е. когда вы отпра¬
вите деньги со своего электронного кошелька на свой банковский счет. Но, как пра¬
вило, вывод денег с электронного кошелька имеет смысл, когда сумма накопилась
приличная. Скажем, хотя бы 100 долларов и выше. Иначе просто нет смысла — все
“сожрет” комиссия ЭПС и банка (при зачислении денег на счет и при снятии).С другой стороны, можно вообще не превращать электронные деньги в обычные.
А зачем? Вы можете заплатить за услуги дизайнера, который нарисует уникальное
оформление для вашего сайта, вы можете пополнить счет мобильного телефона, мо¬
жете купить какую-то вещь, например, новый монитор, телевизор или акустическую
систему для вашего компьютера. Таким образом, вам вообще не придется платить на¬
логи. Их заплатит кто-то другой, а именно продавец того самого телевизора, когда
будет переводить деньги на свой банковский счет.Однако не нужно надеяться, что вам таким образом вообще удастся всех перехи¬
трить. У всего есть свои ограничения. Теоретически никаких ограничений на размер
кошелька нет. В вашем электронном кошельке может быть хоть миллион долларов.
Но что с ним делать? Скупить весь интернет-магазин ноутбуков? Зачем они вам? А ку¬
пить что-то крупное, например, недвижимость или автомобиль, не получится, потому
что, увы, автосалоны и агентства продажи недвижимости не работают с WebMoney и
другими ЭПС. К тому же для совершения такой сделки все равно нужно идентифи¬
цировать вас, т.е. вы должны указать свои ФИО и ИНН. Так что стать миллионером
только на ЭПС у вас вряд ли получится.С другой стороны, для мелкого обмена средствами в Интернете система WebMoney
(это самая популярная платежная система, хотя есть и другие) — именно то, что нуж¬
но. Представим, что вы тот самый дизайнер, который продает собственные темы для
сайтов. Готовая тема (не индивидуальная разработка, а именно уже готовая тема) не
может стоить дорого, пусть 20—30 долларов. Представим, что у вас ее купили 10 чело¬
век. Даже если они отправят вам деньги обычным банковским переводом или даже
почтовым переводом, то вам нужно будет сходить в банк 10 раз. А не пойти вы не
можете — иначе, как вы узнаете, что человек отправил деньги? Я тоже могу сказать,
Поисковая оптимизация и заработок в Интернете195что отправил вам на карточку деньги или прислать случайно сгенерированный номер
якобы банковского перевода. А когда вы придете в банк, то узнаете, что такого пере¬
вода нет и быть не может!Вам нужно будет потратиться на проезд, а также с тех 20-30 долларов банк вычтет
сумму за перевод. В итоге вы уже получите 17-27 долларов. И за 10 тем вы получите
170-270 долларов, а не 200-300 долларов. А ведь вам нужно купить новую видеокарту
за 300 долларов, и за 270 вам ее никто не продаст! А вот когда все эти платежи будут
переведены на ваш электронный кошелек, то вы сможете отправить всю совокупную
сумму в интернет-магазин и получить свою желанную видеокарту почтой. И все это,
не выходя из собственной квартиры! Очень удобно, не правда ли?К тому же, часто за регистрацию на сайте (или за отказ от рекламы) нужно запла¬
тить определенную сумму. Сумма довольно небольшая, скажем 1 доллар. Но комис¬
сия банка за перевод составит 3-4 доллара (это уже проверено). Так что смысла идти
в банк нет, проще купить карточку пополнения электронного кошелька, пополнить
свой кошелек и отправить деньги с него.Используя ЭПС, можно покупать не только товары (сейчас в Интернете можно ку¬
пить все что угодно, правда, максимальная сумма товара ограничивается нескольки¬
ми тысячами долларов, более дорогие товары нужно покупать или по безналу или за
наличность), но и заплатить за те же коммунальные услуги, что тоже очень удобно.Стоит ли доверять электронному кошельку? При соблюдении определенных пра¬
вил безопасности — да. Прежде всего, нужно установить хороший антивирус и бранд¬
мауэр, чтобы вирусы и троянские программы не своровали ключи для доступа к ко¬
шельку и ваш пароль, соответствующий ключам.Сразу после установки программы WebMoney Keeper нужно сделать резервные ко¬
пии файлов ключей (*. kwm) и кошельков (* . pwm). Резервную копию лучше держать
на флешке в безопасном месте. Помню, в прошлом году у меня вышел из строя жест¬
кий диск и файлы, необходимые для доступа к своему электронному кошельку, я по¬
терял. А ведь там была приличная сумма! Так что не повторяйте моих ошибок.Это два основных правила безопасности. А как же мошенники? Воспользуйтесь
здравым смыслом при совершении сделки. Обмануть вас можно и на улице, так что от
мошенников никто не застрахован. Чтоб хоть как-то застраховать себя от мошенни¬
ков, можете отправлять деньги с кодом протекции. Потенциальный мошенник уви¬
дит, что вы отправили деньги, но пока он не знает код протекции, он их не получит.
А вы сообщите ему код протекции только после того, как убедитесь в том, что он вы¬
полнит свои обязательства (или уже выполнил).10.4.2. Кратко о WebMoneyОбщая информацияКроме системы WebMoney, есть и другие ЭПС, например, ЯндексДеньги, PayPal,
Деньги@шаП.ги и др. Все эти платежные системы имеют свои преимущества и недо¬
статки. Здесь мы будем рассматривать WebMoney потому, что она распространена не
только на территории бывшего СССР, но и на Западе, так что WebMoney — это наи¬
более универсальный вариант.Зайдите на сайт системы — http: //webmoney. ru. Данный сайт станет вашим
основным источником получения информации об этой системе. Я не буду в книге
еще раз описывать все существующие способы ввода и вывода денег, поскольку все
196Гпава 10это и так подробно и понятно расписано на сайте. А ведь вы платили деньги за уни¬
кальную информацию (т.е. за книгу), а не за то, что можно и так бесплатно прочитать
в Интернете. В данной главе мы рассмотрим только то, на что вам нужно обратить
особое внимание. Все это тоже есть на сайте webmoney. ru, но вы на эти сведения,
скорее всего, просто не обратите внимания — до тех пор, пока не случится непопра¬
вимое.Установка WebMoney Keeper ClassicНачнем с установки WebMoney. Существует несколько версий клиента WebMoney:
WebMoney Keeper Classic, WebMoney Keeper Lite и WebMoney Keeper Mobile. Пер¬
вая — это классический Windows-клиент, который устроит большинство пользовате¬
лей. Вторая — это веб-интерфейс управления своим электронным кошельком. Lite-
версию удобно использовать, если вы хотите получить доступ к своему кошельку с
любого компьютера, а не только с того, где установлена программа WebMoney Keeper
Classic. Иначе говоря, с помощью WebMoney Keeper Lite вы сможете управлять своим
кошельком с любого компьютера, подключенного к Интернету. Lite-версия подойдет
также Linux-пользователям, ведь для Linux пока не разработана классическая версия
программы. Третья версия, WebMoney Keeper Mobile, подходит для установки на мо¬
бильный телефон. Ваш электронный кошелек будет всегда с вами. По крайней мере,
до тех пор пока вы не потеряете свою мобилку.Какую версию выбрать — решать вам, но в книге будет описана программа
WebMoney Keeper Classic.Скачайте и установите программу. Во время установки внимательно читайте ин¬
струкции программы установки и выполняйте их. Если программа просит добавить
корневой сертификат, то добавьте его, даже если вы не знаете, что это такое. Во вре¬
мя регистрации (она абсолютно бесплатная) вам нужно указать фамилию, имя, отче¬
ство (можно указать, сами понимаете, совершенно другие данные, если чего-то опа¬
саетесь), свой электронный адрес и номер мобильного телефона. Последние данные
нужно указывать реальные, поскольку на ваш адрес и на мобильный телефон будет
выслан код активации.ПримечаниеА что если вы собираетесь заняться электронной коммерцией? Тогда важно не только
указать свои реальные данные, но и получить аттестат на ваш кошелек. Если кошелек
аттестован, его владельцу можно доверять. О том, как получить аттестат, можно про¬
читать на сайте http://webmoney.ru.Во время регистрации программа сообщит вам WMID — это ваш идентификатор в
системе. Это не конфиденциальная информация, но и совершенно не нужно никому
сообщать ваш WMID. Все равно от него толку мало, для перевода денег вам нужно
знать номер вашего электронного кошелька, а их у вас может быть несколько. Все
электронные кошельки, созданные Ёами, будут привязаны к вашему WMID. WMID
указывается при входе в программу вместе с паролем, указанным при установке.
Поисковая оптимизация и заработок в Интернете197Создание кошельковИтак, вы ввели код активации, полученный по SMS, и через несколько секунд
WM Keeper готов к использованию. На рис. 10.1 показано основное окно программы
WM Keeper. У меня создано два кошелька: Z-кошелек и U-кошелек. Z-кошелек ис¬
пользуется для хранения виртуальных долларов, U — для виртуальной гривны. Также
вы можете создать кошельки для евро (Е-кошелек) и рубля (R-кошелек). Создайте все
необходимые вам кошельки. Для этого выберите команду Меню^Кошельки^Создать
новый, откроется диалоговое окно Создание кошелька, показанное на рис. 10.2. Как
видно из этого рисунка, вы можете создать самые разнообразные кошельки, даже ко¬
шелек для хранения виртуального золота.(ьKoftsnicbenfeo 0ems Wtoia-yevidi {dhsSabs}, BL: 2, Tls GК^ре.гснд-к'Гс ^ошедьки ■
fS Создать igt Пополнить г. :/ п>г-t.Jf: Входящие; I: \'МЩ. WebMo гщ\
Ы | |§§. МенюКошелек^гриенаOnlineСуша Номер . Дзтасоздэния.
18.34 U635543762S59 2010,01,03 14:0511.08 2403231881599 2010,01,05 14:05v0] f Eiii; и 5ечзн!.'я по настрой' сшсмгсностРис. 10.1. Основное окно программы WM KeeperСоздание WebHoney-кошелькаre fspt’f * Ti'l о„ег=ь - /'Ш-ЖеЬМопеу^алюты.:./:;'/.; -ь .;■/.. “ ' ..ГЛуУ& -Згчгигагеит EUR\Z T’Z <;гл 1 eч s* sa^e-t \Л<2 'сгя rpccav 5
vf 'l ■■’•c.‘sane“T l-r-'nfpsfr-?r'l/t'i'..: - 'Oi i L.’mTTPuc. 10.2. Создание нового кошелька
198Гпава 10Вы можете создать несколько кошельков для одной и той же валюты, например,
несколько Z-кошельков. Один вы будете использовать для получения средств за раз¬
мещение рекламы на сайте, а второй — для всех остальных начислений. Хотя, учиты¬
вая, что при переводе денег с одного кошелька на другой, с вас взимается комиссия,
лучше хранить все средства одной валюты в одном кошельке.Получить деньги очень просто — вы увидите пополнение своего счета как только
вам кто-то отправит деньги. Кстати, номера кошельков — это публичная информации
и вы ее должны сообщить другим пользователям системы для перевода вам денег.Операции с кошелькамиПерейдите в окне программы WM Keeper на вкладку Кошельки (рис. 10.3) и щел¬
кните на любом из ваших кошельков правой кнопкой мыши. Вы увидите операции,
доступные над этим кошельком.Kolisnichenko Denis Nikolayevich (tihstlabs), BL: 2, TL; О
* - ... " - "'; ^гривнаКошельки % Mo*, wecf'tore*J* Пополнить l Щ Меню ▼Сумма Номер . ' Дата создания
1R.34 U635548762559 2010,01,08 14:0511,08 Z40S2S1881599- 2010,01,03 Н;05Online . (gj 3?4б4Ш63гР!Есть zai »г«энич пс изстрокаг i се:спгснгггиРис. 10.3. Вкладка Кошельки• Передать WM — используется для отправки денег другому участнику систе¬
мы или на банковский счет (например, когда вы выводите деньги себе лично).
Затем потребуется ввести реквизиты банковского счета или номер кошелька
получателя. В последнем случае важно, чтобы совпадал тип кошельков — нель¬
зя отправить деньги с WMZ-кошелька на WMR-кошелек напрямую, следует
сначала обменять WMZ на WMR, и только потом отправить деньги на WMR-
кошелек получателя.• Пополнить — раньше карточки пополнения WebMoney были дефицитом, сей¬
час их можно купить в свободной продаже практически в каждом городе. Ищи¬
те карточки пополнения WebMoney в компьютерных магазинах, в магазинах с
логотипом WebMoney и в магазинах розничной продажи карточек пополнения
счетов мобильных телефонов.
Поисковая оптимизация и заработок в Интернете199• Обменять WM* на WM* — как уже было отмечено, чтобы отправить деньги, ва¬
люта кошельков отправителя и получателя должна совпадать. Полная аналогия
с банковским счетом. Вы не можете отправить средства с долларового счета на
счет в рублях. Если вам нужно отправить деньги на WMU-кошелек, а у вас есть
только WMZ, то сначала нужно создать WMU-кошелек, если он еще не создан,
затем обменять WMZ на WMU. Однако в действительности использовать встро¬
енный в систему WebMoney обмен нужно только в крайних случаях — предла¬
гаемый курс вас не порадует. Лучше всего использовать специализированный
пункт электронного обмена — там курс значительно выше. Я пользуюсь услу¬
гами пункта http: / /autoconverter. ru. Однако обменять деньги получается
не всегда. Зайдите на сайт http: / /autoconverter. ru и вы поймете, о чем я
говорю. Напротив каждой валюты выводится запас — сколько той или иной
электронной валюты осталось в обменнике. Если, скажем, в обменнике оста¬
лось всего 200 электронных гривен (WMU), то обменять 100 WMZ вы уже не
сможете. В этом случае нужно или искать другой обменник, или воспользовать¬
ся встроенной системой обмена в WebMoney, которая работает всегда.• Создать — создание нового кошелька.• Копировать номер кошелька в буфер — очень удобно, когда вам нужно отпра¬
вить номер кошелька кому-то для оплаты ваших услуг.• История — сведения о всех операциях с вашим кошельком.• Свойства — свойства кошелька (ничего интересного там нет).• Настроить меню — позволяет настроить меню WM Keeper.Вкладка Корреспонденты содержит список корреспондентов, т.е. всех, кому вы
отправляли деньги. Вкладка Входящие — различные входящие сообщения: от других
участников системы, от самой системы (например, требование ввести код протекции
для разблокирования платежа). На вкладке Мои WebMoney вы получите различную
полезную информацию, в том числе и о том, как получить аттестат.Создание резервной копии ключейИтак, вы создали все необходимые кошельки и уже более или менее разобрались с
программой. Пока программа WM Keeper все еще работает, нужно сделать резервную
копию ключей, иначе при “падении” жесткого диска, переустановке Windows и дру¬
гих возможных ЧП вы рискуете потерять доступ к своему кошельку.Выберите команду меню Инструменты^Параметры программы и в открывшемся
окне перейдите на вкладку Безопасность (рис. 10.4). Щелкните на кнопке Сохранить
ключи в файл. В очередном раскрывшемся окне (рис. 10.5) выберите месторасполо¬
жение ключей (желательно создать новый каталог), введите пароль (пароль не должен
совпадать с тем, который вы используете для входа в Keeper) и установите флажок
Копировать файл кошельков. Щелкните на кнопке Да.После этого в созданном вами каталоге будет два файла — один с расширением
. kwm, а другой — с расширением . pwm. Скопируйте эти два файла на флешку и за¬
прячете ее подальше — это конфиденциальная информация (ключи не должны по¬
пасть в руки злоумышленников).
200Гпава 10Параметры программыЗдесь можно настроить параметры безопасности, внешний вид it
поведение программыБезопасностьlQr^mpimf:Kpsmrbk-\ Pfagi' Ключи и пароль -: Место хранения ключей: ' Этот компьютер ; Изменить..,; Сиенитькжэчи...i Сохранить ключи в файл- .Иомечмтъп«эагь, ,Посмотреть отчет ^ б^^пзгчости..,; Во^ти в ли-тый кабинет на сер&тое E-num.,>#jИспользовать актива^ю u'efcMo' е/ Keeper при вуодс в о’стему LL-
л?; Дат оизти^еская генерация rasa протекшиEjsssi)Рис. 10.4. Параметры безопасности программыКозПОД"-Сохранение ключ ей доступа в файлЭтот файл потребуется вам каждый раз при переносе WebMoney Keeper Class :
др<го“‘ комг'-еютер, изменении конфигурации ОС или оборудования,Бережно храните сЬайл ключей и запишите код доступа к нему.it",я файла ключей: С•.\\V:16322.kwriзаступа к файлу ключей: - **#*•***•!едашение кода доступа: *****«*••• . ; J; Копировать файл кошельков . - - - -iSJ? .. J I!Не1Рис. 10.5. Создание резервной копии ключей10.4.3. Дополнительная информация по WebMoneyОбязательно прочитайте следующие источники, если вы собираетесь заниматься
электронной коммерцией.• http://www.dkws.org.ua/index.php?page=show&file=a/eps/-eps— це¬
лый раздел моего сайта посвящен электронным платежным системам. Здесь
вы найдете не только сравнение различных систем, но и рекомендации по их
Поисковая оптимизация и заработок в Интернете201практическому использованию. В общем, все, что нужно знать вам о платеж¬
ных системах, вы найдете в разделе ЭПС моего сайта.• http://wiki.webmoney.ru/wiki/list/WM+Keeper+Classic — все статьи,
посвященные использованию классической версии Web Money Keeper.• http: //advisor.wmtransfer.com/Description.aspx — использование про¬
граммы WebMoney Advisor. WebMoney Advisor — расширение для веб-браузера,
разработанное для пользователей платежной системы WebMoney Transfer. При¬
ложение позволяет определить, является ли посещаемый вами сайт участни¬
ком системы WebMoney, а также определить, стоит ли вам связываться с этим
сайтом. Если значок сайта зеленый, то вы можете доверять этому интернет-
магазину, если желтый, то есть претензии других пользователей (может, лучше
купить товар в другом магазине?), а если красный — закройте сайт как можно
быстрее и проверьте ваш компьютер на наличие вирусов. В общем, программа
полезная.• http://wiki.webmoney.ru/wiki/show/Perekhod_na_drugoy_kompyuter_
pervyy_zapusk — здесь вы найдете подробнейшую информацию о том, как
перенести вашу программу WebMoney Keeper на другой компьютер, если воз¬
никла такая необходимость. А необходимость может быть связана даже не с по¬
купкой нового компьютера, а с переустановкой Windows или покупкой нового
жесткого диска. Вот только если вы не сделали резервную копию ключей (как
было показано ранее), толку от этой информации будет мало.10.4.4. Как не стать жертвой мошенников в СетиВы же не хотите подарить все заработанные на рекламе деньги какому-нибудь мо¬
шеннику? Данный раздел даже более важен, чем использование самого WebMoney
Keeper! Ведь, в крайнем случае, об использовании WebMoney Keeper всегда можно
прочитать на сайте системы, а вот приведенную ниже информацию вы не найдете ни
на одном сайте платежной системы.Представляю вашему вниманию самые распространенные мошеннические схемы.
Данные схемы действуют не только в Сети, но в реальном мире — везде, где есть люди
и деньги.1. Получите письмо — вы получаете письмо, как правило, на английском языке
примерно такого содержания.■ Умер ваш дальний родственник (о существовании которого вы даже и не по¬
дозревали), и он оставил вам завещание в виде несколько миллионов долла¬
ров на счету никому неизвестного офшорного банка — об этом можно толь¬
ко мечтать. К сожалению, такое бывает разве что в фильмах или мечтах. Вас
просят связаться с мошенниками по телефону. Как минимум, в конце меся¬
ца вам придет счет за телефонные переговоры в несколько сотен долларов
(а может, и больше!). Как максимум, вас могут “развести” еще на что-то.■ Умер человек, у которого нет родственников — в этом случае с вами связы¬
вается якобы не очень честный сотрудник банка, который предлагает вам
поделить его состояние. Он вам якобы отправит деньги на ваш счет, а вы
должны будете отправить ему определенный процент с этой суммы. И в чем
подвох? Да в тех же телефонных переговорах.
202Гпава 10■ Ваш WMID (или счет в банке) атакован хакерами, предоставьте пароль (или
PIN-код платежной карты) для ревизии вашего аккаунта — сообщение по¬
добного плана может быть якобы отправлено службой поддержки WebMoney
или службой безопасности банка. Знайте: ни служба подцержки Web Money,
ни СБ любого уважающего себя банка не рассылает сообщения подобного
характера. И тем более не стоит передавать пароль и другие конфиденциаль¬
ные данные (в том числе серию и номер паспорта) посторонним лицам!2. Работа на дому — кто же не хочет подзаработать? А тут еще обещают высокую
зарплату (от несколько сотен до нескольких тысяч долларов) за относительно
простые действия (например, рассылка электронной почты), не требующие
никаких особых навыков. Однако за пакет обучения (или аттестацию, или еще
что-то) вас просят отправить определенную сумму (как правило, небольшую
5-15 долларов) на указанный электронный кошелек. В лучшем случае вы по¬
лучите инструкции о том, как “развести” еще парочку собратьев по несчастью.3. Поздравляем, вы миллионный посетитель — вам приходит письмо, как правило,
тоже на английском, в котором говорится, что вы зашли на такой-то сайт и
стали миллионным (тысячным, первым и т.д. — число не играет особой роли)
посетителем. В итоге вы выиграли автомобиль (или еще что-то, большое и до¬
рогое). Но за доставку “приза” в Россию (Украину) нужно заплатить круглую
сумму денег. Сумма действительно будет крупной — вполне может быть, что
несколько тысяч долларов (иначе вы просто не поверите, доставка автомобиля
не может стоить 15 долларов). Некоторые легковерные люди действительно
отправляют деньги, которые уходят безвозвратно в неизвестном направлении,
и при этом еще долго надеются, что им действительно будет выслан их авто¬
мобиль.4. Стань участником финансовой пирамиды — вас агитируют (или по электронной
почте, или на каком-то сайте) стать участником финансовой пирамиды. Вы от¬
правляете на несколько кошельков небольшую сумму денег, потом распростра¬
няете такое же письмо очередным жертвам, заменяя один из номеров кошель¬
ков своим собственным. В итоге вам сулят баснословные прибыли за счет оче¬
редных жертв — вы получаете деньги не только с тех, кого привлекли вы, но и с
тех, кого привлекли ваши жертвы. Как правило, если кто и получает прибыль,
так это мошенники — верхушка пирамиды. А вы, в лучшем случае, потеряете
несколько десятков долларов и личное время, проведенное за компьютером в
поисках чуда. Может, даже получится заработать — ничего не исключено, но
пирамида существует до тех пор, пока ее не разоблачат или ее создатели не на¬
думают ее свернуть.5. Инвестиции и инновации — данный развод рассчитан на людей с определенным
достатком и свободными взглядами на бизнес. Вам предлагают сделать инве¬
стиции в какое-нибудь революционное изобретение. Вам обещают, что инве¬
стиции начнут приносить прибыль уже спустя полгода, а еще через полгода вы
станете миллионером или даже миллиардером. На самом же деле мошенники
исчезнут сразу же после получения ваших денег.6. Дешевый автомобиль — в последнее время есть множество сайтов, где можно
купить и продать б/у автомобиль. На некоторые предложения уж слишком
Поисковая оптимизация и заработок в Интернете203низкая цена. Смотришь — машина вроде бы неплохая, но заметно дешевле,
чем остальные предложения. Звонишь, чтобы узнать, почему так дешево, а
денежки со счета тю-тю. А все дело в том, что вы позвонили на специальный
номер, который похож на самый обычный номер, но тарификация по нему со¬
вершенно другая. А мошенники, понятное дело, вас не предупредили, что это
коммерческая линия и стоимость одной минуты разговора гораздо дороже, чем
вы можете себе представить.7. Успей купить — заходите в интернет-магазин, а там акция или распродажа. Вот,
остался последний мобильный телефон, успей купить, цена сверхнизкая! Далее
возможны следующие сценарии развития этой ситуации.■ Вы отправляете деньги без кода протекции (так того требует продавец), а те¬
лефон вам вообще не присылают.■ Вы отправляете деньги, но получаете б/у или просто неработающий телефон.■ Вы отправляете деньги, но потом видите, что в другом магазине дешевле и
без всяких акций.■ Вам присылают дешевую подделку телефона. Это характерно для дорогих
товаров, например, для телефонов Vertu. Но ведь мы все знаем, что в Китае
делают дешевые подцелки этой марки на базе телефона Nokia. В результате
за аппарат, который в оригинале стоит 8 тысяч долларов, на сайте просят
1000 долларов, а покупают его мошенники за 50-100 долларов.Прочитать о других способах мошенничества можно на моем сайте. В сущности,
приведенные там случаи являются производными от перечисленных выше, но все
равно вам не помешает с ними ознакомиться, хотя бы ради общего развития:http://www.dkws.org.ua/phpbb2/viewtopic.php?t=387210.5. Вместо заключенияКаждый читатель этой книги может рассчитывать на посильную помощь автора на
форуме сайта www. dkws. org. ua. Заходите на форум, не стесняйтесь задавать вопро¬
сы. Помогу, чем смогу !Но на этом книга не заканчивается. Не забывайте, что вам еще предстоит про¬
читать четыре приложения. В первом описан конфигурационный файл php. ini,
что пригодится при настройке сервера вручную. Во втором — приведены команды
изменения прав доступа к файлу в UNIX, они вам пригодятся при работе с UNIX-
сервером (будь-то локальный сервер под управлением Linux или сервер хостера на
базе FreeBSD). Третье приложение очень важно — в нем описаны основы языка
HTML, что пригодится вам при разработке собственных тем оформления. В четвер¬
том приложении объясняется, как остаться анонимным в Сети.
ПРИЛОЖЕНИЕ АФайл настроек РНРЛистинг файла /etc/php5/apache/php. ini[РНР]r/rr/rrtrrr; ПРЕДУПРЕЖДЕНИЕ ;trtrrr/r/rr; В этом листинге приведены настройки по умолчанию для новой
; инсталляции РНР. По умолчанию РНР настраивается для
; разработки сценариев, но не для разворачивания сервера.; Эту конфигурацию удобно использовать для отладки ваших
; сценариев. Из соображений безопасности рекомендуем
; ознакомиться со следующим руководством по защите
; веб-сервера, на котором установлен интерпретатор РНР:; http://php.net/manual/en/security.php.
tltllltlttllltlltlt
; О файле php.ini ;tttttrilirrtirilttl; В данном файле описываются настройки, определяющие поведение; РНР. Чтобы РНР мог прочитать его, он должен называться; 'php.ini'. РНР ищет этот файл сначала в текущем рабочем; каталоге, потом в пути поиска из переменной окружения PHPRC,; а затем в каталоге конфигурации, указанном при сборке РНР; (именно в таком порядке).; Под Windows каталогом сборки будет каталог Windows. Указать; другой каталог можно с помощью опции -с в крмандной строке./; Синтаксис этого файла очень прост. Пробелы и строки,; начинающиеся с точки с запятой, игнорируются (как вы уже,; наверное догадались).; Заголовки разделов, т.е. [Foo] тоже игнорируются, возможно; они будут играть роль в будущем.; Директивы конфигурации определяются так:; директива = значение; Имена директив чувствительны к регистру! Поэтому foo=bar -; это не FOO=bar.г; Значение директивы может быть строкой, числом или константой
; РНР, например, E_ALL или М_Р1, одной из INI-констант (On,
Файл настроек РНР205Off, True, False, ; Yes, No and None), выражением (например,
E_ALL & ~E_NOTICE) юти строкой, заключенной в кавычки
("foo").Выражения в INI-файле ограничены следующими логическими
операторами:I bitwise OR
& bitwise AND
~ bitwise NOT
! boolean NOTЛогические флаги могут устанавливаться (включаться) с
помощью значений 1, On, True или Yes."Выключить" логическую директиву можно значениями 0, Off,
False или No.Для указаний пустой строки просто ничего не указывайте или
укажите служебное слово попе, например:foo = ; foo - пустая строкаfoo = none ; foo - пустая строкаfoo = "none" ; foo - содержит значение "norre"Если вы используете константы в качестве значения и эти
константы принадлежат динамически загружаемому расширению
(например, PHP-расширению юти Zend-расширению), вы должны
использовать зти константы после загрузки расширения.Об этом файле - продолжение ;rtrrifrirttrrtrrtrВсе значения в файле php.ini-dist соответствуют значениям по
умолчанию, встроенным в РНР, и будут использоваться, даже
если файл php.ini не существует или вы удалите какие-то
директивы из php.ini. Если вы хотите изменить поведение РНР,
вам нужно явно изменить необходимые директивы конфигурации.; Настройки языка ;rrrtfrrrrrrrrrifitff; Включает движок РНР под управлением Apache,
engine = On; Включает совместимость, с режимом Zend Engine 1 (РНР 4.x)
zend.zel_compatibility_mode = Off; Разрешает тег <?. Это сокращенная версия тега. Если
; выключить следующую директиву, то можно будет использовать
; только полную версию тега - <?php юти <script>. Другие теги
; РНР не будет распознавать.; Примечание: короткие теги использовать не рекомендуется из
: соображений совместимости вашего кода с другим сервером.; При переносе приложения может возникнуть ситуация, когда на
206Приложение А; другом сервере не поддерживаются короткие ‘теги и ваши; сценарии работать не будут.short_open_tag = On; Разрешает теги в стиле ASP <% %>.asp_tags = Off; Точность чисел с плавающей запятой (floating point numbers).
precision = 12; Включить совместимость с 2000 годом, это избавит вас от; проблем с некоторыми старыми браузерами, которые до сих пор; живут в 1999 году
y2k_compliance = On; Буферизация вывода позволяет вам отправлять строки; заголовков (включая Cookies) даже после отправки содержимого; тела, но ценой замедления работы РНР. Вы можете включить; буферизацию вывода во время выполнения вызовом функций; буферизации. Вы также можете включить буферизацию вывода для; всех сценариев установкой следующей директивы в On.; Если вы хотите ограничить максимальный размер буфера, то; вместо On укажите значение в байтах, например,; output_buffering=4096.
output_buffering = Off; Вы можете перенаправить весь вывод вашего сценария функции.; Например, если вы установите output_handler в; "mb_output_handler", кодировки символов будут "прозрачно"; конвертированы в указанную кодировку.; Установка обработчика вывода автоматически включает; буферизацию вывода.; Примечание: если вы хотите написать портируемый сценарий,; который без проблем работал бы на разных серверах, не; используйте эту директиву INI-файла, вместо этого укажите; обработчик вывода с помощью функции ob_start(). Эта; директива может вызвать проблемы на ровном месте.; Используйте ее только в том случае, если вы знаете, что; делаете.; Примечание: нельзя использовать оба обработчика -; "mb_output_handler" и "ob_iconv_handler", и нельзя; использовать "ob_gzhandler" с "zlib.output_compression".
;output_handler = "Прозрачное" (незаметное) сжатие вывода; с помощью библиотеки zlib.; Возможные значения для этой опции 'off', 'on' или же размер; буфера, используемого для сжатия (по умолчанию - 4 Кб).; Примечание: вместо стандартного обработчика вывода вам нужно; использовать обработчик zlib.output_handler, иначе вывод; будет поврежден.; Примечание: сжатие вывода также замедляет работу вашего; сервера. Конечно, если меньший размер вывода для вас более; важен, чем производительность, можно использовать сжатие.
zlib.output_compression = Off
;zlib.output_compression_level = -1; Вы не можете указывать дополнительные обработчики вывода,; если опция zlib.output_compression активна. Данная опция; используется, как и output_handler, но в другом порядке
Файл настроек РНР207; (т.е. задает обработчик вывода для контента, сжатого zlib);zlib.output_handler =; Неявный вызов flush(). Включение этой опции аналогично
; выполнению функции flush() после выполнения каждого
; оператора echo() юти print() и после каждого HTML-блока.; Включение этой опции существенно уменьшает
; производительность сервера, рекомендуется включать эту; директиву только для отладки работы сервера.
implicit_flush = Off; Функция, указанная директивой unserialize_callback_func,; будет вызываться, если функция unserialize найдет; неопределенный класс, который она не может обработать.; Учтите, что если указанная функция не содержит или не; реализует отсутствующий класс, будет выведено; соответствующее предупреждение, поэтому установите значение; этой директивы, только если вы действительно реализуете; собственную функцию unserialize.
unserialize_callback_func=; Следующая директива задает точность функции serialize.; Значение 100 используется по умолчанию.
serialize_precision = 100; Позволяет включить возможность принудительной передачи; аргументов по ссылке в момент вызова функции. Этот метод; устарел и, скорее всего, не будет поддерживаться в будущих; версиях PHP/Zend. Если вы хотите проверить, будет; ли ваш код совместим с будущими версиями РНР, установите; значение Off для этой директивы (получите предупреждение; каждый раз, когда аргумент будет передан по значению,; а не по ссылке).
allow_call_time_pass_reference = On
/; Безопасный режим
/; Вот здесь я позволю себе собственный комментарий.; Как показывает практика, если вы включите безопасный режим,; то намного безопаснее ваш сервер не станет. Вместо; воображаемой защиты вы получите проблемы при установке; многих веб-приложений. Вы только попробуйте установить; ту же Joomla! при включенном безопасном режиме. Если у вас; получится, расскажите мне, как вы это сделали :)./; Дополнительную информацию вы можете найти по адресу; /usr/share/doc/php5-common/README.Debian.securitysafe_mode = Off; По умолчанию безопасный режим проводит сравнение UID; пользователя, открывающего файл. Если вы не хотите, чтобы; проверялся еще и идентификатор группы (GID), выключите; следующую опцию: safe_mode_gid = Off; Когда безопасный режим включен (safe_mode=On), будет; проводиться проверка UID/GID файлов, подключаемых из этого; каталога и его подкаталогов. Данный каталог должен быть
208Приложение А; также указан в директиве include_path
safe_mode_include_dir =; When safe_mode is on, only executables located in the; safe_mode_exec_dir will be allowed to be executed via the; exec family of functions.
safe_mode_exec_dir =; Установка определенных переменных окружения - потенциально; опасное занятие. Но, если нужно, следующая директива; содержит список префиксов, разделенный запятыми, переменных; окружения. В безопасном режиме пользователь может только; изменять переменные окружения, имена которых начинаются с; префиксов, указанных здесь. По умолчанию пользователи; могут устанавливать переменные окружения, имена которых; начинаются с РНР_, например, PHP_FOO=BAR.; Примечание: если эта переменная пуста, РНР позволит
; пользователю устанавливать любые переменные окружения!; А это опасно, поэтому ни при каких обстоятельствах не
; удаляйте значение этой директивы!
safe_mode_allowed_env_vars = РНР_; Данная директива содержит список, разделенный запятыми
; переменных окружения, которые не могут быть изменены
; пользователем с помощью функции putenv(). Данные переменные
; окружения будут защищены, даже если директива
; safe_mode_allowed_env_vars разрешает изменять>любые
; переменные окружения.safe_mode_protected_env_vars = LD_LIBRARY_PATH
; Директива open_basedir, если установлена, ограничивает все
; операции с файлами, относящиеся к указанному каталогу и его
; подкаталогам. Эта директива имеет смысл, если используется
; отдельный конфигурационный файл для каждого виртуального
; сервера. Данная директива работает вне зависимости от того,; включен ли или выключен безопасный режим.; Примечание: использовать эту директиву не рекомендуется,; подробную информацию вы сможете найти в файле
; /usr/share/doc/php5-common/README.Debian.security
;open_basedir =; Данная директива позволяет вам отключать определенные
; функции из соображений безопасности.; Примечание автора книги: рекомендуется запретить следующие
; функции: popen,exec,system,passthru,proc_open,shell_exec
; disable_functions = "popen,exec,system,passthru,proc_open,
^shel^exec"; Данная директива работает вне зависимости
; от того, включен ли или выключен безопасный режим.
disable_functions =; Данная директива позволяет вам отключить определенные классы
; из соображений безопасности. Список имен классов разделяется
; запятой. На работу этой директивы не влияет значение
; директивы safe_mode
disable_classes =; Цвета для подсветки синтаксиса.(в*режиме подсветки/
Файл настроек РНР 209; синтаксиса)/highlight.string = #DD0000
/highlight.comment = IFF9900
/highlight.keyword = #007700
/highlight.bg = #FFFFFF
/highlight.default = #0000BB
/highlight.html = #000000; Если включена, запрос будет завершен, даже если пользователь
/ его отменил
; ignore_user_abort = On; Определяет размер кеша realpath, используемого РНР. Данное
/ значение должно быть увеличено, если вы хотите повысить
/ производительность PHP-приложений, открывающих большое
; количество файлов. Другими словами, если вы хотите
; установить систему управления контентом, которая хранит
; контент в файлах, а не в БД, тогда увеличьте это значение
; хотя бы до 32к./ realpath_cache_size=16k/ Время жизни (TTL) realpath-Kema в секундах. Если вы
/ установили CMS, которая хранит контент в файлах, а не в БД,; тогда вам нужно увеличить это значение, например, до 180.; realpath_cache_ttl=120\; Разное; Решите, будет ли веб-сервер в своих заголовках сообщать,; установлен РНР или нет на нем. По умолчанию эта директива
; включена (On), но я бы ее выключил (Off) - чем меньше
; информации о системе мы предоставляем, тем сложнее ее
; взломать.
expose_php = Onfrffft/r/ttrtr/trrtrrfri; Ограничение ресурсов ;/ / trrrrrrrrrrrrtttf/ffff; Максимальное время выполнения каждого РНР-сценария
max_execution_time = 30; Максимальное время, которое сценарий может потратить на
; обработку данных запроса
max_input_time =60 ;/ Максимальный уровень ввода
/max_input_nesting_level = 64; максимальный размер памяти, используемый сценарием
memory_limit = 16МОбработка ошибок и протоколирование ;error_reporting - это поле битов. Вы можете сформировать
определенный уровень вывода ошибок и предупреждения,
используя комбинацию следующих битов:E_ALL - все ошибки и предупрежденияE_ERROR - фатальные ошибки времени выполненияE_RECOVERABLE_ERROR - почти все фатальные ошибки времени
210Приложение А; выполнения; E_WARNING - предупреждения времени выполнения; (нефатальные ошибки); E_PARSE - ошибки времени компиляции; Е_ЮТ1СЕ - замечания времени выполнения (эти сообщения не; указывают непосредственно на ошибку, но могут помочь ее; найти, например, сообщить о неинициализированной переменной; E_STRICT - уведомления во время выполнения; E_CORE_ERROR - фатальные ошибки при запуске самого РНР; E_CORE_WARNING - предупреждения (нефатальные ошибки); при запуске РНР; E_COMPILE_ERROR - фатальные ошибки времени компиляции; E_COMPILE_WARNING - предупреждения времени компиляции; E_USER_ERROR - пользовательские сообщения об ошибках; E_USER_WARNING - пользовательские предупреждения; E_USER_NOTICE - пользовательские уведомления
}; Примеры:Г; - Показать все ошибки, кроме стандартных уведомлений;
;error_reporting = E_ALL & ~E_NOTICE
f; - Показать все ошибки, кроме уведомлений;error_reporting = E_ALL & -EJNOTICE | E_STRICT; - Показать только ошибки
/;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR
ЬIE_CORE_ERROR
t; Значение по умолчанию:
ferror_reporting = E_ALL & ~E_NOTICE; Вывод ошибок (как часть вывода в браузер). Из' соображений; безопасности рекомендуется выключить отображение ошибок,; а включить их протоколирование.; Дело в том, что сообщения об ошибках содержат дополнительные; сведения о структуре БД, что может быть использовано; злоумышленником для взлома сервера. Поскольку наша; конфигурация используется для отладки сценариев, удобно,; когда сообщения об ошибках выводятся сразу в браузер, но на; реальном сервере лучше выключить отображение ошибок (Off)
display_errors = On; Даже если директива display_errors включена, ошибки,; возникающие при запуске РНР, не отображаются. Если вы хотите; их увидеть, включите следующую директиву. Настоятельно; рекомендуется ее не включать или же включать только; на время отладки.
display_startup_errors = Off; Протоколирует ошибки в журнал (обычно в журнал сервера).; Эту опцию нужно включить, если вы выключили отображение
Файл настроек РНР211; ошибок, иначе вы не узнаете, какая ошибка произошла.
log_errors = Off; Максимальный размер сообщения об ошибке, вносимой в журнал.; По, умолчанию используется значение 1024, а значение 0
; позволяет не ограничивать сообщение об ошибке.
log_errors_max_len = 1024; Не протоколировать повторяющиеся сообщения в одном и том же
; файле, т.е. игнорирует повторяющиеся ошибки.
ignore_repeated_errors = Off; Игнорировать источник сообщения при игнорировании
; повторяющихся ошибок. Когда эта директива включена,; повторяющиеся ошибки из разных файлов или находящиеся в
; разных строках, не будут запротоколированы.
ignore_repeated_source = Off
;report_memleaks - On
;report_zend_debug = 0; Сохранить последнее сообщение об ошибке или предупреждение
; в переменной $php_errormsg (boolean).
track_errors = Off; Отключить включение HTML-тегов в сообщения об ошибках
; Примечание: никогда не используете эту функцию на реальном
; сервере.;html_errors = Off; Если директива html_errors включена (что полезно для
; отладки), РНР будет выводить ссылки на страницы
; документации, где приводится подробная информация о
; возникшей ошибке. Вы можете скачать руководство по РНР
; с сайта http://wvfw.php.net/docs.php и разместить на своем
; сервере. Тогда с помощью функции docref_root вы должны
; указать каталог, где находится локальная копия документации,
; а с помощью docref_ext можно указать расширение файлов.
;docref_root = "/phpmanual/";docref_ext = .html; Строка, предшествующая сообщению об ошибке
;error_prepend_string = "<font color=#ff0000>"; Строка, которая будет выведена после сообщения об
; ошибке; error_append_string = "</font>"; Протоколирует ошибки в указанный файл
;error^log = filename; Протоколирует ошибки с помощью syslog
;error_log = syslogrttrr/rrftrrr/trrirr; Обработка данных ;Примечание: track_vars ВСЕГДА включена, начиная с РНР 4.0.3
Задает разделитель аргументов, переданных РНР-сценариям
По умолчанию
arg_separator.output = "&amp;"Список разделителей, используемый РНР для разделения URL на
переменные. По умолчанию
212Приложение А; Примечание: каждый указанный символ воспринимается как
; отдельный разделитель.;arg_separator.input = "; &"; Данная директива описывает порядок, в котором РНР
; регистрирует данные, полученные через GET, POST, Cookie,; окружение (Environment) и встроенные переменные. Порядок
; указывается слева направо, каждое новое значение
; будет перезаписывать уже полученное. Если значение
; переменной $А было получено методом GET, а потом пришла
; POST-переменная А, то значение переменной $А будет
; перезаписано новым полученным значением:
variables_order = "EGPCS"; Будут ли EGPCS-переменные автоматически регистрироваться как
; глобальные переменные? Включение этой директивы потенциально
; опасно. Лучше ее отключить и писать сценарии с выключенной
; register_globals.; Подробное обсуждение, как работать с выключенной
; register_globals, вы можете найти на моем форуме:; http://www.dkws.org.ua/phpbb2/topicl314.html
register_globals = Off; Нужно ли регистрировать длинные массивы? Если вы хотите
; повысить производительность, выключите эту директиву (Off).; По умолчанию она включена.
register_long_arrays = On; Директива определяет, будет ли РНР объявлять argv&argc-
; переменные. Если вы хотите повысить производительность,; выключите эту директиву (Off). По умолчанию она включена.
register_argc_argv = On; Если включена, переменные' SERVER и ENV создаются при первом
; использовании (Just In Time), а не при запуске сценария,; в результате эти переменные будут содержать всегда
; актуальные данные (на момент вызова) - ведь с момента
; запуска сценария до момента запроса этих переменных
; окружения их значения могут измениться.
auto_globals_jit = On; Максимальрый размер POST-данных, принимаемых РНР
post_max_size = 8М
; "Волшебные кавычки" (Magic quotes)/; Волшебные кавычки для входящих по GET/POST/Cookie данных
magic_quotes_gpc = On; Волшебные кавычки для данных, сгенерированных во время
; выполнения, например, данные от SQL, от ехес() и т.д.
magic_quotes_runtime = Off
; Использовать Sybase-стиль кавычек
magic_quotes_sybase = Off; Автоматически добавлять файлы до и после любого
; РНР-документа. Полезно для вывода шапки и footer'а сайта,; но лучше это делать средствами сценария, а не через
; конфигурационный файл, иначе возникнут проблемы при
; "переезде" на другой сервер, где будет другой
; конфигурационный файл.
Файл настроек РНР213auto_prepend_file =
auto_append_file =; РНР всегда выводит кодировку символов по умолчанию и
; MIME-тип документа. Эти значения задаются ниже.; Кодировку рекомендуется изменить на utf-8 или windows-1251
; (смотря в какой кодировке вы планируете писать ваши
; сценарии, но в любом случае для русского языка iso-8859-l -
; далеко не самый лучший выбор).
default_mimetype = "text/html";default_charset = "iso-8859-1";always_populate_raw_post_data = Ontttltirilirritllttttltttl; Пути и каталоги ;rrrrrfrfffftifttrrftrrtti; UNIX: "/pathl:/path2";include_path = ".:/usr/share/php"r; Windows: "\pathl;\path2";include_path = ".;c:\php\includes"; Корневой каталог, содержащий PHP-страницы. Используется,; если указан
doc_root =; Пользовательский каталог, содержащий РНР-файлы.; Используется, если указан
user_dir =; Каталог, содержащий загружаемые расширения (модули); extension_dir = "./"; Включать или нет функцию dl(). Функция dl() некорректно; работает на многопотоковых серверах, например, на IIS или; Zeus, поэтому по умолчанию следующая директива отключена.; Примечание: это потенциально опасная функция,; лучше ее не включать.
enable_dl = Off; Если РНР запускается как CGI-приложение, директива: cgi.force_redirect рекомендуется из соображений; безопасности. Если она не определена, т.е. закомментирована,; то РНР включает ее по умолчанию. Вы можете выключить ее; на свой СТРАХ И РИСК. На IIS вы можете выключить ее,; на других серверах делать это не рекомендуется.; cgi.force_redirect = 1; Если cgi.nph включена, CGI всегда будет отправлять статус; 200 (все ок, ошибок нет).; cgi.nph = 1; Данная директива не имеет прямого отношения к веб-серверу; Apache, поэтому ее рассматривать не будем.; cgi.redirect_status_env = ;; cgi.fix_pathinfo предоставляет реальную поддержку; PATH_INFO/PATH_TRANSLATED для CGI.; Значение по умолчанию - 1.; cgi. fix__pathinfo=0; FastCGI для IIS (в случае использования WINNT в качестве ОС); К нам эта директива не имеет никакого отношения:
214Приложение А; 1) У нас Linux
; 2) У нас Apache; 3) Мы не собираемся использовать CGI
; fastcgi.impersonate = 1;; fastcgi.logging = О
;cgi.rfc2616_headers = Оrrririrrtrtirtttttirittttrrtr; Параметры загрузки файлов ;rt/rrrrrrtrr/rrrtrrrrrrrrrrt/; Разрешить (On) или запретить (Off) загрузку файлов
file_uploads = On; Временный каталог для загрузки файлов по HTTP. Если не
; указан, по умолчанию будет использоваться системный
; временный каталог.;upload_tmp_dir =; Максимальный размер загружаемого файла
upload_max_filesize = 2Мrrrrrtrrrrtrrrrtrr; Оболочки Fopen ;trrrrrrrrrrrrrrrrr; Если включена, разрешает открывать удаленные файлы, имена
; которых начинаются с указания протокола - http:// или ftp://
; Для удобства пользователей (и вас тоже, как разработчика),; не выключайте эту опцию, ничего опасного в ней нет.
allow_url_fopen = On; А вот подключение удаленных PHP-сценариев (с помощью
; include/require) из соображений безопасности лучше отключить
allow_url_include = Off; Определить пароль для анонимного FTP-пользователя (обычно
; ваш e-mail);from="john@doe.com"; Определить строку User-Agent
; user_agent="PHP"; Таймаут по умолчанию (для сокет-ориентированных потоков),; в секундахdefault_socket_timeout = 60; Если ваши сценарии работают с файлами, полученными о??; "Макинтошей" или ваш Apache-сервер запущен на Macintosh,; для корректного преобразования символов EOL (End Of Line); раскомментируйте следующую директиву:; auto_detect_line_endings = Offrrtr/rtffrrrrrfrrrrrrrrrrrr; Динамические расширения ;Если вы хотите загружать расширения автоматически,
используйте следующий синтаксис:extension=modulename.extensionНапример, в Windows:
Файл настроек РНР215; extension=msql.dll; ... или в UNIX:/; extension=msql.so
f; Обратите внимание: вы должны указать только имя файла
; расширения, не нужно указывать полный путь к этому файлу,; путь к каталогу с расширениями задается директивой
; extension_dir, описанной выше.; extension_dir.rrrrfrrrrrrrrrftrrrrr; Параметры модулей ;Ittirttltlirilllltlll[Date]; Определяет часовой пояс по умолчанию, используемый
; функцией date.;date.timezone =;date.default_latitude = 31.7667
;date.default_longitude = 35.2333
;date.sunrise_zenith = 90.583333
;date.sunset_zenith = 90.583333
[filter];filter.default = unsafe_raw
;filter.default_flags =[iconv];iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
[sqlite];sqlite.assoc_case = 0
[xmlrpc];xmlrpc_error_number = 0
;xmlrpc_errors = 0
[Pcre];PCRE library backtracking limit.;pcre.backtrack_limit=l00000
; Лимит рекурсии для библиотеки PCRE; Имейте в виду, что если вы установите для этого параметра
; слишком большое значение, рекурсия может "забить" весь стек,
; что вызовет крах РНР, поскольку будет превышен лимит стека,; выделенный интерпретатору РНР операционной системой.;pcre.recursion_limit=100000
[Syslog]; Нужно ли определять различные syslog-переменные, например,; $LOG_PID, $LOG_CRON и т.д. Выключение этой директивы -
; отличная идея, особенно если нужно повысить
; производительность. Во время выполнения вы можете определить
; эти переменные с помощью вызова функции
; define_syslog_variables().
define_syslog_variables = Off
[mail function]
216Приложение А; Только для Win32
SMTP = localhost
smtpjport = 25
; Только для Win32
;sendmail_from = me@example.com; Только для Unix. Вы также можете указать аргументы sendmail
; (по умолчанию: "sendmail -t -i").;sendmail_path =; Дополнительные параметры, которые будут переданы
; исполняемому файлу sendmail. Эти параметры будут всегда
; заменять значение 5-го аргумента функции mail(), даже в
; безопасном режиме.;mail. force_extra__parameters =[SQL]sql.safe_mode = Off
[ODBC];odbc.default_db = Not yet implemented
;odbc.default_user = Not yet implemented
;odbc.default_pw = Not yet implemented
; Разрешить или запретить постоянные соединения
odbc.allowjpersistent = On; Проверить, действительно ли соединение перед повторным
; использованием
odbc.check_persistent = On; Максимальное количество постоянных соединений, значение -1
; означает неограниченное количество.
odbc.max_persistent = -1; Максимальное число соединений (постоянных и непостоянных).; Значение -1 - без ограничений/
odbc.max_links = -1; Обработка полей типа LONG. О означает passthru
odbc.defaultlrl = 4096/.Обработка бинарных (двоичных) данных. О означает passthru,; 1 - данные будут возвращены как есть, 2 - данные будут
; конвертированы в char.; Для подробной информации см. документацию по odbc_binmode и
; odbc_longreadlen.
odbc.defaultbinmode = 1
[MySQL]; Разрешить или запретить постоянные соединения
mysql.allowjpersistent = On; Максимальное количество постоянных соединений, значение -1
; означает неограниченное количество.
mysql.max_persistent = -1; Максимальное число соединений (постоянных и не постоянных),
; значение -1 означает - неограниченное
mysql.max_links = -1; Порт по умолчанию для функции mysql_connect(). Если не
; установлен, mysql_connect() будет использовать переменную
; $MYSQL_TCP_PORT или запись mysql-tcp в /etc/services
mysql.defaultjport =; Сокет по умолчанию для локальных MySQL-соединений. Если не
Файл настроек РНР217; указан, будут использоваться встроенные параметры
; по умолчанию.
mysql.default_socket =; Узел по умолчанию для mysql_connect() (не применяется в
; безопасном режиме).
mysql.default_host =; Пользователь по умолчанию для mysql_connect(); (не применяется в безопасном режиме).
mysql.default_user =; Пароль по умолчанию для mysql_connect(); (не применяется в безопасном режиме).; Примечание: очень плохая идея хранить пароль в этом файле!; любой пользователь может выполнить функцию
; get_cfg_var("mysql.default_password") и получить пароль
; по умолчанию. Поэтому лучше не указывать пароль здесь
mysql.default_password =; Таймаут для MySQL-соединения в секундах, -1 - не ограничено
mysql.connect_timeout = 60; Режим трассировки. Когда режим трассировки включен (On),; будут отображены предупреждения и ошибки для SQL
mysql.trace_mode = Off
[MySQLi]; Максимальное количество соединений, -1 - не ограничивается
mysqli.max_links = -1; Порт по умолчанию для функции mysqli_connect Если не
; установлен, mysql_connect() будет использовать переменную
; $MYSQL_TCP_PORT или запись mysql-tcp в /etc/services
mysqli.default_port = 3306; Сокет по умолчанию для локальных MySQL-соединений.; Если не указан, будут использоваться встроенные параметры
; по умолчанию.
mysqli.default_socket =; Узел по умолчанию для mysqli_connect() (не применяется
; в безопасном режиме)
mysqli.default_host =; Пользователь по умолчанию для mysqli_connect(); (не применяется в безопасном режиме).
mysqli.default_user =; Пароль по умолчанию для mysql_connect()не применяется
; в безопасном режиме).; Примечание: очень плохая идея хранить пароль в этом файле!; любой пользователь может выполнить функцию
; get_cfg_var("mysqli.default_password") и получить пароль
; по умолчанию. Поэтому лучше не указывать пароль здесь,
mysqli.default_pw =; Разрешить или запретить повторную установку соединенияmysqli.reconnect = Off[mSQL]; Разрешить или запретить постоянные соединения.
msql.allow__persistent = On; Максимальное количество постоянных соединений,; значение -1 - без ограничений.
218Приложение Аmsql.max_persistent = -1; Максимальное число соединений (постоянных и непостоянных),; значение -1 - неограниченное.msql.max_links = -1[0CI8]; включает привилегированные соединения (OCI_SYSOPER,; OCI_SYSDBA);oci8.privileged_connect = Off; Соединение: Максимальное число постоянных 0С18-соединений
; для каждого процесса. -1 - без ограничений
;oci8.max_persistent' = -1; Соединение: Таймаут для постоянного соединения. -1 означает,
; что постоянные соединения никогда не будут разорваны.;oci8.persistent_timeout = -1; Соединение: интервал для пинга, используется функцией
; oci_pconnect() для проверки, живо ли еще соединение.; Интервал задается в секундах, -1 отключает пинговку.
;oci8.ping_interval = 60; Тюнинг: эта опция включает кеширование и определяет размер
; кеша. Размер кеша задается количеством SQL-операторов
;oci8.statement_cache_size = 20; Тюнинг: включает предварительную выборку и устанавливает
; число записей, которые будут автоматически получены после
; выполнения оператора
;oci8.default_prefetch =10; Совместимость. Включение (On) означает, что oci_close(); не будет закрывать соединения, открытые с помощью
; oci_connect() и oci_new_connectО
;oci8.old_oci_close_semantics = Off
[PostgresSQL]; Разрешить или запретить постоянные соединения
pgsql.allow_persistent = On; "Битые" постоянные соединения обнаруживаются с помощью
; pg_pconnect(). Следующая директива позволяет включить
; автоматический сброс таких соединений,
pgsql.auto_reset_persistent = Off
; Максимальное количество постоянных соединений.; Значение -1 - без ограничений,
pgsql.maxjpersistent = -1; Максимальное число соединений (постоянных и непостоянных).; Значение -1 - без ограничений,
pgsql.max_links = -1; Игнорировать или нет уведомления PostgreSQL
pgsql.ignore_notice = 0; Протоколировать уведомления PostgreSQL или нет. Если
; pgsql.ignore_notice=0, модуль не может зарегистрировать
; уведомления.
pgsql.log_notice = 0
[Sybase]; Разрешить или запретить постоянные соединения,
sybase.allow_persistent = On; Максимальное количество постоянных соединений.
Файл настроек РНР219; Значение -1 - без ограничений,
sybase.max_persistent = -1; Максимальное число соединений (постоянных и непостоянных).
; Значение -1 - без ограничений,
sybase.max_links = -1;sybase.interface_file = "/usr/sybase/interfaces"; Минимальный уровень серьезности ошибки для отображения
sybase.min_error_severity = 10; Минимальный уровень серьезности сообщения для отображения
sybase.min_message_severity = 10
; Режим совместимости с РНР 3.0.; On - включен; Off - выключенsybase.compatability_mode = Off[Sybase-СТ]; Разрешить или запретить постоянные соединения
sybct.allow_persistent = On; Максимальное количество постоянных соединений,; значение -1 означает неограниченное количество.
sybct.max_persistent = -1; Максимальное число соединений (постоянных и непостоянных).
; Значение -1 означает - без ограничений,
sybct.max_links = -1; Минимальный уровень серьезности ошибки для отображения
sybct.min_server_severity =10; Минимальный уровень серьезности клиентского сообщения; для отображенияsybct.min_client_severity = 10[bcmath]; Количество десятичных разрядов для всех функций bcmathbcmath.scale = 0[browscap]/browscap = extra/browscap.ini
[Informix]; Хост по умолчанию для ifx_connect() (не действует
; в безопасном режиме).
ifx.default_host =; Пользователь по умолчанию для ifx_connect(); (не действует в безопасном режиме).
ifx.default_user =; Пароль по умолчанию для ifx_connect() (не действует
; в безопасном режиме).
ifx.default_password =; Разрешить или запретить постоянные соединения
ifx.allow_persistent = On; Максимальное количество постоянных соединений,; значение -1 означает неограниченное количество.
ifx.max_persistent = -1; Максимальное число соединений (постоянных и непостоянных).
; Значение -1 - без ограничений.
ifx.max_links = -1; Если включена, операторы SELECT возвращают содержимое
220Приложение А; TEXT BLOB вместо его ID.
ifx.textasvarchar = 0; Если включена, операторы SELECT возвращают содержимое
; BYTE BLOB вместо его ID.
ifx.byteasvarchar = 0; Убирает пробельные символы из колонок символов фиксированной
; длины. Удобно для пользователей Informix SE.
ifx.charasvarchar = 0; Если включена, содержимое TEXT BLOB и BYTE BLOB будет
; выброшено в файл вместо хранения его в памяти,
ifx.blobinfile = 0; Значения NULL возвращаются как пустые строки, если эта
; директива не установлена равной 1. Если она включена (1),; то NULL-значения будут возвращаться как строка "NULL".ifx.nullformat = 0[Session]; Обработчик сессии
session.save_handler = files; Аргумент, передаваемый save_handler. В случае с файлами это
; путь, где будут храниться файлы, содержащие данные сессии.; Примечание: Windows-пользователям нужно изменить значение
; этой директивы, если им нужно использовать функции сессии.; Вы можете определить путь так:; session.save_path = "N;/path"; где N - целое число. Вместо сохранения всех файлов сессии; в /path, будут созданы подкаталоги глубинной вложенности N.; Это полезно, если ваша ОС накладывает ограничение на; количество файлов в одном каталоге, да и позволяет более; эффективно управлять большим числом сессий.; Примечание 1: РНР не создает структуру каталогов; автоматически. Вы можете использовать сценарий в каталоге; ext/session для этой цели.; Примечание 2: см. секцию "garbage collection" ниже.; По умолчанию для файлов сессии используются права 600.; Вы можете изменить права доступа, используя следующую
; конструкцию:? session.save__path = "N;MODE;/path"; MODE - это права доступа в восьмеричной системе. Обратите
; внимание, что MODE не перезаписывает значение umask для
; процесса.;session.save__path = /var/lib/php5
; Должна ли сессия использовать Cookie,
session.use_cookies = 1
;session.cookie_secure =; Данная опция позволяет защитить пользователей от уязвимости,
Файл настроек РНР221; связанной с перехватом ID сессии в URL. По умолчанию: О
; session.use_only_cookies = 1
; Имя сессии (используется как имя cookie).
session.name = PHPSESSID; Инициализировать ли сессию при запуске сценария
session.auto_start = О; Время жизни Cookie в секундах, 0 - до перезапуска
; браузераsession.cookie_lifetime = О; Путь, для которого Cookie считается действительной
session.cookie_path = /; Домен, для которого Cookie считается действительной
session.cookie_domain =; Нужно ли или нет добавлять флаг httpOnly в Cookie, зтот флаг
; выключает поддержку браузером различных скриптовых языков
; вроде JavaScript
session.cookie_httponly =; Обработчик для сериализации данных. По умолчанию
; используется обработчик php.
session.serialize_handler = php; Определяет возможность запуска процесса 'garbage collection'
; (уборка мусора) при каждой инициализации сессии.; Возможность вычисляется так: gc_probability/gc_divisor
; т.е. 1/100 означает 1%, что процесс GC будет запущен при
; каждом запросе.;session.gc_probability = 0
session.gc_divisor = 100; После указанного количества секунд сохраненные данные будут
; считаться мусором ('garbage') и будут удалены при следующей
; уборке, т.е. при следующем запуске процесса GC.
session.gcjnaxlifetime = 1440; Примечание: если вы используете опцию, создающую подкаталоги
; для хранения файлов сессии (см. session.savejpath выше),; процесс уборки мусора це будет запущен автоматически. Тогда
; вам нужно будет запустить процесс уборки мусора через
; сценарий оболочки, запись cron или другим методом.; Например, следующий сценарий эквивалентен установке
; session.gcjnaxlifetime в 1440 (1440 seconds = 24 minutes):; cd /path/to/sessions; find -cmin +24 | xargs rm
; В PHP 4.2 и более ранних версиях есть недокументированная
; особенность или баг, позволяющий вам инициализировать
; переменную сессии в глобальном пространстве, даже если
; register_globals выключена. РНР 4.3 и выше предупредит вас,; если эта функция используется. Вы можете отключить ее или
; только отключить предупреждение о ней. В нашей конфигурации
; включена совместимость с багом 4.2 (session.bug_compat_42),; но и включено предупреждение об этом
; session.bug_compat_warn):
session.bug_compat_42 = 1
session.bug_compat_warn = 1; Проверяет HTTP_REFERER, чтобы найти нелегально внешне
; установленные URL, содержащие ID. HTTP_REFERER должен
222Приложение А; содержать эту подпоследовательность для сессии, которую
; рассмотрят как действительную:
session.referer_check =; Сколько байтов нужно прочитать из файла
session.entropy_length = О
; Определяет здесь ID сессии
session.entropy_file =;session.entropy_length =16
;session.entropy_file = /dev/urandom
; Ограничение HTTP-кеширования. Возможные значения:; {nocache,private,public,}; Генерирует вывод заголовков, запрещающих кеширование.; Значение по умолчанию:
session.cache_limiter = nocache
; Актуальность документа истекает через п минут
session.cache_expire =180; Поддержка прозрачных sid отключена по умолчании.; Использование sid угрожает безопасности пользователей.; Используйте эту опцию с осторожностью,
session.use_trans_sid = 0; Выберите функцию хеширования. Обычно используется MD5, как
; более совершенное шифрование.; 0: MD5 (128 bits); 1: SHA-1 (160 bits)
session.hash_function = 0; Определите, сколько битов сохранено в каждом символе при
; конвертировании бинарного хеша данных в что-нибудь читаемое.; 4 bits: 0-9, a-f; 5 bits: 0-9, a-v; 6 bits: 0-9, a-z, A-Z,session.hash_bits_per_character = 4url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
[MSSQL] 0; Разрешить или запретить постоянные соединения
mssql.allow_persistent = On; Максимальное количество постоянных соединений.; Значение -1 - без ограничений
mssql.max_persistent = -1; Максимальное число соединений (постоянных и непостоянных).; Значение -1 - без ограничений. •
mssql.max_links = -1; Минимальный уровень серьезности ошибки для отображения
mssql.min_error_severity = 10; Минимальный уровень серьезности сообщения для отображения
mssql.min_message_severity = 10
; Режим совместимости с РНР 3.0.
mssql.compatability_mode = Off
; Таймаут соединения
;mssql.connect_timeout = 5
; Таймаут запроса
;mssql.timeout = 60
Файл настроек РНР223; Возможный диапазон 0 - 2147483647. По умолчанию = 4096.
;mssql.textlimit = 4096; Возможный диапазон 0 - 2147483647. По умолчанию = 4096.
;mssql.textsize = 4096; Ограничивает число записей в каждой партии, 0 - все записи
;mssql.batchsize = 0; Указывает, как будет определяться формат столбцов datetime
; и datetim4. On => возвращает данные, конвертированные в
; настройки SQL-сервера. Off => возвращает данные в формате
; YYYY-MM-DD hh:mm:ss
;mssql.datetimeconvert = On; Используется NT-аутентификацию при подключении к серверу
mssql.secure_connection = Off
; Указывает максимально число процессов.; Значение -1 = как определено в библиотеке по умолчанию
; msdlib defaults to 25
; FreeTDS defaults to 4096
;mssql.max_procs = -1; Определяет кодировку символов клиента.;mssql.charset = "ISO-8859-1"[Assertion]; Assert(expr); активна по умолчанию
;assert.active = On; Порождает PHP-предупреждение при каждом неудачном
; утверждении
;assert.warning = On
;assert.bail = Off; Пользовательская функция, которая будет вызвана при
; неудачном утверждении
;assert.callback = 0; Оценивает выражение с текущим уровнем error_reporting().;assert.quiet_eval = 0
[COM]; Путь к файлу, содержащему GUIDs, IIDs или имена файлов
; с TypeLibs
;com.typelib_file =; разрешает распределенные COM-вызовы
;com.allow_dcom = true; автоматически регистрирует константы компонентов typlib
; и com_load();com.autoregister_typelib = true; константы регистрируются чувствительными к регистру (если
; значение true); com.autoregister_casesensitive = false
; показывать предупреждения при повторной регистрации
; константы; com.autoregister_verbose = true
[mbstring]; язык для внутреннего представления символов
;mbstring.language = Japanese
; внутренняя кодировка сценария; Некоторые кодировки нельзя использовать как внутренние:
224Приложение А; SJIS, BIG5, ISO-2022-*;mbstring.internal_encoding = EUC-JP
; HTTP-кодировка для ввода
;nibstring.http_input = auto
; HTTP-кодировка вывода
;nibstring.http_output = SJIS; Включить автоматическое преобразование символов в
; соответствии с настройками mbstring.intemal_encoding.; Символы ввода будут конвертированы во внутреннюю кодировку,; если эта директива включена.; Примечание: не используйте автоматическое преобразование для
; portable-библиотек или приложений
/mbstring.encoding_translation = Off
; Автоматическое определение кодировки
;mbstring.detect_order = auto; Кодировка substitute_character используется, когда символ
; не может быть преобразован из одной кодировки в другую.;mbstring.substitute_character = none;; overload(replace) single byte functions by mbstring
; functions.; mail(), eregO, etc are overloaded by mb_send_mail (),; mb_ereg (),; etc. Possible values are 0,1,2,4 or combination of them.; For example, 7 for overload everything.; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
;mbstring.func_overload = 0
[FrontBase];fbsql.allow_persistent = On
;fbsql.autocommit = On
; fbsql. show_timestarnp_decimals = Off
;fbsql.default_database =;fbsql.default_database_password =
rfbsql.default_host =; fbsql .default__pas sword =;fbsql.default_user = "_SYSTEM";fbsql.generate_warnings = Off
;fbsql.max_connections = 128
;fbsql.max_links = 128
;fbsql.max_persistent = -1
;fbsql.max_results = 128
[gd]; Заставляет libjpeg подавить предупреждения и пытается
; создать gd-картинку. Предупреждение будет отображено как
; уведомление. По умолчанию выключена.;gd.jpeg_ignore_warning = 0
[exif];exif.encode_unicode = ISO-8859-15
;exif,decode_unicode_motorola = UCS-2BE
;exif.decode Unicode intel = UCS-2LE
Файл настроек РНР225;exif.encode_jis =;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel = JIS
[Tidy]; Путь к файлу конфигурации tidy (если tidy используется)
;tidy.default_config = /usr/local/lib/php/default.tcfg
; Нужно ли очищать вывод автоматически?; ВНИМАНИЕ. Не нужно использовать эту опцию, если вы
; генерируете не-html контент, например, динамические картинки
; или двоичные файлы.
tidy.clean_output = Off
[soap]; Включить или выключить функцию кеширования WSDL
soap.wsdl_cache_enabled=l
; Устанавливает имя каталога для кеша
soap.wsdl_cache_dir="/tmp"; Время жизни кеша(time to live)
soap.wsdl_cache_ttl=86400
; Локальные переменные:; tab-width: 4
; Конец:
ПРИЛОЖЕНИЕ Б<' 'Команды chmod и chown:
изменение прав доступаВ Linux есть понятие владельца файла (каталога) и прав доступа. С данными по¬
нятиями мы познакомились в главе 4, но подробно не рассматривали их. Здесь мы
поговорим о них детальнее.В Linux существует три типа прав доступа: чтение (г — от read), запись (w — от
write), выполнение (х — от eXecute). Право выполнения для файла означает, что его
можно запустить на выполнение. Обычно право выполнения устанавливается для
программ. А для каталога право выполнения означает право просматривать оглавле¬
ние каталога.Вы можете установить разные наборы прав доступа для владельца файла, группы
владельца и для всех остальных пользователей. Сейчас продемонстрирую, как это вы¬
глядит на практике. Откройте терминал и введите команду (имя файла можно ввести
любое, главное, чтобы он существовал):Is -1 <имя_файла>-rw-r—г— 1 den den-group 6051 Ноя 28 14:44 <имя_файла>Нас больше всего интересует строка -rw-r--г—. Это и есть права доступа. Нач¬
нем по порядку: первый символ <-) означает, что перед нами файл, а не каталог. Если
бы перед нами был каталог, то вместо тире стоял бы символ “d” (от directory).Далее. Первые три символа (после тире) означают собственно права доступа для
владельца. Владельцу (пользователь den) разрешено читать (г), изменять файл (w), но
запрещено запускать его на выполнение (третий символ — тире, а не “х”).Следующие два набора означают права доступа для членов группы владельца
(группа den-group) и остальных пользователей (которые не являются членами груп¬
пы и владельцем файла). И те, и другие имеют право только читать файл (г—).Нужно отметить, что в Linux права доступа вовсе не касаются пользователя root.
Какие бы вы права доступа для него не установили, пользователь root все равно по¬
лучит полный доступ к файлу.Наверняка вы уже побывали не на одном Linux-форуме и видели “магические”
команды вроде:chmod 666 <файл>
chmod 111 <каталог>
Команды chmod и chown: изменение прав доступа227На самом деле это никакие не заклинания, а обычные команды установки прав
доступа. Команда chmod используется для установки прав доступа к файлу и каталогу.
Сначала указываются права доступа, а затем имя файла/каталога. Помните, что вы
можете установить права доступа только к “своим” файлам, т.е. к тем файлам, вла¬
дельцем которых вы являетесь. Пользователь root имеет право изменить права до¬
ступа абсолютно любого файла/каталога.Итак, разберемся с мадией цифр. Посмотрим на набор прав:,зrw- г— г—Теперь заменим символы г, w, х на 1, а тире — на 0. Получим:110 100 100А сейчас посмотрим в таблицу восьмеричных значений (табл. Б. 1).Таблица Б.1. Восьмеричная система счисленияДвоичная системаВосьмеричная00000011010201131004101 -511061117Подставим полученные двоичные значения в таблицу и в итоге получим набор
прав доступа 644 (владельцу разрешено чтение и запись, всем остальным — только
чтение). Набор 666 соответствует правам доступа:rw- rw- rw-Это самые небезопасные права доступа, позволяющие всем желающим делать с
файлом все, что они хотят (вплоть до удаления). Поэтому права 666 лучше не устанав¬
ливать для файлов, содержащих что-то важное. Для таких файлов больше подойдут
права 6 0 0 ^ разрешающие операции с файлом только владельцу.Права 777 обычно устанавливаются для каталогов. Это то же, что и 666, но для
каталога.Команда chown используется для изменения владельца файла. Например:chown user report.txtПосле выполнения этой команды пользователь user станет владельцем файла
report. txt. Вы можете изменить владельца файла только для файлов, владельцем ко¬
торых вы являетесь. Пользователь root может изменить владельца для любого файла.
ПРИЛОЖЕНИЕ ВОсновы HTMLВ.1. Основные тегиЦель данной главы напомнить вам основы языка HTML, чтобы у вас во время
работы с книгой не возникало потребности обращаться к какому-нибудь другому
источнику. Язык HTML (Hyper Text Markup Language — язык разметки гипертексто¬
вой информации) предназначен для разметки веб-страниц. Все браузеры понимают
HTML-документы: возможно, вы и найдете какой-нибудь старый браузер, который
не будет понимать последние стандарты HTML — HTML 4, но основные теги, о ко¬
торых мы поговорим в этой главе, обязан понимать каждый браузер — иначе это не
браузер, а просто telnet-клиент.Каждый тег обязательно начинается символом меньше < и заканчивается симво¬
лом больше — >. Большинство тегов (но не все) подразумевает использование закры¬
вающего тега:<HTML> - тег</HTML> - закрывающий (конечный) тегВы можете указать атрибуты тега, если он подразумевает их использование, напри¬
мер <Р align="center">. Атрибуты указываются в виде имя_атрибута=значение.
Значение желательно брать в кавычки, хотя большинство браузеров лояльны и позво¬
ляют указывать значение без кавычек.В.1.1. Структура документаHTML-документ имеет такую структуру:<HTML><HEAD><TITLE>3to мы увидим в заголовке браузера</Т1ТЪЕ><HEAD> ■'<BODY><Ы>Информация</Ь1></BODY></HTML>Проведем небольшой эксперимент. Создайте HTML-документ, в качестве содер¬
жимого которого используйте приведенный выше листинг. Напомню, для такого рода
задачи нам подойдет стандартное приложение Блокнот, если вы работаете в Windows,
Основы HTML229или kedit (или любой другой текстовый редактор), если вы работаете в Linux. Сохра¬
ните файл под именем 1. html и просмотрите его в браузере (рис. В.1).Рис. В.1. Файл 1.html в браузере OperaТеперь измените наш первый HTML-документ так:<Т1ТЬЕ>Это мы увидим в заголовке браузера</Т1ТЪЕ><Ь1>Информация</Ь1>Мы удалили теги <html>, <head> и <body>. Просмотрите документ в браузере еще
раз. Как видите, он не изменился. Это означает, что браузер сам вставит удаленные
нами теги в нужные места. Но это касается только указанных выше тегов. В неко¬
торых случаях браузер самостоятельно добавляет теги </li>, </р> и еще некоторые
теги, но об этом мы поговорим позже. Когда вы будете писать сценарии на языке РНР,
все же желательно не лениться и выводить теги <html>, <head> и <body> в браузер.Тег <html> обозначает начало HTML-документа, а тег </нтмь> — его конец. Тег
<head> содержит некоторую служебную информацию — теги <title> (заголовок),
<мета> и другие.Тег <BODY> — это начало тела документа. В этом теге находится вся информация,
которая будет отображена в окне браузера.Самым важным из тегов в разделе head является тег <МЕТА>, определяющий так
называемую мета-информацию — ключевые слова, кодировку, время окончания сро¬
ка использования Документа.Вот примеры использования тега <мета>.• Указание кодировки документа<meta http-equiv="Content-Type" content="text/html; charset=,
windows-1251">• Информация об авторе<meta name="Author" content="Denis Kolisnichenko">• Информация о композере (программе, с помощью которой был создан документ)<meta name="GENERATOR" content="Mozilla/4.7 [en] (Win98; I)
[Netscape]">
230Приложение В• Ключевые слова<meta name-”keywords" content="Linux, UNIX">• Описание сайтаCmeta name="description" content="Moii сайт">• Время окончания срока использования документа<meta http-equiv="Expires" content="Mon, 06 Jan 1990 00:00:01 GMT">Важно правильно объявить теги МЕТА. Например, правильно указав ключевые сло¬
ва, вы упростите поиск вашего ресурса с помощью поисковых систем, а, следователь¬
но, повысите посещаемость сайта. Также рекомендую указать в качестве даты Expire
любую старую дату. Браузер не загружает из кеша просроченный документ, а старает¬
ся получить его новую версию. Таким образом, пользователи всегда получат новую
версию вашей странички, а не старую, сохраненную в кэше браузера. Данный при¬
ем очень полезен, если информация на вашем сайте часто обновляется. Удерживайте
клавишу <Shift> при щелчке на кнопке Обновить браузера — так вы гарантировано
получите новую версию документа.В. 1.2. Типы теговТеперь поговорим о тегах, содержащихся в теле документа. В теле документа могут
находиться следующие теги:• теги физического и логического форматирования текста;• гипперссылки;• таблицы;• теги рисунков;• теги списков;• теги элементов управления;• другие теги.Мы будем рассматривать далеко не все теги, а только самые необходимые для нас
(первые пять групп). Если вас интересуют все теги стандарта HTML 4, то обратитесь
к соответствующей справочной литературе.В.1.3. Теги физического форматирования текстаНачнем с тегов физического форматирования текста. К этим тегам относятся: в,
BR, FONT, Нл, HR, I, Р, PRE, SUB, SUP, U.Теги в, I и U делают текст жирным, наклонным (курсив) и подчеркнутым соот¬
ветственно.Пример:<В>Жирный текст</В><1>Курсив</1><и>Подчеркнутый</и>Тег BR вставляет разрыв строки. Этот тег не требует закрывающего тега. Пример:<р>Это абзац<ВК>Новая строка<р>Следующий абзац
Основы HTML231Как вы уже догадались, тег Р используется для обозначения абзаца. В окне браузе¬
ра данный HTML-код будет выглядеть так, как показано на рис. В.2.С помощью тега font можно указать шрифт: гарнитуру, размер и цвет. Например:<FONT face="Arial" color="red" size="7">TeKCT</FONT>Атрибут size предназначен для управления размером шрифта и может принимать
значения от 1 до 7. Значение по умолчанию — 3.В качестве значение атрибута color можно использовать значение в виде RRGGBB,
например, #FFFFFF — белый или использовать одну из констант цвета (табл. В.1).Таблица В.1. Константы цветаЦветКонстантаRRGGBBБелыйwhiteFFFFFFЧерныйblack000000Синийblue0000FFЗеленыйgreen008000Голубойcyan00FFFFКрасныйredFF0000СиреневыйmagentaFF00FFКоричневыйbrownA52A2AСерыйgray808080Оттенок синегоaliceblueF0F8FFОттенок белогоantiquewhiteFAEBD7Акваaqua00FFFFАквамаринaquamarine7FFFD4Очень близкий к беломуazureF0FFFF
232Приложение ВПродолжение табл. В. 1ЦветКонстантаRRGGBBБежевыйbeigeF5F5DCНемного темнее, чем antiquewhitebisqueFFE4C4Похож на бежевыйblanchedalmondFFEBCDОттенок фиолетовогоblueviolet8A2BE2Цвет дереваburlywoodDEB887Оттенок синегоcadetblue5F9EA0Оттенок зеленогоchartreuse7FFF00ШоколадныйchocolateD2691EКоралловыйcoralFF7F50Оттенок синегоcornflowerblue6495EDШелковыйcornsilkFFF8DCТемно-синийdarkblue00008BТемно-голубойdarkcyan008B8BТемное золотоdarkgoldenrodB8860BТемно-серыйdarkgrayA9A9A9'Темно-зеленыйdarkgreen006400Темный хакиdarkkhakiBDB76BТемно-сиреневыйdarkmagenta8B008BОливковыйdarkolivegreen556B2FТемно-оранжевыйdarkorangeFF8C00Похож на bluevioletdarkorchid9932CCТемно-красныйdarkred8B0000Лососевыйdarksalmon• E9967AОттенок зеленогоdarkseagreen8FBC8FТемный фиолетовыйdarkviolet483D8BНасыщенный розовыйdeeppinkFF1493Цвет небаdeepskyblue00BFFFЗеленый лестforestgreen228B22“Привидение”ghostwhiteF8F8FFЗолотойgoldFFD700Кислотный зеленыйgreenyellowADFF2FОттенок розовогоhotpinkFF69B4"Индеец”indianredCD5C5CИндигоindigo4B0082Слоновая костьivoryFFFFFOХакиkhakiF0E68CЗеленый с желтым оттенкомyellowgreen9ACD32Цвет дымаwhitesmokeF5F5F5Изумрудныйlawngreen7CFC00Светло-синийlightblueADD8E6Светло-коралловыйlightcoralF08080Светло-голубойlightcyanEOFFFFСветло-зеленыйlightgreen90EE90
Основы HTML233Окончание табл. В. 1ЦветКонстантаRRGGBBСветло-серыйlightgreyD3D3D3Светло-розовыйlightpinkFFB6C1Цвет неба (светлый)lightskyblue87CEFA“Синяя сталь”lightsteelblueB0C4DEСветло-желтый (близкий к белому)lightyellowFFFFEOКислотно-зеленыйlime00FF00Более темный, чем limelimegreen32CD32“Марон”maroon. ,800000Аквамарин средней насыщенностиmediumauqamarine66CDAAСиний средней насыщенностиmediumblue0000CDПурпуровый средней насыщенностиmediumpurple9370D8“Полночь”midnightblue191970Цвет ВМФnavy' 00080Оливковыйolive808000ОранжевыйorangeFFA500Пурпуровыйpurple800080СеребряныйsilvercococoЦвет небаskyblue87CEEBСнегsnowFFFAFAФиолетовыйvioletEE82EEТоматtomatoFF6347Стальнойsteelblue4682B4Пример. Устанавливаем шрифт Anal, красный, размер 6:<font name="Arial" color="red" size="6">TecT</font><font name="Arial" color="#FF0000" size="6">TecT</font><font name="Arial" color="FF0000" size="6">TecT</font>Все эти три тега идентичны. Тег FONT обязательно требует закрывающий тег.Теги нл используются для создания заголовков и подразумевают использование
закрывающего тега. Ниже приведен пример оформления в документе заголовков раз¬
ных уровней — результат его отображения в браузере показан на рис. В.З.<Ь1>Самый большой заголовок</Ьй><Ь2>Чуть меньше</Ь2><ЬЗ>Еще меньше</ЬЗ><Ь4>Совсем маленький</1"14><Ь5>Меньше</Ь5><Ь6>Самый мелкий</Ь6>Теги Нл имеют два атрибута: align и title. Первый управляет выравниванием за¬
головка, а второй определяет всплывающую подсказку. Атрибут выравнивания может
иметь следующие значения:• по центру — center;• по левому краю — left;
234Приложение В!;Рис. В.З. Группа тегов Нп• по правому краю — right;• по ширине — justify.<hl align="justify">CaMbM большой заголовок</Ы>Тег HR создает горизонтальную линию. Атрибуты:• size — определяет высоту линии;• width — определяет ширину линии в пикселях или процентах;• color — задает цвет линии;• noshade — создает линию без тени.Пример:<hr.color="red" width="100%">С тегом Р вы уже знакомы — он отмечает создание нового абзаца. Наличие за¬
крывающего тега не обязательно. Для этого тега характерны те же атрибуты, что и для
тегов Нл, т.е. align и title.Тег PRE подойдет, если вы надумаете вставить в HTML-документ заранее отформа¬
тированный текст так, чтобы сохранилось его исходное форматирование. Например,
это может быть код программы — ведь если в тексте программы вы сделаете отступы с
помощью символов табуляции, то в окне браузера все отступы будут заменены одним
(!) пробелом. Поэтому в этом случае вам лучше использовать тег PRE (и его закры¬
вающий тег /PRE). Например, следующий абзац будет выглядеть в браузере так, как
показано на рис. В.4.// Если размер буфера не равен 100, то это нестандартный буфер
<PRE>{Файл Правка Вид Закладки Виджеты Каналы новостей Инструменты. Справкаv , fife;//focalhost/C;/i.html [GjСамый большой заголовокЧуть меньшеЕще меньше
Совсем маленький
Меньше
Сита-швшгккк
Основы HTML235if (size(buf)!=100 ){printf("Нестандартный буфер");}}</PRE>hlc //lor i)!ho4t/l ./1 html 0(ipmФайл Правка Вид Закладки Вцджеты Каналы новостей Инструменты Справка .®.авдатьвкладку,rr -i,,..: file://!ocalhost/C;/l,htfni i-tv -IC'- if Если размер буфера ке равен 100, то это нестандартный буфер
; {} if (3ize(buf)!=1D0 ): t; printf("Нестандартный буфер");i >iI1Рис. B.4. Тег PREВ случае использования тега PRE форматирование сохраняется, но могут исчез¬
нуть некоторые символы. Как правило, исчезают специальные символы и
др.). Для отображения таких символов можно использовать конструкцию &#ппп, где
ппп — код символа в стандарте ASCII или ISO-8859-1. Чаще всего используемые спе¬
циальные символы представлены в табл. В.2.Таблица В.2. Специальные символыСимаол КонструкцияБольше чем &gtМеньше чем &ltПробел (неделимый) &nbspПрямые кавычки &quotУгловые кавычки slaquo, sraquoАмперсант &ашрЗнак авторских прав &соруЗарегистрированная торговая марка &regТорговая марка™ & # 15 зКоммерческое эт или “ухо” — @ & # 0 6 АГрадус 36,6’ &degS.”
236Приложение ВДля вставки в HTML-документ формул вам помогут теги SUB и SUP — нижний и
верхний индексы соответственно. Наличие закрывающего тега для них обязательно
(рис. В.5).<Ь2>Математическая формула<p>y<sup>''</sup> = x<sup>4</sup> + 10y<sup>1</sup><Ь2>Химическая формула
<p>H<sub>2</sub>0vi Правка Вид закладки Бцджеты Каналы новостей Инструменты. Справка •Создать вкладкуМатематическая формула
у" = х4 + 10у’Wi.-/Я :,,ГУ-Чк il h']:,:й/ fi!e://iocalho5t/C:/l,h!;mfХимическая формулаРис. В.5. Представление формул в HTMLНужно заметить, что сложные формулы нужно сохранять в графическом виде и
вставлять в документ как графику с помощью тега IMG.В. 1.4. ГипперссылкиК этой группе относится только один тег — А. Тег А имеет четыре атрибута.• name — определяет имя ссылки. Данный атрибут обычно используется при соз¬
дании ссылок между фреймами.• href — задает URL ресурса. Например, href="http://dkws.org.ua". Для
создания ссылки на адрес электронной почты используется префикс mailto:
href="mailto: root@localhost". Такие ссылки, как правило, обрабатывают¬
ся почтовым клиентом, например, програмой The Bat!.• target — цель ссылки.• title — всплывающая подсказка.Все атрибуты, кроме target, в особых комментариях не нуждаются. А вот о
target нужно поговорить подробнее. Атрибут target может принимать одно из пяти
значений, представленных в табл. В.З.
Основы HTML237Таблица В.З. Значения атрибута targetЗначениеОписаниеИмяИмя ссылки или фрейма. Ресурс URL, указанный в атрибуте href, будет загружен во
фрейм с именем “имя"blankЗагружает указанный в атрибуте href ресурс в новое окноparentЗагружает указанный в атрибуте href ресурс в родительское окноsearchЗагружает указанный в атрибуте href ресурс в строку поиска браузера. Работает только
с браузером Internet Explorer 5 и вышеselfЗагружает указанный в атрибуте href ресурс в это же окно, в котором была активизиро¬
вана ссылка. Значение по умолчаниюТег А обязательно требует закрывающий тег.Пример.<а href="../index.html" target=" Ь1апк">Текст ссылки</а>В.1.5.ТаблицыДля создания таблиц используются теги table, tr и TD. Рассмотрим создание про¬
стой таблицы.<TABLE border="l" bordercolor="blue" width="100%"><TR><ТО>Фамилия</ТОхТВ>Адрес</ТОХТО>Телефон</ТО></TR><TR><ТО>Иванов И. П.</TDXTD>nymKMHa 6</TDXTD>lll-ll-ll</TD></TR><TR><ТО>Петров В. П.</TDXTD>EropoBa 9</TDXTD>lll-22-22</TD></TR></TABLE>В браузере эта таблица будет выглядеть так, как проказано на рис. В.6.Тег table создает таблицу. Все остальные элементы должны быть вложены в этот
тег. Под остальными тегами подразумеваются теги tr, td, тн (заголовок таблицы).
В тег table можно вложить еще одну таблицу, т.е. еще один тег table. В него, в свою
очередь, еще один и т.д.Тег TABLE имеет много атрибутов, поэтому начнем по порядку — атрибут align.
Данный атрибут используется для выравнивания таблицы. Может принимать три зна¬
чения:• left — выравнивание по левому краю;• right — выравнивание по правому краю;• center— выравнивание по центру.Атрибут background определяет рисунок заднего фона. Например, background=
"1 .gif ", а атрибут bgcolor — цвет заднего плана.Атрибуты border и bordercolor управляют рамкой таблицы. Первый задает ши¬
рину рамки таблицы в пикселях, а второй — изменяет ее цвет.
238Приложение ВПараметры cellspacing и cellpadding управляют отображением ячеек. Пер¬
вый — задает расстояние между ячейками таблицы, а второй — между содержимым
ячейки и ее рамкой.Ыг./Ло1 «illiuslA /1 .hlrnl P|>cf<i.-Гх'Файл Правка Вид Закладки Виджеты Каналы новостей Инструменты - Справкаr „ flie://bcalbo5t/C;/l,htm! -Т;. ;jGi] : й-]Фамилия |Адрес (Телефон
? !Иванов И. П. [Пушкина 6:|l 11-11-11; [Петров В. П. |Егорова9 jll 1-22-221Рис. В. 6. Простая таблицаОтображением самих рамок занимается атрибут rules. Он может принимать зна¬
чения, представленные в табл. В.4.Таблица В.4. Значения атрибута rulesЗначениеОписаниеАНБудут видны все рамкиColsБудут показаны только вертикальные рамкиRowsБудут показаны только горизонтальные рамкиNoneРамки не отображаютсяGroupsБудут показаны горизонтальные рамки, отделяющие группы thead, tbody и tfootАтрибут title, как обычно, задает текст для всплывающей подсказки. А с помо¬
щью атрибута width можно установить ширину таблицы в пикселях или в процентах.
В нашем примере мы растянули нашу таблицу на все окно браузера, установив ши¬
рину 100%.Тег TR означает начало новой строки таблицы, а тег TD используется для создания
нового столбца (ячейки). Данные теги требуют закрывающего тега; Из всех допусти¬
мых атрибутов данных тегов вам пригодятся только следюущие тарибуты тега TD:• bgcolor — определяет цвет фона ячейки; '• colspan и rowspan.Предположим, что нам нужно создать сложную таблицу, например, такую, как по¬
казано на рис. В.7. :
Основы HTML239Файл Правка Вид Закладки Виджеты Каналы новостей Инструменты Справка -□ Создать вкладку '<•> гУ S* file://locaihost/C;/l,html + }£,[ vДоход, тыс. руб./мес.[Год
.[1997” (1998~ '"" [Тэээ!~ (2000”[2001Январь[200,34[195,45[234,11(189,31[121,98Февраль[211.34[205,45[210,11[193,31] 145.98iРис. B. 7. Сложная таблицаОбратите внимание, что слева вверху мы объединили две ячейки по вертикали (До¬
ходы тыс. руб./мес) и целых пять ячеек — по горизонтали (Год). Должного эффекта
нам помогли достичь атрибуты rowspan и col span. Вот листинг этой таблицы.<TABLE border="l" width="100%"><TR><TD rowspan=2>Доход, тыс. руб./мес. </TD><TD colspan=5>rofl</TD></TR><TR><td>1997</td><td>1998</td><td>1999</tdxtd>2000</td><td>2001</td></TR><TR><TD>HHBapb</TDXTD>200, 34</TDXTD>195, 45</TDXTD>234,11</TD><TD>189, 31</TDXTD>121, 98</TD></TR><TR><TD>®eBpanb</TDXTD>211, 34</TDXTD>205, 45</TDXTD>210,11</TD><TD>193, 31</TDXTD>145, 98</TD></TR> . ,</TABLE>B.1.6. Теги рисунковК этой группе относится один, но очень важный тег — IMG. Этот тег позволяет встав¬
лять в HTML-страницы графику. А какая же веб-страница обходится без графики?Данный тег имеет два основных атрибута: src и alt. Первый указывает URL ри¬
сунка, а второй — альтернативный текст, который будет отображен браузером, если
пользователь отключил отображение рисунков.Пример.<img src="pl.png" alt="Kartinka 1"> J
240Приложение ВЕще один важный атрибут — border, позволяющий задать толщину рамки в пик¬
селях. Рамка вокруг рисунка в Internet Explorer выглядит некрасиво, поэтому ее ото¬
бражение нужно отключить:<img src="pl.png" alt="Kartinka 1" border=0>В. 1.7. Теги списковДля создания нумерованных списков используется тег OL (Ordered List), а ненуме¬
рованных — UL. Отдельные элементы списка заключаются в теги LI. Пример нумеро¬
ванного списка:<OL><Ъ1>Первый элемент</Ы><Ы>Второй элемент</Ы><Ы>Третий элемент</Ы></OL>Ненумерованные списки допускают указание атрибута type, задающего тип мар¬
кера. Атрибут type может принимать такие значения:• disk — закрашенный кружок (по умолчанию);• circle — не закрашенный кружок;• square — квадрат.Пример.<UL type="circle"><Ы>Первый элемент</Ы><Ы>Второй элемент</Ы><Ы>Третий элемент</Ъ1></UL>В.2. ФормыФормы предназначены для отправки информации CGI-приложению, т.е. про¬
грамме, которая будет обрабатывать переданную пользователем информацию. Рас¬
смотрим простую форму ввода имени.<form action="http://localhost/1.php" method="GET">Имя: <input type=text name=user_name><br><input type=submit value="Пepeдaть"></form>Данная форма содержит всего два элемента — поле для ввода имени и кнопку с
надписью Передать. Что же происходит, когда пользователь вводит имя и щелкает на
кнопке Передать? Браузер передаст сценарию 1 .php параметр user name. В каче¬
стве значения параметра будет указано введенное пользователем имя. Так как исполь¬
зуется метод GET, то в строке адреса вы увидите http: //localhost/1 .php?user_
name=Denis. (Метод POST использует другой способ передачи информации, поэтому
в строке браузера переданную информацию вы не увидите.)Все элементы формы делятся на три группы:• поля ввода(input);
Основы HTML241• многострочные поля ввода (textarea);• списки выбора.Чаще всего используются поля ввода — ведь даже кнопка, по сути, является полем
ввода. Мы уже знакомы с полем ввода текстовой информации, поэтому обзор полей
ввода начнем именно с текстового поля. Формат тега input.<input type=textпатае=имя_параме тра
[valu е-значеяие][siz е=размер][ та х 1 е п=длина ]>Данный тег создает поле ввода с максимально допустимой длиной текста maxlen
и размером size знакомест Если задан атрибут value, то в поле будет изначально
отображаться указанная строка.Возможно, вы создаете какой-нибудь серьезный проект, требующий аутентифика¬
ции, т.е. проверки имени пользователя и пароля. Конечно, имя пользователя можно
ввести с помощью обыкновенного текстового поля. А вот как быть с паролем? Ведь
он не должен отображаться на экране! В этом случае вам поможет поле ввода пароля:<input type=password
пате=имя_параметра
[value=3HayeHJ4e][size=pa3Mep][тах1еп=ддаша]>Принцип работы данного тега точно такой же, как и текстового. Но следует иметь
в виду, что не рекомендуется устанавливать значение value из соображений безопас¬
ности. Да, в окне браузера данное значение не отображается, но стоит просмотреть
исходный HTML-код, и пароль будет виден “невооруженным глазом”.Для передачи служебной информации (о которой пользователь даже не должен
подозревать) используются скрытые поля.<input type=hidden
nam е-ш1я
value=3начение>Очень часто нам нужно предоставить пользователю возможность включить или
выключить какой-нибудь режим работы. Например, в форме нам требуется такой
блок: Да, я хочу получать информацию о ... Это можно сделать с помощью пере¬
ключателя:<input type=checkbox
пате=имя
value=3Haчение
[checked]>Если атрибут checked присутствует, то данный флажок будет установлен по
умолчанию. Если флажок был установлен до щелчка на кнопке отправки данных,
242Приложение Всценарию будет передан параметр имя=значение. Если же флажок был сброшен, то
сценарию вообще ничего не будет передано — как будто этого флажка вообще нет.Переключатель checkbox называется независимым, так как его свойство checked
не зависит от положения других переключателей checkbox. Переключатель radio яв¬
ляется зависимым переключателем, поскольку в форме в состоянии “включено” мо¬
жет присутствовать только один переключатель типа radio. Точнее, в форме может
быть только один активный переключатель в своей группе. Чтобы объединить пере¬
ключатели radio в группы, нужно указать для них одно и тоже свойство (атрибут)
паше. Рассмотрим такой пример:<form action="http://localhost/sex.php" method="post"><input type=radioname=sexvalue=malechecked>Мужчина<input type=radio
name=sex
value=female
>Женщина<input type=submit
name=goуа1ие=Передать></form>Первый переключатель (со значением Male) активен по умолчанию (мы устано¬
вили атрибут checked). Как только пользователь щелкает на кнопке Передать, сце¬
нарию sex .php будет передан параметр sex (атрибут паше обоих переключателей) со
значением Male. Если же пользователь выберет другой вариант (female), сценарию
будет передано соответствующее значение параметра sex.Последними элементами управления типа input являются кнопки. О кнопке
submit, передающей введенные пользователем данные на сервер, мы знаем практи¬
чески все. Атрибут value определяет текст кнопки:<input type=submit
name=goуа1ие=Передать>ПримечаниеМы знаем, что значения атрибутов тегов желательно заключать в кавычки. Желательно,
но необязательно — большинство браузеров нормально обрабатывает значения атри¬
бутов и без кавычек.'Кроме кнопки submit, есть еще кнопка reset, предназначенная для сброса фор¬
мы — установки для всех ее параметров значений, заданных по умолчанию. Жела¬
тельно, чтобы в вашей форме была такая кнопка, особенно если это большая форма.
Наличие данной кнопки облегчает очистку формы, если были введены неправильные
значения параметров.
Основы HTML243<input type=reset
value=C6poc>Вместо кнопки submit для отправки данных можно использовать рисунок. При
щелчке на этом рисунке произойдет то же, что и при щелчке на кнопке submit. Кро¬
ме того, сценарию будут переданы координаты места выполнения щелчка на рисунке.
Координаты будут переданы в формате имя. х=коор_Х, имя. у=коор_У. Пример.<input type=image
namе=имя
src=рисунок>На этом поля ввода заканчиваются, и мы переходим к рассмотрению многостроч¬
ного поля ввода — textarea. Поле textarea позволяет отправить не одну строку
текста, а сразу несколько.<textareanamе=имя[cols=ширина_ в_ симв олах][гоиБ=высота_в_символах]wrap= тип_переноса
>Текст_по_умолчанию </textarea>Несколько замечаний относительно использования этого поля: необязательные
параметры cols и rows желательно указывать. Первый из них задает количество сим¬
волов в строке, а второй — количество строк в области. Атрибут wrap определяет тип
переноса текста.• virtual — справа от текстового поля выводится полоса прокрутки. Вводимый
пользователем текст разбит на строки, а символ новой строки вставляется при
нажатии клавиши <Enter>.• Physical — этот тип зависит от браузера и на разных браузерах может вести
себя по-разному.• None — текст выглядит в поле в том виде, в котором пользователь его вводит.
Если текст не умещается в одну строку, появляется горизонтальная полоса про¬
крутки.Стоит заметить, что наиболее удобным является тип Vi rtual.Довольно часто нам нужно представить какие-нибудь данные в виде списка вы¬
бора. Такой список позволяет выбрать один вариант из множества. Конечно, можно
было бы использовать переключатель radio, но это не очень рационально. Напри¬
мер, если нам нужно чтобы пользователь выбрал месяц, то один список будет зани¬
мать намного меньше места в окне браузера, чем целых двенадцать переключателей
radio. Вот пример такого списка в поле типа select:<select name=month size=l><option value=01 selected>HHBapb</option><option уа1ие=02>Февраль</ор^оп><option value=03>MapT</option><option уа1ие=04>Апрель</ор^оп> . , .
244Приложение В<option value=05>Maii</option><option value=06>HraHb</option><option value=07>Mionb</option><option value=08>ABrycT</option><option value=09>CeHTH6pb</option><option value=10>OKTH6pb</option><option value=ll>HoH6pb</option><option value=12>fleKa6pb</option></select>Атрибут name определяет имя параметра, который будет передан сценарию. Если
атрибут size равен 1, то список будет раскрывающимся, в противном случае — займет
п строк и будет снабжен полосой прокрутки. Январь — это название месяца, выбирае¬
мое по умолчанию (атрибут selected). Когда пользователь выберет один из вариан¬
тов, сценарию будет передано одно из значений value. Например, если пользователь
выберет Сентябрь, то сценарию будет передан параметр month=0 9. Атрибут value
является необязательным. Если его не указать, то будет передана строка, заключенная
в тег <option>. В нашем случае сценарию будет передан параметр топ^=Сентябрь
(если value не указан).Список выбора позволяет выбирать не только один вариант, но и несколько сразу.
Для этого используется атрибут multiple. Ясное дело, что этот параметр не имеет
смысла, если size=l. Если пользователь выберет несколько вариантов, то сценарию
будут переданы параметры в форме:имя=значение&имя=значение...&имя=эначениеЯ уже говорил выше, что мы рассмотрели все поля типа input. На самом деле это
не так: существует еще одно поле — поле загрузки файла. Выглядит оно так:<input type=file
namе=имя[ча1ие=имя_файла]>Но мы его рассматривать не будем, поскольку в данный момент оно нас совсем не
интересует.
ПРИЛОЖЕНИЕ ГБезопасность в сетиDrupal можно с успехом использовать в качестве блога, даже в качестве блог-
платформы. Однако, как показывают последние события, блогеры в Интернете при¬
равниваются к журналистам на улице. Это я о том, что быть блогером в наше время
опасно. Если раньше практически никто не мог отследить, откуда вы ведете свой блог,
то сейчас лучше проявить осторожность. Иначе последствия вашей жизни в виртуаль¬
ном мире могут вполне явственно и не очень хорошо аукнуться в реальности. Кто бы
что ни говорил о демократии и свободе слова, и то, и другое в нашей стране возможно
только при условии, что говорящий остался анонимным.О своей анонимности нужно подумать еще до создания блога. Нужно правиль¬
но выбрать тип блога — автономный или на блог-платформе. Блог-платформа
(LiveJoumal и другие подобные сервисы) — это более анонимный способ ведения
блога. Ведь при регистрации вы указываете только свой адрес электронной почты.
А вот при регистрации хостинга вам придется указать свои полные данные. С дру¬
гой стороны, во всех громких делах против блогеров в России как раз фигурируют
блог-платформы, которые передают следственным органам ваши IP-адреса и прочую
информацию о вас.Что делать? Можно зарегистрировать где-то бесплатный хостинг (желательно не в
России, а например, на каких-нибудь островах) — для регистрации не нужно указы¬
вать свои личные данные, производить платеж можно личной кредитной карточкой.Если вы не знаете, как это сделать, тогда подойдет и блог-платформа. Вот только
придерживайтесь следующих правил (кстати, эти правила касаются и автономного
блога).• Придумайте себе псевдоним. Никогда не пишите от своего настоящего имени,
только от псевдонима!• Никогда не регистрируйте блог или хостинг со своего компьютера. Лучше все¬
го подойдут компьютеры в интернет-кафе. Для большей конспирации можно
даже поехать в другой город и оттуда зарегистрировать блог. Хорошо, что хоть
при доступе к Интернету в общественных местах пока не снимают отпечатки
пальцев. Старайтесь выбирать интернет-кафе без видеонаблюдения.• При регистрации блога (хостинга) используйте ранее созданный почтовый ящик на
анонимных почтовых сервисах (Gmail.Com, Mail.Ru и др.). Опять-таки создавать
почтовый ящик нужно не со своего компьютера. Этот ящик нельзя использо¬
вать для личной переписки — пусть он останется сугубо для блога.
246Приложение Г• Старайтесь вести свой блог с анонимных компьютеров в интернет-кафе. Выби¬
райте каждый раз другое интернет-кафе, желательно подальше от дома и без
видеонаблюдения. Понятно, что рано или поздно вас могут выследить. Значит,
пора менять способ подключения к Интернету. Если у вас есть ноутбук, можно
попробовать использовать Wi-Fi точки доступа в общественных местах (биб¬
лиотека, аэропорт, McDonalds и др.). Можно купить Зв-модем. Но помните,
что у него есть аппаратный номер (IMEI) и что мобильные соединения легко
отслеживаются. Поэтому не нужно надеяться, что данный способ анонимный.
Он может обеспечить анонимность всего на один раз. Вы покупаете модем, ак¬
тивируете его вдали от дома, когда будете публиковать материал (желательно,
чтобы он был предварительно подготовлен), для пущей уверенности желатель¬
но перемещаться (например; в такси, автобусе). После публикации модем нуж¬
но выбросить и купить модем другого оператора. Можно чередовать несколько
модемов. Но для большей безопасности желательно их выбросить сразу же по¬
сле двух использований каждого модема. Идеально выбрасывать модем после
каждого использования, но тогда каждая запись в блоге обойдется довольно
дорого.• Никогда не выходите в Интернет со своей телефонной линии. Думаю, это понятно.• Никогда не выходите в Интернет с компьютеров знакомых или родственников.
Вас все равно выследят.• Используйте Тог. Сеть Тог позволяет каждый раз при подключении к тому или
иному ресурсу изменять ваш IP-адрес. Таким образом, даже если вы будете
работать постоянно из одного и того же интернет-кафе, вас будет сложно вы¬
следить. Однако помните, что Тог — не панацея, поэтому лучше всего каждый
раз идти в другое интернет-кафе или использовать другую Wi Fi-точку доступа.
Скачать мобильный комплект Тог (клиент для Tor-сети и браузер, настроенный
на использование Тог) можно по адресу http: //www. torpro j ect. org/index.
html. ru. Там же вы узнаете, как использовать это программное обеспечение.
Учтите, что нельзя устанавливать Тог на свой личный компьютер. Вы можете
подумать, что если IP-адрес каждый раз разный, то вас не выследят и можно
расслабиться, установив Тог на любой, в том числе и личный компьютер. Но
этого нельзя делать. Сети Тог тоже отслеживаются, только сделать это сложнее,
но все же можно. Лучше всего поместить мобильный комплект Тог на флешку и
запускать Тог с нее, когда будете работать в интернет-кафе. Весь материал луч¬
ше тоже хранить на флешке, а не на домашнем компьютере. От флешки очень
легко избавиться, просто выбросив ее (не забудьте предварительно избавиться
от отпечатков пальцев на ней).Представим, что вы пришли в интернет-зал и ведете свой блог. В итоге некто вы¬
числяет IP-адрес, под которым вы находились в Интернете, когда отправляли ма¬
териал, и приходит “в гости” в интернет-зал. Как правило, в любом нормальном
интернет-зале есть видеонаблюдение. Подняв журналы сервера в интернет-зале, ста¬
нет понятно, с какого компьютера заходили в админку вашего блога, а потом, про¬
смотрев видеозапись камеры наблюдения, увидят ваше лицо. Все остальное — дело
техники.
Безопасность в сети247Как скрыть свой IP-адрес? И вообще, как усложнить получение информации о
себе? Первым делом вам нужен хостинг в другой стране (это усложнит процесс до¬
ступа к журналам сервера), а еще лучше виртуальный выделенный сервер — чтобы у
вас было больше контроля. Потом в панели управления хостингом (сервером) нужно
отключить протоколирование доступа к хостингу. Такая функция есть не во всех па¬
нелях управления, а вот если у вас выделенный сервер, то вы можете редактировать
конфигурационный файл веб-сервера и в нем отключить протоколирование доступа
к блогу.Затем вам нужно скрыть ваш IP-адрес. Самый простой способ — это использовать
анонимный прокси-сервер. Вы будете обращаться через анонимный прокси к своему
блогу. Даже если сервер, где размещен блог, записывает IP-адреса, то он запишет IP-
адрес анонимного прокси, а не ваш. Адреса некоторых анонимных прокси-серверов
доступны на моем форуме, там же вы найдете адреса веб-анонимайзеров:http://www.dkws.org.ua/phpbb2/viewtopic.php?t=799Но если кто-то доберется к журналам анонимного прокси-сервера (это можно,
хотя и сложно), то без проблем вычислит ваш IP-адрес. Тогда нужно усложнить задачу
и построить цепочку из анонимных прокси-серверов. Через прокси-сервер А вы об¬
ращаетесь к прокси-серверу Б, а через него — к своему блогу. Цепочка прокси значи¬
тельно запутает следы и узнать ваш IP-адрес будет уже очень сложно, например, если
сервер А находится на каких-то островах, сервер Б во Франции, а ваш блог — в США.
Для успеха операции придется сотрудничать со следственными органами этих стран,
чтобы получить доступ к журналам использованных прокси, ну или же действовать
незаконными способами — взламывать прокси-сервер, чтобы завладеть его журнала¬
ми. Все эти способы очень сложные.Но построить цепочку из анонимных прокси-серверов тоже сложно. Ведь часто
анонимные прокси-серверы — это плохо настроенные обычные прокси-серверы раз¬
ных организаций. Рано или поздно их настроят правильно и цепочка оборвется. Се¬
годня цепочка А-Б будет работать, а завтра — нет. Да и постоянно использовать одну и
туже цепочку тоже не очень хорошо, нужно постоянно менять серверы, а это сложно
и требует времени.Как раз для автоматизации поиска цепочек анонимных серверов используется сеть
Тог. Сеть Тог содержит список множества анонимных прокси-серверов. Вам нужно
только выбрать цепочку. Сейчас вы подключаетесь через цепочку А-Г-Д-Е-Ж, а через
полчаса — через цепочку Б-В-А-Ц.Тог — это бесплатное открытое программное обеспечение, помогающее защитить
от сетевой слежки, которая угрожает личной свободе и частной жизни, конфиденци¬
альной профессиональной деятельности и отношениям, а так же “обезопаситься” от
деятельности органов государственной безопасности, известной под названием “ана¬
лиз трафика”.Тог защищает вас путем переадресации вашего трафика через сеть ретрансляторов,
которые предоставляют участники сети по всему миру Те, кто пытается отследить ваш
трафик, не узнают, какие сайты вы посещали, а владельцы сайтов, которые вы посе¬
щали, не узнают ваше физическое местоположение.Сервис Тог работает с браузерами, клиентами мгновенного обмена сообщениями
(вроде QIP) и другими программами, использующими протокол TCP.
248Приложение ГПо всему миру сотни тысяч людей используют Тог по самым разным причинам.
Среди них — журналисты, блогеры, сотрудники правозащитных организаций, сотруд¬
ники правоохранительных органов, солдаты, корпорации, граждане стран репрессив¬
ных режимов и просто обычные граждане. В общем, все те, кто против, чтобы за ними
следили в Интернете.По некоторым данным цепочки Тог тоже можно расшифровать. Но сделать это
очень и очень сложно, поэтому Тог — это пока лучшая система обеспечения аноним¬
ности в Сети. У Тог только один недостаток — низкая пропускная способность (кли¬
ентов очень много!). Даже если у вас соединение в 5 Мбит/с, то реальная скорость
соединения через Тог будет около 20—30 Кбит/с.Подробную информацию о Тог можно получить по адресу:http://www.torproject.org/index.html.ruСкачать Windows-версию можно по адресу:http://www.torproj ect.org/easy-download.html.ruЛучше всего скачайте пакет программ Tor Browser Bundle для Windows. Данный па¬
кет идеально подходит для различных целей. Он не требует установки (нужно только
запустить самораспаковывающийся архив), а все, что нужно сделать, — это распако¬
вать его на флешку и запустить. Флешка удобна тем, что она всегда под рукой и вам
не придется устанавливать программу в интернет-кафе, достаточно просто запустить
программу с флешки.Запустите скачанный архив, он запросит, куда распаковать файлы. Распакуйте их в
каталог С: \Тог или любой другой каталог. Запустите файл Tor\Tor Browser\Start
Tor Browser. ехе. Сначала запустится панель управления Vidalia. Подождите, пока
программа подключится к сети Тог, о чем вы увидите соответствующее сообщение
(рис. Г.1).♦Подключено к сети ТопЯзяккиУяЫв'Щ'Трафик " ' ,4|Mo»oiijb • «||Шлрограше ' •
(11 Журнал сообщений Настройки |3 Выхш /. / .floKasbsato это окно при запускеРис. Г. 1. Компьютер подключен к сети Тог
Безопасность в сети249Затем будет запущен браузер, настроенный на Тог. Убедитесь, что в панели статуса
есть зеленая надпись Тог включен — это свидетельствует о том, что все настроено пра¬
вильно, и вы можете анонимно вести свой блог.TMTorBtes.OKWSUsrs■■■ V ■■■■■■таг--*?:•?. ■ ■ ■ ■ .■■■.. ■ ■ . . ■1 .■ ■■ ■ . ■ ■■■■■Рис. Г.2. Браузер Firefox, работающий совместно с ТогВы думаете, что все это чистая паранойя? Нет, просто обычные меры безопасно¬
сти. Конечно, если вы не публикуете контент, связанный с политикой, и не собирае¬
тесь никого оскорблять или компрометировать, то и скрывать вам нечего. Поэтому
можете расслабиться и вести блог в уютной домашней обстановке.
Предметный указательАApache, 27; 30
настройка, 36
файл конфигурации, 37СCAPTCHA, 18; 179CMS, 13; 14; 84
движок, 22
история,99DDrupal, 15; 16; 17; 20
SEO-оптимизация, 186
база данных, 49
блоги, 245визуальный редактор, 120
выбор сервера, 22
загрузка, 48
на хостинг, 54
темы, 144
защита, 178модификация темы, 142
модули, 84; 86; 93; 97
обновления, 178
обслуживание сайта, 172
оптимизация таблиц, 177
поисковая оптимизация, 185
роли, 132создание темы, 142
список пользователей, 129
тема по умолчанию, 156
темы, 80; 141
установка, 29; 47; 48
на хостинге, 59
проблемы, 66
учетные записи, 126
функциональность, 18FFilezilla, 56FileZilla, 29FTP-сервер, 42
команды,44нHTML
гипперссылки, 236
изображения, 239
списки, 240
таблицы, 237
теги, 228
типы, 230
форматирование текста, 230
формы, 240
HTML-документ, 228
HTML-страница, 14iinetd, 42
IP-адрес
сокрытие, 247JJoomlFish, 18
Joomla, 15; 17
функциональность, 19
JQuery UI, 168
JSAS, 27MMySQL, 16; 27; 30
установка, 31PPageRank, 183
PayPal, 195РНР-интерпретатор, 27; 33
PhpMyAdmin, 174
PostgreSQL, 16
ProFTPD, 42RRSS-лента, 113sSSL, 18
SWIFT, 192
Предметный указатель251UUbuntu, 30WWebMoney, 188; 190; 193; 194; 195; 200
WebMoney Keeper, 195; 196
WMID, 196
кошельки, 197
Western Union, 191
Wordpress, 15
WordPress, 14
World Wide Web, 13XXAMPP, 27AАнонимность в сети, 245
ББаза данных
защита, 179копирование файлов, 177
резервная копия, 172
смена хостинга, 180
Бан пользователей, 129
Безопасность сайта, 178
Бекап, 174
Блог, 107
Блок, 152
порядок отображения, 155
Блокировка по 1Р-адресу, 129
Браузер, 14; 228ВВеб-сервер, 14; 22
Визуальный редактор, 120ГГипперссылка, 236
Голосование, 112дДвижок, 22
Дизайн сайта, 140
Доменное имя, 22
Домен
выбор, 25регистрация, 24; 26
3Заказные статьи, 189
Заработок на сайте, 187; 188; 189
получение денег, 188ИИнтернет
мошеннические схемы, 201ККарта сайта, 185
Кеширование, 76
Контекстная реклама, 189ЛЛицензия GPL, 16ММодуль, 84
Aggregator, 113
Content translation, 95
Field, 93
Forum, 108
switchtheme, 146
Wysiwyg, 120
активация, 85
удаление, 91
установка, 88HНовостная лента, 113
ООбслуживание сайта, 76; 172
Опрос, 111Оптимизация таблиц, 177
Основная страница, 102ППанель
DirectAdmin, 172
phpMyAdmin, 175; 177; 182
Пароль
администратора, 181
Партнерская программа, 189
Подшивка, 112
Поиск на сайте, 77
Поисковая оптимизация, 183; 185
Права доступа, 133; 226
Продажа ссылок, 189РРазмещение ссылок, 189
Расширение Nodewords, 186
Регистрация
в каталогах, 183
пользователей, 127
Редактор CKEditor, 125
252Предметный указательРезервная копия, 172; 174
PhpMyAdmin, 174
Роль, 132
создание, 134
Рубрика, 117
Рубрикация, 18ССайт, 13
URL-элементы, 185
безопасность, 178
блог, 107
внешний вид, 80
движок, 13
динамический, 14
карта, 185
многоязычный, 18
настройка, 62; 69
новостные ленты, 113
обслуживание, 76
общие параметры, 70
опросы, 111основные страницы, 102
отчеты о работе, 81
параметры регистрации, 73
подготовка материалов, 100
подшивки, 112
поисковая оптимизация, 183
размещение рекламы, 188
регион и язык, 79
регистрация в каталогах, 183
резервная копия, 172
роли, 133смена хостинга, 179
способы заработка, 187
статьи, 104
таксономия, 117
форум, 108
Сервер
баз данных, 52
Сеть Тог, 247
Система
DigiCash, 192
Sape, 189
WebMoney, 195
Хар, 189управления контентом, 13; 99
Смарт-карта, 192
Список пользователей, 129
Статья, 104
Страница
блоки,152тТИЦ, 183
Таблицы, 237
Таксономия, 117
Тема, 80
блоки и регионы, 152
выбор, 143
загрузка, 140; 144
изменение, 140
новый формат, 163
ошибки, 146
создание, 142
состав, 148
уникальная, 141
установка, 145
цвета, 155
Трафик, 25УУстановка темы, 145
Учетная запись, 126
добавление, 132ФФайл настроек РНР, 204
Файл
robots.txt, 185
settings.php, 180
настроек РНР, 204
Форма, 240
Форум, 108XХостер, 22
Хостинг, 22
выбор, 23
оплата, 26
перенос сайта, 179
стоимость, 187
трафик, 25эЭлектронные деньги, 190; 194
ЯЯзык
HTML, 228
РНР, 13; 27
разметки, 13
Яндекс.Деньги, 195