CMS Drupal - настройка системы управления сайтом

Версия для печатиОтправить другуPDF version

Drupal

Есть много известных CMS. Drupal среди них занимает не последнее место. Собственно говоря, этот блог тоже работает на движке Drupal...

Итак, будем отталкиваться от того, что Apache, PHP, MySQL уже установлены и корректно работают.

Для начала создадим БД и пользователя MySQL для Drupal. Сделать это можно как из панели phpMyAdmin, так и из командной строки MySQL. Воспользуемся вторым методом ;)

# mysql –u username –p
Enter password:
mysql> create database drupal;

Query OK, 1 row affected (0.00 sec)
mysql> grant all on drupal.* to 'drupal'@'localhost' identified by 'password';

Query OK, 0 rows affected (0.00 sec)
mysql>quit

Теперь приступаем непосредственно к установке Drupal.

# cd /usr/ports/www/drupal6
# make install clean

В меню конфигуратора выбираем работу с БД MySQL:

[X] MYSQL MySQL database support

Не забываем обновить пути после установки порта.

# rehash

Порт оказался "правильным" – после установки вывел список послеустановочных манипуляций. Однако кроме перечисленных действий, рекомендую переместить каталог drupal6 в другое место, или переименовать.

# mv /usr/local/www/drupal6/ /usr/local/www/another_name

С MySQL мы уже разобрались, осталось немного "поправить" Apache. Добавим в /usr/local/etc/apache22/httpd.conf (в секцию alias_module) такие строки:

Alias /drupal "/usr/local/www/another_name"
<Directory "/usr/local/www/another_name">
Options -Indexes FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Для дальнейшей работы необходимо создать файл настроек Drupal и дать право пользователю www писать в этот файл:

# cd /usr/local/www/another_name/sites/default
# cp default.settings.php settings.php
# chown www:www settings.php

Чтобы "упростить" дальнейшею установку, скачиваем русскую локализацию и полностью ее распаковав, скопировать файлы и директории в директорию установленного Drupal

# cd /usr/local/www/another_name
# wget http://ftp.drupal.org/files/projects/ru-6.x-1.3.tar.gz
# tar -xzvf ru-6.x-1.3.tar.gz

После этих манипуляций будет доступен русский язык уже во время установки.
Дальнейшая установка выполняется уже с веб-морды. С этим, думаю, проблем не возникнет. Единственное что – это планировщик заданий.
Рекомендую использовать связку wget и cron.

# cd /usr/ports/ftp/wget && make install clean

Добавляем в /etc/crontab:

30      *       *       *       *       root    /usr/local/bin/wget -O - -q -t  1 http://ip_tachki/another_name/cron.php

Перестартовываем cron:

# killall –HUP cron

Теперь ваш новый сайт доступен за адресом http://ip_tachki/drupal/

Первые шаги после установки

Итак, установка в её начальном виде завершена. Теперь следует произвести несколько важных настроек: установить модули, параметры сайта, защиту от спама и так далее.

Начнём с установки модулей. Нажмите на пункт навигационного меню «Управление», далее «Конструкция сайта» (или сразу отыщите в открывшемся списке всех возможных действий справа от меню ссылку «Модули». Нажмите на «Модули».

Кстати, дополнительные модули можно скачать здесь. Чтобы они появились в списке доступных модулей на сайте, их необходимо распаковать в директорию modules установленого Drupal.

Модули — то, что придаёт Друпалу гибкость. Вы увидите большой список модулей; не следует ставить все подряд из соображений «могут пригодиться» — это один из верных способов превратить ваш сайт в медленное и ресурсоёмкое чудовище.

Ниже приводится список модулей, которые я бы советовал устанавливать блогеру (часть этих модулей уже установлена; я перечисляю их в том порядке, в котором они видны при прокрутке страницы):

Archive: позволяет создать окно навигации по архивам записей — с возможностью поиска по годам и месяцам.

Aggregator: позволяет импортировать сторонние ленты RSS/Atom для чтения и дальнейшего преобразования их на сайте.

Blog: то, что позволяет писать блоги, поддержка формата блога.

Color: позволяет менять раскраску тем оформления.

Comment: позволяет оставлять комментарии к документам, а также следить за действиями (активностью) пользователей.

Contact: позволяет добавить форму обратной связи, чтобы отправлять электронные письма на заранее заданные адреса (можно создать произвольные комбинации адресов, на которые отправлять сообщения по тому или иному поводу)

Content translation: поддержка перевода интерфейса и прочего содержимого на другие языки

Database logging: удобно при поиске разного рода проблем, хранит сообщения о тех или иных событиях, включая системные ошибки, в специальном журнале — администратор может задать, как долго сохраняются там записи, а также просматривать журнал в любой момент.

Help: позволяет использовать контекстную подсказку.

Locale: поддержка языков, отличных от английского.

Menu: позволяет настраивать меню на сайте.

OpenID: позволяет подключить, после создания, несколько OpenId к учётной записи, для упрощения процедуры авторизации.

Path: позволяет переименовывать внутренние ссылки (в т.ч. создавать те самые чистые ссылки, ЧПУ)

PHP Filter: позволяет использовать непосредственно на страницах код PHP. Внимание: крайне опасная при неосторожном обращении вещь. Если не планируете на самом деле исполнять PHP код, не включайте.

Ping: уведомляет т.н. пинг-сервисы о новых материалах на сайте (чтобы те могли в т.ч. побудить поисковые системы заглянуть на сайт и прочесть новый материал). Как только закончат разрабатывать Multiping, я буду рекомендовать его взамен.

Profile: позволяет добавлять в профиль пользователей новые поля.

Search: встроенный поисковый двигатель в пределах сайта.

Statistics: ведёт статистику доступа к сайту.

Syslog: регистрирует события и записывает в системный журнал.

Taxonomy: позволяет использовать категоризацию материалов, включая свободно назначаемые метки (теги)

Tracker: позволяет пользователям следить за изменениями на сайте.

Trigger: позволяет инициировать те или иные действия в ответ на то или иное событие (например, создание или правку материала)

Update status: автоматически следит за наличием обновлений для модулей и тем, если те поддерживают такую возможность. Очень не советую отключать.

Upload: позволяет прицеплять файлы к документам. Отключайте. Вместо него советую использовать модуль IMCE.

Spamspan: позволяет защищать адреса электронной почты в документах. Если этот фильтр активен, то адреса преобразуются в нераспознаваемую большинством спам-ботов форму.

Notify: позволяет рассылать уведомления о тех или иных изменениях на сайте

Messaging, Messaging PHP Mailer: возможность отправлять уведомления и системные сообщения при помощи электронной почты. PHPMailer — специальный класс, позволяющий удобно составлять и отправлять разными способами электронные письма.

Block translation, Content type translation, Internationalization, Menu translation, Profile translation, String translation, Synchronize translations, Taxonomy translation: этот комплект позволяет переводить те или иные части системы на другие языки, а также создавать многоязычные версии одних и тех же сущностей.

PDF version: позволяет сохранить текущую страницу в pdf-файл. Необходимо подтянуть дополнительно программу конвертации. Рекомендую использовать TCPDF - поддерживает кирилицу без дополнительных танцев с бубном.

Printer-friendly pages (core), Send by email: возможность видеть страницы в оптимальном для принтера виде, а также пересылать их электронной почтой (надоедать друзьям, показывая им интересные страницы прямо в почте).)

CAPTCHA, Text CAPTCHA: одиозный и малополезный, с точки зрения одних, но во многом помогающий от потока спама модуль. Я не использую графические капчи, мне лично хватает текстовых (арифметическая задача или выбор строки из множества строк).

IMCE: позволят загружать на сервер изображения/файлы с функцией просмотра. Поддерживает персональные пользовательские директории и квотирование.

Atom: возможность поставлять RSS каналы в формате Atom.

Tagadelic: поддержка «облака меток» — представление списка категорий в виде «облака», где самая популярная категория рисуется более крупным шрифтом.

XML Sitemap, XML Sitemap Engines, XML Sitemap Node: позволяет предоставлять т.н. карту сайта для поисковых машин, Sitemap. Если передать эту карту, а такие инструменты есть для Яндекса и для Google, то индексирование страниц сайта пройдёт много эффективнее.

DHTML Menu: по умолчанию, многие меню в блоке навигации иерархические. Если не ставить этот модуль. то придётся несколько раз перезагружать страницу. чтобы добраться до нужной иерархии. Этот модуль экономит время и ресурсы, открывая сложные иерархии достаточно грациозно и красиво.

Meta tags: позволяет назначать каждому документу свои мета-теги (метки и описание как минимум), в т.ч. специальные теги для головной страницы сайта.

Path auto: позволяет создавать чистые ссылки нужного формата.

Sitemap: строит сводную карту сайта, для людей (ранее упоминавшаяся — для поисковых машин).

Token, Token actions: поддержка макро-элементов и действий для них, необходима для Pathauto.

Trackback: поддержка обратных уведомлений (трекбэков) стороннего сайта об изменениях на данном.

 

Нажимаем кнопку «Сохранить» и смотрим за процессом установки модулей и импорта переводов.  Не забываем также о зависимостях. Иногда один модуль требует, что бы был включен другой. За этим нужно следить.

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

Также, я бы советовал пойти и настроить дату. Меню: «Управление» — «Настройка сайта».

Если вы указали поддержку экспорта страниц в PDF, не забудьте посетить страницу настройки этой функции.

 

Роли и права

Прежде, чем настраивать роли, вкратце поясню, что это такое. Друпал использует систему управления доступом к тем или иным данным и возможностям на основании т.н. ролей. Можно рассматривать это как группы в операционных системах — участие в той или иной группе даёт те или иные полномочия. Есть две встроенные роли: анонимные (неавторизованные, не представившиеся системе) пользователи и авторизованные пользователи. Все прочие роли нужно создавать.

Роли удобны для «точечного» назначения прав в тех случаях, когда не хочется, чтобы все до единого авторизованные пользователи умели исполнять те или иные действия. Скажем, вы можете создать роль «Блогеры» и дать ей право создавать, править и удалять записи в блоге. Не нужно добавлять что-то ещё — права ролей суммируются (если одна из ролей, к которым отнесён пользователь, имеет некие полномочия, а другие роли такоих полномочий не имеют — пользователь будет иметь все полномочия этой роли. Поэтому не стоит повторять то, что уже умеет авторизованный пользователь.

В нашем примере мы создадим административную роль, которая может всё, создадим нового пользователя, которого произведём таким образом в администраторы, и перестанем, наконец, использовать суперпользователя.

Меню: «Управление» — «Управление пользователями» — «Роли».

В поле слева от «добавить роль» вводим имя новой роли. Можно вводить что хотите, я обычно пишу что-то вроде «Administrator». После того, как роль добавлена, назначим ей полномочия.

Меню: «Управление» — «Управление пользователями» — «Разрешения».

В этом поле помечаем все до единой галочки для роли «Administrator» (или как вы её хотите назвать). Сохраняем изменения.

Теперь делаем то, что многие делают первым: запретим пока что регистрироваться всем желающим на нашем сайте. Меню: «Управление» — «Управление пользователями» — «Параметры регистрации». Выберем пункт, по которому только администратор может создавать учётные записи. Сохраняем изменения.

 

Captha

Теперь настроим анти-спам, CAPTCHA. Меню: «Управление» — «Управление пользователями» — «CAPTCHA».

Поскольку идентификаторы форм, которые можно защитить «тестом на человечность», так упрощённо переводится CAPTCHA, даны по-английски, поясню:

comment_form: форма отправки комментариев. Обязательно защитить, иначе спамеры в момент наводнят ваш сайт мусором.

comment_mail_page: форма отправки сообщений с сайта. Если позволяете анонимным пользователям отправлять вам сообщения (а надо позволять, иначе потеряете множество потенциальных партнёров), защитите. Иначе спамеры будут слать вам свои послания долго и с удовольствием.

comment_mail_user: то же, но для сообщений конкретному пользователю. Я обычно тоже защищаю.

user_login: форма входа (авторизации). Я обычно не защищаю: если спамер пробил прежний тест и смог зарегистрироваться, то и этот пробьёт. А нормальных людей это раздражает.

user_login_block: то же, но в блоке (обычно над блоком навигации). Не защищаю по той же причине.

user_pass: поле отправления забытого пароля. Обычно защищаю, чтобы меня не развлекали письмами о созданном новом пароле.

user_register: регистрация нового пользователя. Обычно защищаю.

Какую именно версию теста — графику, арифметику или выбор строки — вы выберете. не очень важно. Эффективность их сопоставима.

Если вам потребуется добавить тест CAPTCHA на любую другую форму, пометьте галочкой «Добaвить административную ссылку CAPCTHA на формы», сохраните, затем перейдите под именем с административными полномочиями на страницу с нужной формой и добавьте туда тест. Всё очень просто. Потом советую эту галочку снять, ибо ссылки с предложением поставить CAPTCHA вскоре начнут раздражать.

 

Теперь, когда CAPTCHA настроена, можно заняться счётчиками. Все любят показывать, сколько раз читали ту или иную страницу. Настроим эту возможность. Меню «Управление» — «Отчёты» — «Настройки журнала доступа».

Тут всё просто: помечаем включенным «Счётчик просмотра содержимого» и, если нас интересует ведение системных журналов — в том числе о разных ошибках и предупреждениях — пометим также «Включить журнал доступа». Внимание! Не ставьте слишком большой период хранения записей в журнале — база данных, особенно на посещаемом сайте, начнёт стремительно раздуваться. Теперь не забудьте вернуться в «Разрешения» и убедиться, что и анонимным, и авторизованным пользователям позволено видеть счётчики.

Дальше вам нужно войти в «Управление» — «Управление пользователями» — «Пользователи» и добавить нового пользователя вручную, не забыв включить его в роль администраторов. После этого выйти из системы и войти уже под именем нового пользователя.

Дальнейшие настройки — настройки темы, блоков, способов комментирования и так далее — это тема для следующих статей. По окончании того, что описано в этой, у вас есть достаточно защищённая система, уже готовая для ведения блога. Она относительно голая, нет ни облаков тегов, ни форм со счётчиками и списком комментариев. Всё это вам под силу, и можете сжелать сами...

Вроде все…
 

Ваша оценка: Нет Средняя: 4.5 (6 голосов)

первый шаг после установки не

первый шаг после установки не понятен.

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

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

 

PS крутая капча, минут 5 набирал....

В случае, если будет только

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

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

Также перемещение каталога способствует защите от взлома. Злоумышленнику необязательно знать физический путь к сайту на сервере.

ПыСы. Над капчей тоже поиздевался. Теперь еще веселей :)

"Фся такая цветная :)"

 А как тогда с обновлениями ?

 А как тогда с обновлениями ? Каждый раз прийдется перемещать папку или переийменовывать или используете какой то хитрый трюк?

К сожалению, на "конвеер" все

К сожалению, на "конвеер" все это дело не поставил... После определенного момента управление отдается заказчику, который и должен следить за своим движком. Ведь обновляют же как то движок и модуля пользователи, имея в распоряжении только доступ по FTP ;)

Собственно перемещаю каталог потому, что на сервере крутится уже с десяток сайтов на "Drupal". И как их все держать в одном каталоге?

 Понятно, спасибо за ответ!

 Понятно, спасибо за ответ! Можно еще уточнить для чайника, почему стандартные пути (имена папок) могут быть череваты безопасностью системы, к примеру если я ставлю из портов и ничего не меняю ? Спасибо !

Взято отсюда Path Disclosure

Взято отсюда

Path Disclosure (раскрытие пути)

Любой мало-мальски серьезный взлом требует основательной подготовки, анализа сервера, самого сайта, софта. Пока мы не попали внутрь, мы не знаем иерархии сервера и не можем адекватно ориентироваться в путях. Например, документ index.php может лежать как в /home/target.com/docs/index.php, так и в любом месте с похожим, а порою вовсе не похожим адресом. Чтобы знать точно иерархию, надо встать на колени перед сервером, помолиться и попросить его "раскрыть путь" - что по англицки значится как "path disclosure".

Для чего использовать эту информацию? Ну например: у вас есть уязвимость на локальный include и возможность закачать аттачмент на форум - но вы не знаете, какой адрес (даже относительный) у папки аттачментов форума, а наугад найти не получилось. Приходится искать другими методами - более осмысленными.
 

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Из /dev/null еще никто не возвращался.