Буквально только что закончил развертывание вики-движка xwiki на bitnami tomcat стэке под windows. По дороге собрал тучу граблей, перепробовал несколько java-контейнеров, в три слоя покрылся матом и даже вынужден был читать мануал на французском языке. В статье я попытался изложить свой этот опыт в надежде, что это кому-нибудь поможет, собранные мною грабли, обойти без боли.
xWiki - очень хороший, удобный и мощный движок. Но проблема его в том, что развертывание его - задача чуть более сложная, чем для mediawiki или docuwiki.
Причина в том, что для развертывания ее нужен сервер приложений java. То бишь - glassfish, tomcat, jboss, wildfly или любой другой. И еще одна заморочка - мануалов почти нет. Те, которые есть, они - про устаревшие сильно версии, а еще - по ним делаешь и ни хрена не выходит у тебя. Мануал, по которому начало что-то получаться, оказался на весь интернет только один, да и то - на французской мове.
Даже просто - как таковых мануалов нет, а не только на русском. Более того, те мануалы, которые есть (в том числе и в первых рядах - официальный) помогают, как рыбе зонтик. В них по большому счету написано: "ставите сервер приложений, жмете кнопочку deploy и всё готово". Ежу понятно, ни хрена оно не готово в действительности.
Но - обо всем по порядку.
Требования к инструменту у меня были вот такими:
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, мы можем, типа, работать с приложением.
В действительности (у меня по крайней мере), при попытке открыть браузером 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">".
и делаем вот так:
connection.driver_class и dialect для mysql должны быть именно такими (там по умолчанию какая-то дичь другая). Что писать для других СУБД - можно почитать в оффициальном мануале - там правда написана, я проверял.
Всё дальнейшее описано на оффсайте, а еще вот тут:
http://tuska.myxwiki.org/xwiki/bin/view/Test/Russian
https://habrahabr.ru/post/279101/
https://habrahabr.ru/post/265811/
и еще овер дохрена где в интернетах. Конфигурирование её описано богато. Сложность именно с развертыванием. Да и то, я думаю, что это только у тех, кто, как я, - адинэсник и с томкатами всеми этими не знаком, а от трех экранов стактрэйса теряет сознание.
xWiki - очень хороший, удобный и мощный движок. Но проблема его в том, что развертывание его - задача чуть более сложная, чем для mediawiki или docuwiki.
Причина в том, что для развертывания ее нужен сервер приложений java. То бишь - glassfish, tomcat, jboss, wildfly или любой другой. И еще одна заморочка - мануалов почти нет. Те, которые есть, они - про устаревшие сильно версии, а еще - по ним делаешь и ни хрена не выходит у тебя. Мануал, по которому начало что-то получаться, оказался на весь интернет только один, да и то - на французской мове.
Даже просто - как таковых мануалов нет, а не только на русском. Более того, те мануалы, которые есть (в том числе и в первых рядах - официальный) помогают, как рыбе зонтик. В них по большому счету написано: "ставите сервер приложений, жмете кнопочку deploy и всё готово". Ежу понятно, ни хрена оно не готово в действительности.
Но - обо всем по порядку.
Муки выбора
В рамках проекта по организации первой линии поддержки для отдела разработки передо мной встала задача развернуть какую-то базу знаний, в котрой мы будем хранить инструкции, howto, регламенты и прочую полезную информацию.Требования к инструменту у меня были вот такими:
- бесплатная для коммерческого использования
- поддержка доменной авторизации
- умение хранить данные в oracle db
- русский интерфейс (не обязательно на 100%, но основные пользовательский штуки должны говорить по-русски)
- наличие стабильного WYSIWYG-редактора
- WYSIWYG-редактор должен уметь вставлять картинки в текст по ctrl+v
- поддержка кастомизации интерфейса (скины)
- по возможности не медиавики и не докувики - первое слишком академическое, второе - слишком техническое
Почему tomcat и почему bitnami
Ответ прост и прозаичен. Потому, что с ними у меня получилось, а без них - нет. Я испробовал следующие контейнеры:- glassfish 3 - при добавлении war-файла долго думает и ругается на отсутствие чего-то там в sdk. Попытки поставить последовательно java6, и java5 слегка видоизменяли ошибку, но не устранили ее. Ставить себе ВСЕ версии sdk - я что-то совсем не хочу. В итоге я решил, что с гласфишем 3 - не судьба.
- glassfish 4 - при добавлении war-файла долго думает и возвращает полуторакилометровый стэктрэйс, в котором ругается hybernate на какую-то хреновую хрень, которую я не смог понять, хотя усилия прилагал.
- binami jboss 7.2.0 - при развертывании ошибок нет, но ни чего не работает. В списке приложений xwiki есть, но на запросы браузера ни кто не отвечает.
- bitnami wildfly 10.1 - при развертывании ошибок нет, но ни чего не работает. В списке приложений xwiki есть, но на запросы браузера ни кто не отвечает.
Итого, как это на практике делается
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>Немного подробнее про строчку "mysql://localhost:3307/xwiki" - она означает, что хост СУБД = localhost, порт ее 3307, а база данных называется "xwiki". Замените на свои имена, иначе опять не запустится.
<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>
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/
и еще овер дохрена где в интернетах. Конфигурирование её описано богато. Сложность именно с развертыванием. Да и то, я думаю, что это только у тех, кто, как я, - адинэсник и с томкатами всеми этими не знаком, а от трех экранов стактрэйса теряет сознание.
Спасибо за описание вашего опыта установки XWiki! Нахожусь на стадии выбора вики-движка/системы для базы знаний госучреждения, приглядываюсь к XWiki.
ОтветитьУдалить(глюки с публикацией комментариев тут, дубль два)
С виндой все в порядке - это просто я не настоящий сварщик, да и ленивый дюже. Думаю, там проблема была в отсутствии виртуальной памяти у томката, но разбираться было лень и я всё снес.
ОтветитьУдалитьС лдапом под линухом все просто и банально. Нужно: 1. доменный пользователь в группе domain users, под которым хвика будет домен шерстить при авторизации и что-то там в конфиг нарисовать в полном соответствии с официальным мануалом.
Я готов ответить на конкретные вопросы про лдап, но для статьи там материала нет - тупо не о чем писать, оно как-то все берет и работает, даже скучно.
Хвика прикольная, но есть две ложки дёгтя:
ОтветитьУдалить1. Нельзя удалять, перемещать и скрывать дефолтную статью с именем XWiki. В результате весь дефолтный контент и расширения перестают работать, восстановить это нельзя - только пересоздавать вику. Она честно предупреждает перед удалением, что, мол, удалишь - козлёночком станешь, но не запрещает.
2. С правами хрень какая-то непонятная. Время от времени у некоторых пользователей где-то, я еще не понял, где, кэшируются права намертво и, чтобы пользователь ощутил выдачу ему прав, надо стартовать браузер в режиме инкогнито. К примеру, у меня две субвики: публичная для всех и секретная айтищечная для избранных. Права на общую 'все видят все' и я там в группе администраторов. Но, почему-то, если я захожу в публичку не в режиме инкогнито, то хвика говорит, что у меня (админа!) нет прав на просмотр. Захожу в режиме инкогнито, автоизовываюсь под собой и все права есть. Пока таких страдальцев с правами только двое и оба - айтишники, по этому расследований не проводил.
3. При редактировании статьи можно вставить картинку по ctrl+v. Это просто офигенно. Но - только одну картинку. при попытке вставить вторую, все заэпись вставляется, но в действительности хвика заменяет ту, первую, картинку на новую. Неприятно, но жить можно.
В остальном - для корпоративе отличнейше вещь. Субвики - гениальная фишка. Как таковая система раздачи прав тоже прикольная - хочешь группы, а хочешь персонально назначай.
Приветствую!
ОтветитьУдалитьУ нас планируется сделать приватные разделы для каждого отдела (даже читать нельзя другому отделу), ну и общий раздел, я думаю, с доступом для всех (как минимум на чтение). Например, в общем разделе можно разместить нормативные документы для всей организации, а вот в разделах отделов секуритичную информацию отделов, их частные инструкции и знания.
Правильно я понимаю, что такую структуру разграничения вики по отделам я должен буду реализовать при помощи сабвики и групп пользователей?
P.S. Для первого ознакомления установил демо-версию под винду с сайта хвики (Graphical Installer for Windows). И тут не понял, у меня tomcat не был установлен, и БД MySQL я не создавал -> это все сделал за меня этот самый демо-установщик (мне только пришлось поднять JRE до 1.8)! Но если разворачивать корпоративную вики, то придется проделать весь путь по вашему описанию. Плохо, что у Bitnami нет XWiki "из коробки", я там проголосовал за создание такого установщика :) Я с серверами приложений тоже не знаком :( все больше Delphi/Oracle да плюс еще микроконтроллеры.
Не понял по описанию откуда взялась MySQL, установилась вместе с tomcat от Bitnami?
Можно через сабвики, можно через группы - зависит, видимо, от предпочтений. Через сабвики будет проще до администрирования и обеспечения изоляции доступов. Через группы - проще пользователям: им в этом случае не надо знать, что баз знаний несколько и думать, куда идти за инфой.
УдалитьЯ ваших требований и условий не знаю, но я бы на вашем месте подумал над вопросом, не хотите ли вы систему электронного документооборота хвикой заменить. Если пытаетесь, то этого точно делать не стоит.
Да, мускуль включен в bitnami tomcat stack
Не, базу знаний хотим сделать: по задачам, процессам, типовым решениям проблем,
ОтветитьУдалитьустановка софта, установка железа, кто за что отвечает и т.д. - это про ИТ отдел, другие отделы может тоже захотят сохранять свои наработки-знания (или их заставят).