Найти в Дзене

Как установить свою собственную xWiki на примере Centos + PostgreSQL + TomCat.

Эта статья будет в смешанном стиле. Поможет разобраться новичкам, а профи могут просто пропустить текст и перейти к конфигу. Немного о... xWiki это один из многих движков wiki сайтов, с помощью которых вы можете создать свою библиотеку, базу знаний, структурировать любую информацию, как личную, так и для своей компании.
Это движок второго поколения, который характеризуются возможностью структуризации информации и программного доступа к базе вики. Написан на языке Java, лицензия распространения LGPL, функциональность включает в себя блог, инструменты API, комментарии, аутентификацию по LDAP, экспорт страниц в PDF. Используется многими компаниями по всему миру. 25 языков интерфейса, включая русский. Так же более подробно желающие могут сравнить на wikimatrix с наиболее распространенными в Рунете Вики-движками: DokuWiki и MediaWiki. Последнюю версию вы можете скачать на официальном сайте https://www.xwiki.org/xwiki/bin/view/Download/ Предыстория Однажды на работе встал вопрос о сборе в
Оглавление

Эта статья будет в смешанном стиле. Поможет разобраться новичкам, а профи могут просто пропустить текст и перейти к конфигу.

Немного о...

xWiki это один из многих движков wiki сайтов, с помощью которых вы можете создать свою библиотеку, базу знаний, структурировать любую информацию, как личную, так и для своей компании.
Это движок второго поколения, который характеризуются возможностью структуризации информации и программного доступа к базе вики. Написан на языке Java, лицензия распространения
LGPL, функциональность включает в себя блог, инструменты API, комментарии, аутентификацию по LDAP, экспорт страниц в PDF. Используется многими компаниями по всему миру. 25 языков интерфейса, включая русский. Так же более подробно желающие могут сравнить на wikimatrix с наиболее распространенными в Рунете Вики-движками: DokuWiki и MediaWiki.

Последнюю версию вы можете скачать на официальном сайте https://www.xwiki.org/xwiki/bin/view/Download/

Предыстория

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

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

Подготовка

Разработчики предлагают 5 вариантов установки, у каждого свои плюсы и минусы, под конкретную задачу. Так как мне подошел только пятый, и на его запуск я потратил 4 дня чтения инструкций и гуглений, решил с вами поделиться.

  • Использовать облачный сервис: Самый легкий способ, не нужно ничего устанавливать, все файлы и информация хранятся на арендуемых серверах.
  • Использование готового дистрибутива с включенной в него базой данный HSQLDB и Jetty.
  • Использование образа для установки через Docker
  • С использованием *.deb пакета: Используется на Debian системах.
  • С использованием *.war пакета:

Также я выбрал PostgeSQL так как много о ней слышал, достаточно популярная, используется в серьезных компаниях и по ней имеется хорошая инструкция (2500 страниц!!!) с описанием всех функций на русском языке.

Что потребуется:

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

Установка пакетов

Ставим PostgreSQL 12 и сервер

yum -y install postgresql-12 postgresql-server

Инициализируем базу

postgresql-setup initdb

Включаем сервис

systemctl enable postgresql.service


Ставим Джаву

yum -y install java

Переходим в любую папку, я выбрал папку созданного юзера wikiuser

cd /home/wikiuser/

Скачиваем TomCat

wget https://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz

Распаковываем архив

tar xvzf apache-tomcat-9.0.30.tar.gz

xWiki нам нужно поместить в папку /tomcat/webapps/

cd /home/wikiuser/tomcat/webapps

Скачиваем

wget http://nexus.xwiki.org/nexus/content/groups/public/org/xwiki/platform/xwiki-platform-distribution-war/12.0/xwiki-platform-distribution-war-12.0.war

Распаковываем архив

unzip xwiki-platform-distribution-war-12.0.war

А сам архив переименовываем в xwiki

mv xwiki-platform-distribution-war-12.0.war xwiki.war

Должно получиться так

окно менеджера mc
окно менеджера mc

Скачиваем драйвер в папку /webapps/xwiki/WEB-INF/lib

wget https://jdbc.postgresql.org/download/postgresql-42.2.9.jar

Настройка:

PostgreSQL:
Нужно создать базу данных для нашей энциклопедии:

sudo -u postgres -i psql
CREATE DATABASE xwiki
WITH OWNER = postgres
ENCODING = 'UNICODE'
TABLESPACE = pg_default;

Подключаемся к базе \connect xwiki
Создаем пользователя xwiki

CREATE USER xwiki PASSWORD 'xwiki' VALID UNTIL 'infinity';

Передаем привилегии на базу нашему пользователю:

GRANT ALL ON SCHEMA public TO xwiki;

Проверить список баз можно командой \l проверить список пользователей \du

Нужно теперь открыть доступ тем кто будет пользоваться нашей вики:
/var/lib/pgsql/12/data/pg_hba.conf
Открывайте доступ с айпи адресов которые вам нужны и добавляйте их в табличку

host all all 127.0.0.1/32 ident
host all all 192.168.20.0/24 md5
host all all 192.168.255.0/24 md5

/var/lib/pgsql/12/data/postgresql.conf

Уберите решетку # перед listen_addresses (!)
Сюда пишем адреса которые будет слушать сервис SQL

listen_addresses = "*" - слушает всех

Tomcat:

В папке /tomcat/webapps/xwiki/WEB-INF ищем файл hibernate.cfg.xml Нужно закомментить строки кода которые относятся к дефолтной базе с помощью <!-- --> и раскоментить код относящийся к PostgreSQL и удалить слово hibernate из работающих строк. И указать своего пользователя к базе данных. Также нужно прописать настройки, если вы запускаете все это на удаленном сервере. Если на локальном то строка будет выглядеть так: <property name="connection.url">jdbc:postgresql://localhost:5432/xwiki</property>

Я пользуюсь редактором в менеджере файлов , считаю его удобнее чем дефолтный viУстановить можно

yum install mc

запускается командой

mc

В файле xwiki.properties нужно указать папку где будут хранится нужные файлы для работы Ищем строку и указываем любую папку, у меня это environment.permanentDirectory= /var/lib/xwiki/data/для нее нужно назначить абсолютные права доступа, чтобы наша база обращаясь к пользователю имела возможность создавать файлы и каталоги. chmod 777 /var/lib/xwiki/data/

Открываем /home/wikiuser/tomcat/conf/server.xml
Ищем строку с параметрами port ="8080" ...
Добавляем в конец блока

<Connector port="8080" ... URIEncoding="UTF-8"/>

Также тут замените значение адреса, если у вас удаленный сервер.

/home/wikiuser/tomcat/conf/users.xml
В этом файле нужно задать роли для администрирования нашей учетной записи.

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="user" password="password" roles="admin-gui,manager-gui"/>


Пол умолчанию в TomCat включен механизм защиты, который никого не пускает без допуска, выпишем немного прав:
В конце файла добавьте целиком вот этот блок.

/home/wikiuser/tomcat/conf/catalina.policy

grant codeBase "file:${catalina.base}/webapps/xwiki/WEB-INF/lib/-" {
//
for mySQL connection
permission java.net.SocketPermission "127.0.0.1:3306", "connect,resolve";
// XWiki must have access to all properties in read/write
permission java.util.PropertyPermission "*", "read, write";
// Generic detected permissions
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.loader";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "getenv.ProgramFiles";
permission java.lang.RuntimePermission "getenv.APPDATA";
permission java.lang.RuntimePermission "accessClassInPackage.sun.reflect";
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.connector";
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.util.threads";
permission java.lang.RuntimePermission "reflectionFactoryAccess";
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.jmx.interceptor";
permission java.lang.RuntimePermission "accessClassInPackage.com.sun.jmx.mbeanserver";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "getProtectionDomain";
// JAXB permissions
permission javax.xml.bind.JAXBPermission "setDatatypeConverter";
// Serialization related permissions
permission java.io.SerializablePermission "allowSerializationReflection";
permission java.io.SerializablePermission "creator";
permission java.io.SerializablePermission "enableSubclassImplementation";
// Internal resources access permissions
permission java.io.FilePermission "synonyms.txt", "read";
permission java.io.FilePermission "lang/synonyms_en.txt", "read";
permission java.io.FilePermission "quartz.properties", "read";
permission java.io.FilePermission "/templates/-", "read";
permission java.io.FilePermission "/skins/-", "read";
permission java.io.FilePermission "/resources/-", "read";
// MBean related permissions
permission javax.management.MBeanServerPermission "createMBeanServer";
permission javax.management.MBeanPermission "*", "registerMBean";
permission javax.management.MBeanPermission "*", "unregisterMBean";
permission javax.management.MBeanTrustPermission "register";
permission javax.management.MBeanPermission "-#[-]", "queryNames";
permission javax.management.MBeanServerPermission "findMBeanServer";
// LibreOffice/OpenOffice related permissions
permission java.io.FilePermission "/opt/openoffice.org3/program/soffice.bin", "read";
permission java.io.FilePermission "/opt/libreoffice/program/soffice.bin", "read";
permission java.io.FilePermission "/usr/lib/openoffice/program/soffice.bin", "read";
permission java.io.FilePermission "/usr/lib/libreoffice/program/soffice.bin", "read";
// Allow file storage directory reading - for directory and everything underneath
// This is dependent on the setting of environment.permanentDirectory in xwiki.properties
permission java.io.FilePermission "${catalina.base}${file.separator}xwikidata${file.separator}", "read,write,delete";
permission java.io.FilePermission "${catalina.base}${file.separator}xwikidata${file.separator}-", "read,write,delete";
// Allow file storage directory reading - temporary directory and everything underneath
// This is dependent on the setting of environment.temporaryDirectory in xwiki.properties.
permission java.io.FilePermission "${catalina.base}${file.separator}temp${file.separator}", "read,write,delete";
permission java.io.FilePermission "${catalina.base}${file.separator}temp${file.separator}-", "read,write,delete";
};

Запуск

После изменений конфигураций Базы не забывайте перезапускать

systemctl restart postgres-12

Проверить статус службы можно командой

systemctl status postgres-12


Tomcat запускается из папки скриптом
tomcat/bit/startup.sh
и выключается
shutdown.sh

-4

После запуска введя в браузере адрес сервиса http://localhost:8080 (или адрес удаленного сервера) вы должны попасть на страницу настройки

-5

Нажимаем кнопку Manager App , вводим логин и пароль, попадаем на страницу менеджера веб приложений. Где видим все приложения подключенные в данный момент к веб серверу.

-6

Проверяем что xwiki запущена, кликаем на ссылку в первом столбике.
На этом этапе происходит инициализация википедии, если все прошло гладко, то вы увидите мастер настройки первого запуска, а если нет, то ошибки :)

-7

На этом базовая настройка завершена. Буду рад если моя инструкция кому то поможет.