Эта статья будет в смешанном стиле. Поможет разобраться новичкам, а профи могут просто пропустить текст и перейти к конфигу.
Немного о...
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 системах.
Также я выбрал PostgeSQL так как много о ней слышал, достаточно популярная, используется в серьезных компаниях и по ней имеется хорошая инструкция (2500 страниц!!!) с описанием всех функций на русском языке.
Что потребуется:
Я столкнулся с такой проблемой касательно линукса и ПО к нему, что вся документация и ссылки довольно быстро устаревают, и все время приходится выискивать актуальные, и вы имейте это ввиду. Все актуальные дистрибутивы можно найти на офф сайтах и просто подменить ссылку. Даже когда я пишу эти строки вышла новая версия xWiki 12.0
- Tomcat https://tomcat.apache.org - http сервис, написанный на Java который и будет запускать нашу вики
Установка пакетов
Ставим 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
Должно получиться так
Скачиваем драйвер в папку /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
После запуска введя в браузере адрес сервиса http://localhost:8080 (или адрес удаленного сервера) вы должны попасть на страницу настройки
Нажимаем кнопку Manager App , вводим логин и пароль, попадаем на страницу менеджера веб приложений. Где видим все приложения подключенные в данный момент к веб серверу.
Проверяем что xwiki запущена, кликаем на ссылку в первом столбике.
На этом этапе происходит инициализация википедии, если все прошло гладко, то вы увидите мастер настройки первого запуска, а если нет, то ошибки :)
На этом базовая настройка завершена. Буду рад если моя инструкция кому то поможет.