К основному контенту

Развёртывание xWiki на bitnami tomcat стэке под windows

Буквально только что закончил развертывание вики-движка xwiki на bitnami tomcat стэке под windows. По дороге собрал тучу граблей, перепробовал несколько java-контейнеров, в три слоя покрылся матом и даже вынужден был читать мануал на французском языке. В статье я попытался изложить свой этот опыт в надежде, что это кому-нибудь поможет, собранные мною грабли, обойти без боли.
xWiki - очень хороший, удобный и мощный движок. Но проблема его в том, что развертывание его - задача чуть более сложная, чем для mediawiki или docuwiki.
Причина в том, что для развертывания ее нужен сервер приложений java. То бишь - glassfish, tomcat, jboss, wildfly или любой другой. И еще одна заморочка - мануалов почти нет. Те, которые есть, они - про устаревшие сильно версии, а еще - по ним делаешь и ни хрена не выходит у тебя. Мануал, по которому начало что-то получаться, оказался на весь интернет только один, да и то - на французской мове.

Даже просто - как таковых мануалов нет, а не только на русском. Более того, те мануалы, которые есть (в том числе и в первых рядах - официальный) помогают, как рыбе зонтик. В них по большому счету написано: "ставите сервер приложений, жмете кнопочку deploy и всё готово". Ежу понятно, ни хрена оно не готово в действительности.

Но - обо всем по порядку.

Муки выбора

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

Требования к инструменту у меня были вот такими:
  1. бесплатная для коммерческого использования
  2. поддержка доменной авторизации
  3. умение хранить данные в oracle db
  4. русский интерфейс (не обязательно на 100%, но основные пользовательский штуки должны говорить по-русски)
  5. наличие стабильного WYSIWYG-редактора
  6. WYSIWYG-редактор должен уметь вставлять картинки в текст по ctrl+v
  7. поддержка кастомизации интерфейса (скины)
  8. по возможности не медиавики и не докувики - первое слишком академическое, второе - слишком техническое
Немного поискал варианты в интернетах, почитал описания, посмотрел демки. В результате в топ вырвались трое - xwiki, tiki, и еще какая-то хрень на f, начинающаяся. Визуально по демкам понравилась только xwiki, остальные двое не пролазили по какому-либо из требований и от внешнего их вида, который очень напоминал веб 1.0 девяностых годов, сильно укачивало.

Почему tomcat и почему bitnami

Ответ прост и прозаичен. Потому, что с ними у меня получилось, а без них - нет. Я испробовал следующие контейнеры:
  1. glassfish 3 - при добавлении war-файла долго думает и ругается на отсутствие чего-то там в sdk. Попытки поставить последовательно java6, и java5 слегка видоизменяли ошибку, но не устранили ее. Ставить себе ВСЕ версии sdk - я что-то совсем не хочу. В итоге я решил, что с гласфишем 3 - не судьба.
  2. glassfish 4 - при добавлении war-файла долго думает и возвращает полуторакилометровый стэктрэйс, в котором ругается hybernate на какую-то хреновую хрень, которую я не смог понять, хотя усилия прилагал.
  3. binami jboss 7.2.0 - при развертывании ошибок нет, но ни чего не работает. В списке приложений xwiki есть, но на запросы браузера ни кто не отвечает.
  4. bitnami wildfly 10.1 - при развертывании ошибок нет, но ни чего не работает. В списке приложений xwiki есть, но на запросы браузера ни кто не отвечает.
Возможно, пункты 3 и 4 закончились именно так только потому, что я не умею готовить джэйбосса и эту бешеную муху. Но в защиту себя хочу сказать, что с томкатом-то я тоже впервые в жизни познакомился, но результат оказался более веселым.

Итого, как это на практике делается

1. Качаем java sdk с офф. сайта и устанавливаем. Кнопкой "далее".

2. Качаем и устанавливаем binami tomcat. Тоже - без нюансов и не приходя в сознание можно это делать.

3. Качаем war-файл xwiki. Там два варианта: LTS восьмой с чем-то там версии и stable 9.2. Я взял stable, но, думаю, с LTS будет все точно так же.
Вот тут уже начинаются подковырки. В официальном мануале xwiki, раздел Tomcat Installation висит большая красная плашка, предупреждающая о том, какие версии томката с какими версиями xwiki не совместимы. Вообще - это, конечно, козлизм как по мне: описывать, что НЕ подходит, и ни слова не сказать, что подходит.
В моем случае вот такая комбинация завелась: xwiki 9.2, tomcat 8.0.42. Собственно - и то, и это является крайними на момент развертывания версиями.

4. В каталоге ${TOMCAT_HOME}\webapps создаем папку xwiki и копируем туда содержимое war-файла (war-файл - это на самом деле zip-архив).

В этот момент, собственно, развертывание xwiki в контейнере-то и завершено. В теории, надо только перезапустить tomcat и, зайдя на адрес http://localhost/xwiki, мы можем, типа, работать с приложением.
"You know better, than this right? It's web development we're talking about - nothing's EVER just works!"
Makr Pillgrim, Dive into HTML5
Хрена, что называется, с два - мы забыли секретный мауструмент, мать его...

В действительности (у меня по крайней мере), при попытке открыть браузером xwiki, томката стошнило мегатонной строк какого-то мутного стактрэйса, в котором он ругался на hybernate что-то там. Гугление в интернетах ошибки привело вот сюда.
Там автору багрепорта говорят что-то вроде: "ты дурачок, ты ЗАБЫЛ заложить HSQLDB JDBC JAR в WEB-INF/lib". Как будто автор багрепорта сам собирал этот сраный war-файл...

5. В общем, идем сюда, качаем этот грёбаный HSQLDB драйвер, складываем в ${TOMCAT_HOME}\webapps\xwiki\WEB-INF\lib и рестартим томакат.

В результате, если всё сделано так, как описано выше, томкат обять наблюёт вам на коленки мегатонной ошибок. Если не пугаться и не читать все подряд, а почитать только последнюю строку, то там будет написано, что доступа нет к базе xwikidb у пользователя xwiki.
Еще бы он был! Мы ведь базу-то не создали!

6. Идем сюда http://127.0.0.1/phpmyadmin. IP-шник явно указан потому, что битнами по умолчанию конфигурит htaccess в папке phpmyadmin так, чтобы в него можно было зайти ТОЛЬКО с loopback-интерфейса. Логинимся, создаем пользователя и базу, даем пользователю безграничные права на базу. Запоминаем имя пользователя, имя базы, пароль.

7. Далее идем в ${TOMCAT_HOME}\webapps\xwiki\WEB-INF\hibernate.cfg.xml, ищем строчку "<property name="connection.url">".
и делаем вот так:
    <property name="connection.url">jdbc:mysql://localhost:3307/xwiki?useServerPrepStmts=false</property>
    <property name="connection.username">xwiki</property>
    <property name="connection.password">PaSsWoRd</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.charSet">UTF-8</property>
    <property name="hibernate.connection.useUnicode">true</property>
    <property name="hibernate.connection.characterEncoding">utf8</property>
Немного подробнее про строчку "mysql://localhost:3307/xwiki" - она означает, что хост СУБД = localhost, порт ее 3307, а база данных называется "xwiki". Замените на свои имена, иначе опять не запустится.
connection.driver_class и dialect для mysql должны быть именно такими (там по умолчанию какая-то дичь другая). Что писать для других СУБД - можно почитать в оффициальном мануале - там правда написана, я проверял.

Конечная! Вылазь - приехали.

Сохраняем конфиг, рестартим томкат, заходим на http://localost/xwiki и радуемся - оно несколько минут инициализируется и приветствует нас, виляя хвостом, страничкой сетапа.

Всё дальнейшее описано на оффсайте, а еще вот тут:
http://tuska.myxwiki.org/xwiki/bin/view/Test/Russian
https://habrahabr.ru/post/279101/
https://habrahabr.ru/post/265811/
и еще овер дохрена где в интернетах. Конфигурирование её описано богато. Сложность именно с развертыванием. Да и то, я думаю, что это только у тех, кто, как я, - адинэсник и с томкатами всеми этими не знаком, а от трех экранов стактрэйса теряет сознание.

Комментарии

  1. Спасибо за описание вашего опыта установки XWiki! Нахожусь на стадии выбора вики-движка/системы для базы знаний госучреждения, приглядываюсь к XWiki.

    (глюки с публикацией комментариев тут, дубль два)

    ОтветитьУдалить
  2. С виндой все в порядке - это просто я не настоящий сварщик, да и ленивый дюже. Думаю, там проблема была в отсутствии виртуальной памяти у томката, но разбираться было лень и я всё снес.
    С лдапом под линухом все просто и банально. Нужно: 1. доменный пользователь в группе domain users, под которым хвика будет домен шерстить при авторизации и что-то там в конфиг нарисовать в полном соответствии с официальным мануалом.
    Я готов ответить на конкретные вопросы про лдап, но для статьи там материала нет - тупо не о чем писать, оно как-то все берет и работает, даже скучно.

    ОтветитьУдалить
  3. Хвика прикольная, но есть две ложки дёгтя:
    1. Нельзя удалять, перемещать и скрывать дефолтную статью с именем XWiki. В результате весь дефолтный контент и расширения перестают работать, восстановить это нельзя - только пересоздавать вику. Она честно предупреждает перед удалением, что, мол, удалишь - козлёночком станешь, но не запрещает.
    2. С правами хрень какая-то непонятная. Время от времени у некоторых пользователей где-то, я еще не понял, где, кэшируются права намертво и, чтобы пользователь ощутил выдачу ему прав, надо стартовать браузер в режиме инкогнито. К примеру, у меня две субвики: публичная для всех и секретная айтищечная для избранных. Права на общую 'все видят все' и я там в группе администраторов. Но, почему-то, если я захожу в публичку не в режиме инкогнито, то хвика говорит, что у меня (админа!) нет прав на просмотр. Захожу в режиме инкогнито, автоизовываюсь под собой и все права есть. Пока таких страдальцев с правами только двое и оба - айтишники, по этому расследований не проводил.
    3. При редактировании статьи можно вставить картинку по ctrl+v. Это просто офигенно. Но - только одну картинку. при попытке вставить вторую, все заэпись вставляется, но в действительности хвика заменяет ту, первую, картинку на новую. Неприятно, но жить можно.

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

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

    P.S. Для первого ознакомления установил демо-версию под винду с сайта хвики (Graphical Installer for Windows). И тут не понял, у меня tomcat не был установлен, и БД MySQL я не создавал -> это все сделал за меня этот самый демо-установщик (мне только пришлось поднять JRE до 1.8)! Но если разворачивать корпоративную вики, то придется проделать весь путь по вашему описанию. Плохо, что у Bitnami нет XWiki "из коробки", я там проголосовал за создание такого установщика :) Я с серверами приложений тоже не знаком :( все больше Delphi/Oracle да плюс еще микроконтроллеры.
    Не понял по описанию откуда взялась MySQL, установилась вместе с tomcat от Bitnami?

    ОтветитьУдалить
    Ответы
    1. Можно через сабвики, можно через группы - зависит, видимо, от предпочтений. Через сабвики будет проще до администрирования и обеспечения изоляции доступов. Через группы - проще пользователям: им в этом случае не надо знать, что баз знаний несколько и думать, куда идти за инфой.

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

      Да, мускуль включен в bitnami tomcat stack

      Удалить
  5. Не, базу знаний хотим сделать: по задачам, процессам, типовым решениям проблем,
    установка софта, установка железа, кто за что отвечает и т.д. - это про ИТ отдел, другие отделы может тоже захотят сохранять свои наработки-знания (или их заставят).

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения из этого блога

xWiki на Bitnami tomcat virtual machine

Продолжаю эксперименты с xWiki. В предыдущей статье был изложен опыт развертывания под виндой, но с ней что-то не срастается: LDAP-авторизация и кириллица вроде бы завеслись и начали работать, но через сутки почему-то всё это работать перестало без объяснения причин, а в конфиги уже написать нечего - всё, что положено, написано. Разбираться устал, решил экспериментнуть с linux'ом и получилось даже лучше.

Redmine 3, отображение поля "Проект" в форме создания задачи (patch)

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