Domenica, 26 Giugno 2016 09:54

Installare Xwiki in RH/CentOS/Fedora in WildFly/Jboss In evidenza

La guida pubblica per il deploy di Xwiki non descrive in modo completo la procedura (almeno per una persona con poca esperienza).
Questa guida descrive l'installazione partendo dall'Application Server, poi la preparazione del pacchetto WAR e, infine, l'inizializzazione di Xwiki.
Un howto essenziale e pratico.

 

1. Premessa

Questa guida descrive la preparazione ed il deploy di Xwiki 7.4.3 in WildFly 9.0.2 o 10.0.0 in una distribuzione Linux CentOS 7. Non ho potuto verificare, ma l'howto dovrebbe funzionare anche con JBoss.

La guida descrive anche come risolvere il bug con Jython (cf. 3.4. Fixare Jython e http://jira.xwiki.org/browse/XWIKI-7984).

La nostra installazione avrà le seguenti caratteristiche:

  • Rete

    • hostname: server.example.com

    • ip: 192.168.0.1

  • database:

    • server: MariaDB

    • dbhost: localhost

    • dbname: xwiki

    • dbuser: xwiki

    • dbpass: xwiki

  • Java: OpenJDK 1.8.0_91

  • AS:

    • prodotto: WildFly

    • versione: 10.0.0 final

    • username:

    • password:

  • Xwiki:

    • versione: 7.4.4 SNAPSHOT

    • password: zzzAAA123_m

    • Autenticazione LDAP: SI

    • Auto start LibreOffice: SI

  • LibreOffice 4.3

  • CentOS: 7.2.

Prima di procedere con la descrizione esecutiva alcune note per comprendere meglio la guida:

  • le configurazioni sono volutamente insicure. Questo perché il documento è didattico e perché le configurazioni reali sono molto diverse

  • non descrivo l'installazione e configurazione del reverse-proxy. In una installazione reale è opportuno prevederlo e attivarlo

  • alcune configurazioni e/o servizi di Xwiki si impostano in file di configurazione all'interno del pacchetto WAR e non si controllano dall'interfaccia grafica. Pertanto è bene avere un'idea precisa del risultato e dei servizi che si vogliono ottenere

  • se si opta per usare HsqlDB, database default, si tenga presente che riavviando e ri-deployando Xwiki si perdono tutti i dati

  • teniamo disattive le statistiche per motivi di performance. Il servizio statistiche si controllo dai file di configurazione e non dai pannelli grafici.

2. Preparazione

  • Installare CentOS nella configurazione default “Minimal server”

  • terminata l’installazione facciamo login, come root,

  • installiamo i pacchetti extra necessari e aggiorniamo

yum install epel-release deltarpm wget graphviz -y
yum update -y
  • disattiviamo SELinux.

    Editiamo /etc/sysconfig/selinux e modifichiamo la seguente stringa (attenzione: questo cambio diventerà attivo solo dopo il riavvio!)

...
SELINUX=enforcing
...
  • installiamo MariaDB

yum install mariadb mariadb-server
  • editiamo /etc/my.cnf e aggiungiamo la seguente direttiva nella sezione [mysqld]

...
[mysqld]
max_allowed_packet=64M
...
  • avviamo il database

systemctl enable mariadb
systemctl start mariadb
  • securizziamo il DB

    NB: in questo processo è sufficiente scegliere la password per l'utente/amministratore root. A tutte le altre domande basta rispondere “Yes” (scelta predefinita)

mysql_secure_installation
...
Set root password? [Y/n] y
New password: mypassword
Re-enter new password: mypassword
Password updated successfully!
Reloading privilege tables..
... Success!
...
  • aprire il firewall

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp –permanent
systemctl reload firewalld
  • reboottare.

A questo punto la macchina è pronta. Passiamo dunque a installare le dipendenze, Java, WildFly e Xwiki.

3. Installare Xwiki

3.1. Creare il database

Connettiamoci al monitor di MariaDB e creiamo il database e l'utente

mysql -u root -p
MariaDB [(none)]> create database xwiki default character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on *.* to xwiki@localhost identified by 'xwiki';
MariaDB [(none)]> quit;

3.2. Installare LibreOffice

Installiamo LibreOffice nella configurazione server. Xwiki può usare un'istanza di LibreOffice per traduzioni di formato ed import/export con formati Word e ODT:

yum install libreoffice libreoffice-headless -y

3.3. Installare Java

  • Creiamo un directory temporanea per mettere i pacchetti e manipolare, poi, il war

mkdir /opt/Tmp
  • installiamo Java

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
  • scarichiamo i connector per HyperSQL e MySQL

    NB: HyperSQL non è necessario. Per completezza e per avere un pacchetto full precediamo

wget http://downloads.sourceforge.net/project/hsqldb/hsqldb/hsqldb_2_3/hsqldb-2.3.4.zip
wget http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.39/mysql-connector-java-5.1.39.jar
unzip hsqldb-2.3.4.zip
mv hsqldb-2.3.4/hsqldb/lib/hsqldb.jar hsqldb-2.3.4.jar
/bin/rm -R hsqldb-2.3.4
  • passiamo a scaricare WildFly

wget http://download.jboss.org/wildfly/10.0.0.Final/wildfly-10.0.0.Final.tar.gz
  • creiamo il gruppo e l'utente per far girare WildFly

useradd -r -d /opt/wildflay -s /sbin/nologin wildflay
  • estraiamo WildFly e correggiamo i permessi

tar xfz wildfly-10.0.0.Final.tar.gz -C /opt/
ln -s /opt/wildfly-10.0.0.Final /opt/wildflay
  • predefiniamo la configurazione full per WildFly

mv /opt/wildfly/standalone/configuration/standalone.xml{,.ORG}
cp -p /opt/wildfly/standalone/configuration/standalone{-full.xml,.xml}
  • editiamo la configurazione

vi /opt/wildfly/standalone/configuration/standalone.xml
  • aggiorniamo le seguenti stringhe

<!-- ... -->
<http-listener name="default" max-parameters="5000" socket-binding="http" redirect-socket="https"/>
<!-- ... -->
<interface name="management">
	<inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
<!-- ... -->
<interface name="public"> 
	<inet-address value="${jboss.bind.address:0.0.0.0}"/>
<!-- ... -->
<interface name="unsecure"> 
	<inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
<!-- ... -->
  • correggiamo i permessi

chown wildflay.wildflay -R /opt/wildflay/
  • creiamo l'amministratore per WildFly

/opt/wildfly/bin/add-user.sh 

What type of user do you wish to add? 
 a) Management User (mgmt-users.properties) 
 b) Application User (application-users.properties) 
(a): 
 
Enter the details of the new user to add. 
Using realm 'ManagementRealm' as discovered from the existing property files. 
Username : adminwf 
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file. 
 - The password should be different from the username 
 - The password should not be one of the following restricted values {root, admin, administrator} 
 - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s) 
Password : tLA4d-ehfX
Re-enter Password : tLA4d-ehfX
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]: 
About to add user 'adminwf' for realm 'ManagementRealm' 
Is this correct yes/no? yes 
Added user 'adminwf' to file '/opt/wildfly-10.0.0.Final/standalone/configuration/mgmt-users.properties' 
Added user 'adminwf' to file '/opt/wildfly-10.0.0.Final/domain/configuration/mgmt-users.properties' 
Added user 'adminwf' with groups  to file '/opt/wildfly-10.0.0.Final/standalone/configuration/mgmt-groups.properties' 
Added user 'adminwf' with groups  to file '/opt/wildfly-10.0.0.Final/domain/configuration/mgmt-groups.properties' 
Is this new user going to be used for one AS process to connect to another AS process? 
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. 
yes/no? yes 
To represent the user add the following to the server-identities definition 
  • creiamo il file /usr/lib/systemd/system/wildfly.service

vi /usr/lib/systemd/system/wildfly.service
  • e inseriamo il seguente contenuto

[Unit]
Description=The WildFly Application Server
After=syslog.target network.target
Before=httpd.service

[Service]
User=wildfly
Group=wildfly
PIDFile=/var/run/wildfly/wildfly.pid
ExecStart=/opt/wildfly/bin/standalone.sh
StandardOutput=null

[Install]
WantedBy=multi-user.target
  • istruiamo systemd perché legga il nuovo script

systemctl daemon-reload
  • abilitiamo e avviamo WildFly

systemctl enable wildfly
systemctl start wildfly

3.4. Fixare Jython

Procediamo creando un fix del pacchetto Jython compatibile per tutti gli AS.

Dal momento che questo pacchetto è già all'interno di Xwiki ed è già modificato per avere il nostro fix procediamo con una prima operazione di spacchettamento del War di Xwiki comune a tutte le attività successive.

  • Creiamo le directory temporanee

mkdir /opt/Tmp/wiki /opt/jython/xwiki /opt/jython/org /opt/jython/fix
  • scarichiamo Xwiki e Jython

    NB: scarichiamo l'ultima release del braccio LTS

cd /opt/jython/org
wget http://search.maven.org/remotecontent?filepath=org/python/jython-standalone/2.7.0/jython-standalone-2.7.0.jar
cd /opt/Tmp/wiki
wget http://maven.xwiki.org/snapshots/org/xwiki/enterprise/xwiki-enterprise-web/7.4.4-SNAPSHOT/xwiki-enterprise-web-7.4.4-20160610.140243-29.war
  • estraiamo i file dai pacchetti

cd /opt/jython/org
jar -xf jython-standalone-2.7.0.jar
rm jython-standalone-2.7.0.jar
cd /opt/Tmp/wiki
jar -xf xwiki-enterprise-web-7.4.4-20160610.140243-29.war
rm xwiki-enterprise-web-7.4.4-20160610.140243-29.war
  • recuperiamo il jar di Jython contenuto in Xwiki

mv WEB-INF/lib/jython-standalone-2.7.0-xwiki-2.jar /opt/jython/xwiki/
  • estraiamo il jar appena recuperato

cd /opt/jython/xwiki
jar -xf jython-standalone-2.7.0-xwiki-2.jar
rm jython-standalone-2.7.0-xwiki-2.jar
  • copiamo i file necessari dal pacchetto originale

cp -R /opt/jython/xwiki/* /opt/jython/fix/
cp -R /opt/jython/org/Lib/* /opt/jython/fix/
  • creiamo il nuovo jar e mettiamolo al posto del vecchio in Xwiki

cd /opt/jython/fix/
jar -cf /opt/Tmp/wiki/WEB-INF/lib/jython-standalone-2.7.0-xwiki-2-fix.jar .

Ora il WAR esploso di Xwiki ha il jar di Jython fixato.

3.5. Installare Xwiki

L'installazione avviene in due passi: la preparazione del war già parzialmente fatta e, dopo il deploy in WildFly, l'inizializzazione.

 

3.5.1. Preparazione del war

  • Torniamo nella directory dove abbiamo estratto i file del WAR di Xwiki

cd /opt/Tmp/wiki
  • copiamo i connector HsqlDB e Mysql

    NB: il connector HsqlDB in realtà non lo useremo. Lo installiamo a scopo didattico

cp /opt/Tmp/mysql-connector-java-5.1.39.jar WEB-INF/lib/
cp /opt/Tmp/hsqldb-2.3.4.jar WEB-INF/lib/
  • editiamo hibernate.cfg.xml per impostare l'accesso al database

vi WEB-INF/hibernate.cfg.xml
  • aggiorniamo come segue (commentiamo la sezione HsqlDB e settiamo MySQL)

...
    <!-- Configuration for the default database. 
         Comment out this section and uncomment other sections below if you want to use another database. 
         Note that the database tables will be created automatically if they don't already exist. 

         If you want the main wiki database to be different than "xwiki" (or the default schema for schema based engines) 
         you will also have to set the property xwiki.db in xwiki.cfg file 

    <property name="connection.url">jdbc:hsqldb:file:${environment.permanentDirectory}/database/xwiki_db;shutdown=true</property> 
    <property name="connection.username">sa</property> 
    <property name="connection.password"></property> 
    <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> 
    <property name="dialect">org.hibernate.dialect.HSQLDialect</property> 

    <mapping resource="xwiki.hbm.xml"/> 
    <mapping resource="feeds.hbm.xml"/> 
    <mapping resource="activitystream.hbm.xml"/> 
    <mapping resource="instance.hbm.xml"/> 
    <mapping resource="mailsender.hbm.xml"/> 
    --> 

    <!-- MySQL configuration. 
         Uncomment if you want to use MySQL and comment out other database configurations. 
         Notes: 
           - if you want the main wiki database to be different than "xwiki" 
             you will also have to set the property xwiki.db in xwiki.cfg file 
    --> 

    <property name="connection.url">jdbc:mysql://localhost/xwiki</property> 
    <property name="connection.username">xwiki</property> 
    <property name="connection.password">xwiki</property> 
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> 
    <property name="dbcp.poolPreparedStatements">true</property> 
    <property name="dbcp.maxOpenPreparedStatements">20</property> 
    <mapping resource="xwiki.hbm.xml"/> 
    <mapping resource="feeds.hbm.xml"/> 
    <mapping resource="activitystream.hbm.xml"/> 
    <mapping resource="instance.hbm.xml"/> 
    <mapping resource="mailsender.hbm.xml"/> 
...
  • editiamo xwiki.cfg

vi WEB-INF/xwiki.cfg
  • aggiorniamo come segue

    NB: le due KEY sono generate casualmente

...
xwiki.superadminpassword=zzzAAA123_m
...
xwiki.authentication.validationKey=oDYOif99kMbzWSQwNqX1j2WuQNE 
xwiki.authentication.encryptionKey=wGazQz3Iz49ldJ2YemBDg6wmMrM 
...
xwiki.authentication.ldap=1
...
xwiki.plugin.graphviz.dotpath=/usr/bin/dot 
xwiki.plugin.graphviz.neatopath=/usr/bin/neato
...
  • editiamo xwiki.properties

vi WEB-INF/xwiki.properties
  • aggiorniamo come segue

...
openoffice.serverType=0
...
openoffice.serverPort=8100
...
openoffice.autoStart=true
...
openoffice.homePath=/usr/lib64/libreoffice/
...
  • creiamo il file META-INF/beans.xml

vi META-INF/beans.xml
  • e popoliamolo con le seguenti righe

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                       http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
   version="1.1" bean-discovery-mode="none"> 
</beans>
  • creiamo il file META-INF/jboss-all.xml

vi META-INF/jboss-all.xml
  • e popoliamolo con le seguenti righe

<jboss xmlns="urn:jboss:1.0"> 
    <weld xmlns="urn:jboss:weld:1.0" require-bean-descriptor="true"/> 
</jboss>
  • creiamo il war aggiornato

jar -cf ../wiki.war .

Ora possiamo passare al deploy!

3.5.2. Deploy di Xwiki

Procediamo operando da riga di comando.

NB: è consigliabile usare l'interfaccia grafica come descritto nelle guide di WildFly. Per semplicità descrivo l'operazione da riga di comando.

  • Copiamo il war in WildFly

chown wildfly.wildfly /opt/Tmp/wiki.war
cp -p /opt/Tmp/wiki.war /opt/wildfly/standalone/deployments/
  • WildFly inizia il deploy. L'operazione richiede qualche tempo. Per sapere quando è terminata l'operazione si può consultare i log o il pannello web di WildFly.

Abbiamo terminato il deploy. Passiamo all'inizializzazione.

  • Apriamo un browser internet e puntiamo all'URL http://:8080/wiki

  • Xwiki automaticamente avvia l'inizializzazione e mostra lo stato raggiunto tramite una schermata informativa

  • al termine compare la home di Xwiki vuota.

    NB: se abbiamo provato a deployare in Tomcat o Jetty questo step è diverso. Xwiki avvia automaticamente una procedura assistita con cui automaticamente fa i passi che ora faremo manualmente.

    Autenticandoci con l'utente super-amministratore default (NB: la password è quella impostata precedentemente in xwiki.cfg)

 

 

  • proseguiamo accedendo alla pagina di amministrazione



  • anche questa pagina è vuota. Come indicato dal messaggio scarichiamo il file XAR e facciamo l'upload in Xwiki

  • dopo l'upload dobbiamo cliccare sul file. Xwiki controlla il XAR e quindi possiamo cliccare sul bottone “Import”


Terminato l'import clicchiamo sull'icona di Xwiki per ri-accedere alla home.

L'installazione è terminata.

A questo punto possiamo personalizzare a piacimento il wiki e aggiungere gli addon che ci servono.

4. Conclusione

Xwiki è un potente, completo e sofisticato wiki. La classificazione “enterprise” è autentica a differenza di prodotti che lo usano come brand. Naturalmente se vogliamo attivare e usare una serie di funzioni enterprise (clustering, HA, multi-tenant, ecc...) dobbiamo fare (diverse) altre configurazioni.

Tra i molti componenti aggiuntivi a disposizione indichiamo i seguenti che sono sicuramente interessanti e molto probabilmente fanno anche al vostro caso:

  • Admin Tools Application

  • XWiki Authenticator Trusted LDAP

  • LDAP Admin Application

  • File Manager Application

  • PDF Export Panel Application

  • PDF Macro

  • PDF Template Customization

  • Template selector for PDF export

  • XWiki Macro - PDF Viewer

  • PDF Export Collection Application

  • XWiki Application - Piwik Extension.

Per concludere:

  • si tenga presente che questa guida è didattica. Per una produzione enterprise è opportuna qualche configurazione aggiuntiva

  • non ho ancora potuto testare a fondo l'installazione in WildFly. Mi sembra che ci qualche perfezionamento da fare non documentato nel wiki della community.

5. Webgrafia

http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Installation

http://platform.xwiki.org/xwiki/bin/view/AdminGuide/InstallationWAR

http://platform.xwiki.org/xwiki/bin/view/AdminGuide/InstallationJBoss

http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Performances

http://platform.xwiki.org/xwiki/bin/view/AdminGuide/Performances#HMemory

https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/ReleaseNotesXWiki74

http://extensions.xwiki.org/xwiki/bin/view/Extension/Admin+Tools+Application

https://developer.jboss.org/thread/241526?start=0&tstart=0

http://jira.xwiki.org/browse/XWIKI-10798

http://jira.xwiki.org/browse/XWIKI-7984

http://www.jython.org

Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie vai alla sezione Cookie Policy.