Частичный переезд из ЖЖ (LiveJournal) на Drupal. Или создание монетизируемого stand-alone блога

 

Эту статейку решил опубликовать для тех, кто захочет создать свой блог, синхонизируемый с ЖЖ. В данном случае блог в ЖЖ не закрывался, а размещаемые в нем записи синхронизировались в stand-alone блог, который планировалось использовать для монетизации блога.
Не смотря на то, что задача не нова и перед переездом было прочитано не мало материалов, выяснилось, что и в данном простом случае есть ряд подводных камней, связанных с плохой документированностью модулей синхронизации, поэтому и решил отдельно расписать процедуру по шагам, надеюсь, тем кто не любит копаться с Perl и править модули Drupal пригодится.
Уровень читателей: начинающие пользователи Drupal (поэтому пишу подробно).
Итак, исходные предпосылки переезда
Если Вас интересуют только технические вопросы переезда, то этот раздел можно пропустить.
Появился заказчик, который хочет заняться монетизацией своего блога в ЖЖ, но его не устраивает текущая ситуация и правила LiveJournal.
Если конкретно, не устраивало следующее:
·         чтобы прикручивать AdSence или публиковать баннеры требуется приобретение платного эккаунта
·         AdSence с точки зрения монетизации не устроило. См. например.
·         ограниченное количество средств монетизации, которые можно использовать, а использование не разрешенных может привести к закрытию блога (недавно попадались пост на эту тему, например, этот).
·         не полный контроль над возможностями блога, связанный, например, с невозможностью убрать необъятные рекламные блоки (на самом деле без нарушения правил можно, но только настроив под это конкретный браузер, что в целом неудобство не снимает), а также почти не развивающийся движок блога
·         снижение популярности ЖЖ в пользу других социальных сетей
дополнительно по этой теме можно почитать в статье Из «ЖЖ»-коммуналки — в особняк: мифы и реальность
Дополнительные требования у заказчика были такие:
·         платный хостинг не более 150 рублей в месяц, но при этом чтобы уровень простоев (недоступности) был минимален
·         автообновление движка блога (чтобы не платить много за поддержку)
·         наличие готовых тем оформления, причем, чтобы при необходимости потом их можно было изменить
Вот такая встала задача.
Реализация решения
При выборе движка выбор вставал между Wordpress и Drupal.
Одна из причин в пользу Drupal была еще и в желании монетизировать блог. Как известно многие, создют stand-alone блоги на WordPress, но волна созданий ГС на этом движке, сопровождающаяся попыткой их монетизировать понизила рейтинг такого рода блогов в глазах поисковых систем (встречал не мало мнений в подтверждение этого, в т.ч. от веб-мастеров из TopSape). Да и миграция блогов с других систем на Drupal в общем в некоторых случаях предположительно могла привести к повышению посещаемости, как раз за счет смену отношения со стороны поисковиков (например см. эту ссылку).  Серьезных аналитических исследований на эту тему не встречал, но и этого было достаточно.
Итак, осталось определиться с хостингом и набором модулей.
В качестве основы была выбрана сборка «Brainstormblogger - система блогов на друпал» от Ильи Азарова.
В качестве хостинга решили остановиться на it-patrol.ru от Gor'a. Удобство было в том, что по цене подходило (тарифный план «Первый» за 100 руб) и то, что в рамках новой услуги Drufly сборка Brainstormblogger, т.е. частично решался вопрос с автообновлением движка блога (частично, т.к. модули LJXP и LJSYNC пока не входят в список автобновляемых и их придется обновлять вручную).
Далее сами работы (т.к. есть специфика установки, связанная с использованием Drufly, я помечу соответствующие строки, как «Drufly», для пользователей других хостингов этап может быть пропущен или сделан по аналогии и другими стредствами:
1.       (Drufly) Установка движка Brainstormblogger, с помощью профиля Drufly
2.       (Drufly) Выбор темы из перечня представляемых в Drufly.
3.       Вопросы базового конфигурирования Drupal опускаем
4.       Устанавливаем доп. модули LJXP (для  кросспостинга в LiveJournal – когда вы добавляете новую запись в stand-alone блог, она переносится и в ЖЖ) и LJSYNC (используется для синхронизации с ЖЖ, т.е. переносит новые посты из ЖЖ в stand-alone блог). В нашем случае нужен был только LJSYNC, но он требует обязательного LJXP. Оба модуля сыроваты, при этом LJSYNC практически не документирован.
5.       (Drufly) На случай, если вы делаете это на тарифных планах Drufly отмечу, что модули доустанавливаются через Advanced Module Manager, при этом их нужно предварительно закачать в соответствующие папки на сервере, а затем найти по «человеческому» названию через Advanced Module Manager - Search Modules – по очереди искать  LiveJournal Sync или LiveJournal crossposter (или просто по списку доступных модулей пролистать до нужного)  и активировать, как обычно.
6.       Далее конфигурируем в админке Drupal модуль и учетную запись для подключения к ЖЖ в 2-х местах:
a.       Управление-Настройка сайта- LiveJournal Sync
b.      Если нужны кросспосты в ЖЖ то еще и Управление-Настройка сайта- LiveJournal crossposter
c.       Даем ключевому блогеру доступы на работу с указанными выше модулями, а также в профиле пользователя, активируем возможность синхронизации по LiveJournal sync, указав логин и пароль к ЖЖ, а также, необходимость копирования тэгов.
d.      Все прочие настройки я оставил по умолчанию.
7.       Синхронизация постов из ЖЖ производится по запуску Cron
8.       В моем случае после первого запуска посты не добавились, ошибки и причины стал выявлять по логам Drupal: «Отчеты-Недавние записи в системном журнале»
a.       Первая ошибка была вызвана невозможностью создать файл имяблога-lj.xml, ошибка распространенная, поэтому создал файл вручную
b.      (Drufly) Вторая ошибка запуска (jbackup.pl) была связана с ограничением со стороны хостинга доступа на запуск бинарников и  Perl  из главной директории. Проблема решилась, после того, как по рекомендации поддержки в модуле ljsync.module строку
$cmd = realpath(drupal_get_path('module', 'ljsync')) .'/jbackup.pl --sync'.
заменил на строку с путем до Perl:
/usr/bin/perl
$cmd = '/usr/bin/perl ' .realpath(drupal_get_path('module', 'ljsync')) .'/jbackup.pl --sync'.
c.       (Drufly) Далее ошибка возникла из-за отсутствия требуемых для Perl модулей, но любезные сотрудники поддержки очень быстро их доустановили, после чего синхронизация заработала.
d.      Какие проблемы могут возникнуть с отсутствием спец. модулей Perl на других хостингах и как их обходить можно почитать здесь.
9.       В целом почти весь блог уже синхронизирован и визуальных особых проблем пока не встретил, хотя в логах периодически ряд ошибок модулей синхронизации встречается, но как уже писал, они несколько сыроваты, поэтому пока явных багов в контенте не заметил. Знаю, что бывают дубли при синхронизации и кросспстинге, но Заказчику эта фича пока не нужна, поэтому прокомментировать не могу.
10.   Дополнительно про особенности синхронизации можно почитать здесь.
После всего этого блог готов и можно прикручивать к нему те системы монетизации, которые вы предпочитаете.
(Drufly) Тем же, кто захочет по моим следам разворачивать блог у Gor'а теперь будет намного проще, т.к. по сути придется только пропатчить модуль для запуска Perl (см. 8b). Проблему, как вариант, можно решить добавив оба модуля в т.ч. пропатченный ljsync в репозиторий Drufly.
В завершение хочу поблагодарить Егора и RXB за помощь в оперативном и качественном решении возникших проблем.

7.05.2010

(c) 2010 Windfinder Все права защищены.

При использовании текста статьи ссылка на сайт-источник cons4you.ru обязательна.

P.S. 22.06.2010 С дублями записей все же столкнулись. Проблема в модуле "LiveJournal Sync". Автор модуля пока исправлений не внес, но на пробу пользователи сделли патч.